Test and Measurement Forum

Oscilloscope buffers

Post any questions you may have about our current range of oscilloscopes

Oscilloscope buffers

Postby ARC » Tue Apr 23, 2013 10:16 am

Hello,

I want to record 2 signals sometimes the same and sometimes different on channel A and B. i have been trying to figure out how to print the buffer values into separate files. Im always setting the channel to sample every 10us with no aggregation, in ac mode and channel range is 500mv. Which is all ok for the signals I'm measuring.
Am i right in thinking that buffers[j][i] j is the port (0 or 1 in my case with 2206) and i is the position in the buffer?
because as a test i have only channel A connected and when i retrieve data from the buffers like this:
Code: Select all
for (i = g_startIndex; i < (long)(g_startIndex + g_sampleCount); i++)
{
   if(afile != NULL)
   {
      for (j = 0; j < unit->channelCount; j++)
      {
         if (unit->channelSettings[j].enabled)
         {
            if (channelbtrig == 1)//channel A&B
            {
               if (j == 0)
               {
                  int data = adc_to_mv(buffers[j][i], unit->channelSettings[PS2000A_CHANNEL_A+j].range, unit);//channel A
                  fprintf(afile, "%d\n", buffers[j][i]);
               }

               else if (j == 1)
               {
                  int data = adc_to_mv(buffers[j][i], unit->channelSettings[PS2000A_CHANNEL_A+j].range, unit);//channel B
                  fprintf(bfile, "%d\n", buffers[j][i]);
               }            
            }
            else
            {
               int data = adc_to_mv(buffers[j][i], unit->channelSettings[PS2000A_CHANNEL_A+j].range, unit);//Channel A
               fprintf(afile, "%d\n", data);         
            }
         }
         else
         {
                      return;
         }
         if (g_manualstop == 1)
         {
            goto endwhile;
         }
      }
   else
   {
                return(status);
   }
}

I get the same in both afile and bfile (just different named txt files). but obviously there is nothing connected to channel b so im expecting a file of 0's.
Is this how it works?

The above code is from StreamDataHandler function at line 771. this code is a modified version of the PicoScope SDK 10_4_1_6

I have attached my code.

Thanks for the help :)
Attachments
PS2000Acon.c
my .dll program
(64.28 KiB) Downloaded 71 times
ARC
Newbie
 
Posts: 0
Joined: Wed Aug 08, 2012 8:38 am

Re: Oscilloscope buffers

Postby Martyn » Tue Apr 23, 2013 12:57 pm

Check the buffer creation
Code: Select all
         for (i = 0; i < unit->channelCount; i++)
         {
            buffers[i * 2] = (short*)malloc(sampleCount * sizeof(short));
            buffers[i * 2 + 1] = (short*)malloc(sampleCount * sizeof(short));
            status = ps2000aSetDataBuffers(unit->handle, (short)i, buffers[i * 2], buffers[i * 2 + 1], sampleCount, 0, PS2000A_RATIO_MODE_NONE);
            if (status != 0) return status;
         }

It is setup for aggregation, even though you are not using it, such that
Channel A for buffers[0] and buffers[1]
Channel B for buffers[2] and buffers[3]
Martyn
Technical Specialist
Martyn
Site Admin
Site Admin
 
Posts: 2344
Joined: Fri Jun 10, 2011 8:15 am
Location: St. Neots

Re: Oscilloscope buffers

Postby ARC » Wed Apr 24, 2013 3:24 pm

Thank you that all makes sense now.

Thanks for the help :)
ARC
Newbie
 
Posts: 0
Joined: Wed Aug 08, 2012 8:38 am


Return to USB PC Oscilloscopes

Who is online

Users browsing this forum: No registered users and 0 guests