PicoScope 7 Software
Available on Windows, Mac and Linux
Code: Select all
void collect_block_triggered (void)
{
unsigned long nSamples = 1000;
short nChannels = 12;
unsigned long nSamplesPerChannel = 1000;
unsigned long nSamplesCollected;
usForBlock = 100000;
short channels [12];
channels[0] = 1;//PL1000_CHANNEL_1;
channels[1] = 2;//PL1000_CHANNEL_2;
channels[2] = 3;//PL1000_CHANNEL_3;
channels[3] = 4;//PL1000_CHANNEL_4;
channels[4] = 5;//PL1000_CHANNEL_5;
channels[5] = 6;//PL1000_CHANNEL_6;
channels[6] = 7;//PL1000_CHANNEL_7;
channels[7] = 8;//PL1000_CHANNEL_8;
channels[8] = 9;//PL1000_CHANNEL_9;
channels[9] = 10;//PL1000_CHANNEL_10;
channels[10] = 11;//PL1000_CHANNEL_11;
channels[11] = 12;//PL1000_CHANNEL_12;
unsigned int i;
unsigned short *overflow = 0;
unsigned long triggerIndex = 0;
//Set the trigger
int triggerLevel = mv_to_adc(200);
status = pl1000SetTrigger(g_handle, 1, 0, 0, PL1000_CHANNEL_1, 0, triggerLevel , 10, 0); // rising
//set sampling rate and channels
status = pl1000SetInterval(g_handle, &usForBlock, nSamples , channels, nChannels);
//Run
status = pl1000Run(g_handle, nSamples, BM_SINGLE);
//Wait until unit is ready
isReady = 0;
while(isReady == 0 && (!_kbhit ()))
{
status = pl1000Ready(g_handle, &isReady);
}
nSamplesCollected = nSamplesPerChannel;
status = pl1000GetValues(g_handle, samples, &nSamplesCollected, overflow, &triggerIndex);
status = pl1000Stop(g_handle);
int n = 0;
for(i = 0; i < nSamplesPerChannel * nChannels; i ++, n ++)
{
chSamples[0][n] = adc_to_mv(samples[i]/5);
if(nChannels >= 2) {i ++; chSamples[1][n] = adc_to_mv(samples[i]/5); }
if(nChannels >= 3) {i ++; chSamples[2][n] = adc_to_mv(samples[i]/5); }
if(nChannels >= 4) {i ++; chSamples[3][n] = adc_to_mv(samples[i]/5); }
if(nChannels >= 5) {i ++; chSamples[4][n] = adc_to_mv(samples[i]/5); }
if(nChannels >= 6) {i ++; chSamples[5][n] = adc_to_mv(samples[i]/5); }
if(nChannels >= 7) {i ++; chSamples[6][n] = adc_to_mv(samples[i]/5); }
if(nChannels >= 8) {i ++; chSamples[7][n] = adc_to_mv(samples[i]/5); }
if(nChannels >= 9) {i ++; chSamples[8][n] = adc_to_mv(samples[i]/5); }
if(nChannels >= 10) {i ++; chSamples[9][n] = adc_to_mv(samples[i]/5); }
if(nChannels >= 11) {i ++; chSamples[10][n] = adc_to_mv(samples[i]/5); }
if(nChannels >= 12) {i ++; chSamples[11][n] = adc_to_mv(samples[i]/5); }
if(nChannels >= 13) {i ++; chSamples[12][n] = adc_to_mv(samples[i]/5); }
if(nChannels >= 14) {i ++; chSamples[13][n] = adc_to_mv(samples[i]/5); }
if(nChannels >= 15) {i ++; chSamples[14][n] = adc_to_mv(samples[i]/5); }
if(nChannels >= 16) {i ++; chSamples[15][n] = adc_to_mv(samples[i]/5); }
}
}
Code: Select all
while(isReady == 0 && (!_kbhit ()))
{
Sleep(20);
status = pl1000Ready(g_handle, &isReady);
}