PicoScope 7 Software
Available on Windows, Mac and Linux
Code: Select all
...
status = ps6000OpenUnit(&(unit.handle), NULL);
...
CollectBlockTriggered(&unit);
....
void CollectBlockTriggered(UNIT *unit)
{
short triggerVoltage = mv_to_adc(500, unit->channelSettings[PS6000_CHANNEL_A].range);
short triggerVoltageHys = mv_to_adc(0, unit->channelSettings[PS6000_CHANNEL_A].range);
struct tPS6000TriggerChannelProperties sourceDetails = { triggerVoltage,
triggerVoltageHys,
triggerVoltage,
triggerVoltageHys,
(PS6000_CHANNEL)(PS6000_CHANNEL_A),
PS6000_LEVEL};
struct tPS6000TriggerConditions conditions = { PS6000_CONDITION_TRUE,
PS6000_CONDITION_DONT_CARE,
PS6000_CONDITION_DONT_CARE,
PS6000_CONDITION_DONT_CARE,
PS6000_CONDITION_DONT_CARE,
PS6000_CONDITION_DONT_CARE,
PS6000_CONDITION_DONT_CARE};
struct tPwq pulseWidth;
struct tTriggerDirections directions = { PS6000_RISING,
PS6000_NONE,
PS6000_NONE,
PS6000_NONE,
PS6000_NONE,
PS6000_NONE };
memset(&pulseWidth, 0, sizeof(struct tPwq));
//SetDefaults(unit);
SetTrigger(unit->handle, &sourceDetails, 1, &conditions, 1, &directions, &pulseWidth, 0, 0, 0);
BlockDataHandler(unit, "Ten readings after trigger\n", 0);
}
void BlockDataHandler(UNIT * unit, char * text, int offset)
{
int i = 0, j;
long timeInterval = 1;
long sampleCount= BUFFER_SIZE;
FILE * fp=NULL;
unsigned long maxSamples;
short * buffers[PS6000_MAX_CHANNEL_BUFFERS];
long timeIndisposed;
PICO_STATUS status;
buffers[0] = (short*)malloc(sampleCount * sizeof(short));
buffers[1] = (short*)malloc(sampleCount * sizeof(short));
status = ps6000SetDataBuffers(unit->handle, (short)0, buffers[0], buffers[1], sampleCount, PS6000_RATIO_MODE_NONE);
printf("BlockDataHandler:ps6000SetDataBuffers(channel %d) ------ %d \n", i, status);
while (ps6000GetTimebase(unit->handle, timebase, sampleCount, &timeInterval, oversample, &maxSamples, 0))
{
timebase++;
}
/* Start it collecting, then wait for completion*/
if((status = ps6000RunBlock(unit->handle, 0, sampleCount, timebase, oversample, &timeIndisposed, 0, CallBackBlock, NULL)) != PICO_OK)
status = ps6000GetValues(unit->handle, 0, (unsigned long*) &sampleCount, 1, PS6000_RATIO_MODE_NONE, 0, NULL);
printf("BlockDataHandler:ps6000GetValues ------ %i \n", status);
....
Code: Select all
PICO_OK
PICO_INVALID_HANDLE
PICO_NO_SAMPLES_AVAILABLE
PICO_DEVICE_SAMPLING
PICO_NULL_PARAMETER
PICO_SEGMENT_OUT_OF_RANGE
PICO_INVALID_PARAMETER
PICO_TOO_MANY_SAMPLES
PICO_DATA_NOT_AVAILABLE
PICO_STARTINDEX_INVALID
PICO_INVALID_SAMPLERATIO
PICO_INVALID_CALL
PICO_NOT_RESPONDING
PICO_MEMORY
PICO_RATIO_MODE_NOT_SUPPORTED
PICO_DRIVER_FUNCTION
Code: Select all
0 => 200 ps
1 => 400 ps
2 => 800 ps
3 => 1.6 ns
4 => 3.2 ns
5 => 6.4 ns
...
232-1 => ~ 6.87 s