PicoScope 7 Software
Available on Windows, Mac and Linux
Code: Select all
int32_t VC_main(void)
{
int8_t ch;
int32_t i;
PICO_STATUS status;
UNIT_MODEL unit;
struct tPwq pulseWidth;
struct tTriggerDirections directions;
printf("PicoScope 4000 Series (ps4000) Driver Example Program\n");
printf("\n\nOpening the device...\n");
status = ps4000OpenUnit(&(unit.handle));
printf("Handle: %d\n", unit.handle);
if (status != PICO_OK && status != PICO_EEPROM_CORRUPT)
{
printf("Unable to open device\n");
printf("Error code : %d\n", (int32_t)status);
while (!_kbhit());
exit(99); // exit program - nothing after this executes
}
printf("Device opened successfully, cycle %d\n\n", ++cycles);
// setup devices
get_info(&unit);
timebase = 1;
for (i = 0; i < MAX_CHANNELS; i++)
{
unit.channelSettings[i].enabled = TRUE;
unit.channelSettings[i].DCcoupled = TRUE;
unit.channelSettings[i].range = PS4000_5V;
}
memset(&directions, 0, sizeof(struct tTriggerDirections));
memset(&pulseWidth, 0, sizeof(struct tPwq));
SetDefaults(&unit);
/* Trigger disabled */
SetTrigger(unit.handle, NULL, 0, NULL, 0, &directions, &pulseWidth, 0, 0, 0);
ch = ' ';
while (ch != 'X')
{
DisplaySettings(&unit);
printf("\n");
printf("B - Immediate block V - Set voltages\n");
printf("T - Triggered block I - Set timebase\n");
printf("R - Immediate rapid block with aggregation A - ADC counts/mV\n");
printf("N - Rapid block without aggregation\n");
printf("Q - Collect a block using ETS\n");
printf("S - Immediate streaming\n");
printf("W - Triggered streaming\n");
printf("G - Signal generator\n");
printf(" X - Exit\n");
printf("Operation:");
ch = toupper(_getch());
printf("\n\n");
switch (ch)
{
case 'B':
CollectBlockImmediate(&unit);
break;
case 'R':
CollectRapidBlockImmediate(&unit);
break;
case 'N':
CollectRapidBlock_No_Agg(&unit);
break;
case 'T':
CollectBlockTriggered(&unit);
break;
case 'S':
CollectStreamingImmediate(&unit);
break;
case 'W':
CollectStreamingTriggered(&unit);
break;
case 'Q':
if (unit.ETS == FALSE)
{
printf("This model does not have ETS\n\n");
break;
}
CollectBlockEts(&unit);
break;
case 'G':
if (unit.signalGenerator == FALSE)
{
printf("This model does not have a signal generator\n\n");
break;
}
SetSignalGenerator(unit);
break;
case 'V':
set_voltages(&unit);
break;
case 'I':
SetTimebase(unit);
break;
case 'A':
scaleVoltages = !scaleVoltages;
break;
case 'X':
break;
default:
printf("Invalid operation\n");
break;
}
}
ps4000CloseUnit(unit.handle);
return 1;
}