ps3000aApi.h 29 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142
  1. /****************************************************************************
  2. *
  3. * Filename: ps3000aApi.h
  4. * Author: MAS
  5. * Description:
  6. *
  7. * This header defines the interface to driver routines for the
  8. * PicoScope 3000A, B and D Series PC Oscilloscopes.
  9. *
  10. * Copyright � 2010 - 2022 Pico Technology Ltd. All rights reserved.
  11. *
  12. ****************************************************************************/
  13. #ifndef __PS3000AAPI_H__
  14. #define __PS3000AAPI_H__
  15. #include <stdint.h>
  16. #include "PicoCallback.h"
  17. #include "PicoStatus.h"
  18. #include "PicoVersion.h"
  19. #ifdef __cplusplus
  20. #define PREF0 extern "C"
  21. #define TYPE_ENUM
  22. #else
  23. #define PREF0
  24. #define TYPE_ENUM enum
  25. #endif
  26. #ifdef WIN32
  27. #ifdef PREF1
  28. #undef PREF1
  29. #endif
  30. #ifdef PREF2
  31. #undef PREF2
  32. #endif
  33. #ifdef PREF3
  34. #undef PREF3
  35. #endif
  36. //If you are dynamically linking ps3000a.dll into your project #define DYNLINK here
  37. #ifdef DYNLINK
  38. #define PREF1 typedef
  39. #define PREF2
  40. #define PREF3(x) (__stdcall *x)
  41. #else
  42. #define PREF1
  43. #ifdef _USRDLL
  44. #define PREF2 __declspec(dllexport) __stdcall
  45. #else
  46. #define PREF2 __declspec(dllimport) __stdcall
  47. #endif
  48. #define PREF3(x) x
  49. #endif
  50. #else
  51. #ifdef DYNLINK
  52. #define PREF1 typedef
  53. #define PREF2
  54. #define PREF3(x) (*x)
  55. #else
  56. #ifdef _USRDLL
  57. #define PREF1 __attribute__((visibility("default")))
  58. #else
  59. #define PREF1
  60. #endif
  61. #define PREF2
  62. #define PREF3(x) x
  63. #endif
  64. #define __stdcall
  65. #endif
  66. #define PS3000A_MAX_OVERSAMPLE 256
  67. /* Depending on the adc;oversample (collect multiple readings at each time) by up to 256.
  68. * the results are therefore ALWAYS scaled up to 16-bits, even if
  69. * oversampling is not used.
  70. *
  71. * The maximum and minimum values returned are therefore as follows:
  72. */
  73. #define PS3207A_MAX_ETS_CYCLES 500
  74. #define PS3207A_MAX_INTERLEAVE 40
  75. #define PS3206A_MAX_ETS_CYCLES 500
  76. #define PS3206A_MAX_INTERLEAVE 40
  77. #define PS3206MSO_MAX_INTERLEAVE 80
  78. #define PS3205A_MAX_ETS_CYCLES 250
  79. #define PS3205A_MAX_INTERLEAVE 20
  80. #define PS3205MSO_MAX_INTERLEAVE 40
  81. #define PS3204A_MAX_ETS_CYCLES 125
  82. #define PS3204A_MAX_INTERLEAVE 10
  83. #define PS3204MSO_MAX_INTERLEAVE 20
  84. #define PS3000A_EXT_MAX_VALUE 32767
  85. #define PS3000A_EXT_MIN_VALUE -32767
  86. #define PS3000A_MAX_LOGIC_LEVEL 32767
  87. #define PS3000A_MIN_LOGIC_LEVEL -32767
  88. #define MIN_SIG_GEN_FREQ 0.0f
  89. #define MAX_SIG_GEN_FREQ 20000000.0f
  90. #define PS3207B_MAX_SIG_GEN_BUFFER_SIZE 32768
  91. #define PS3206B_MAX_SIG_GEN_BUFFER_SIZE 16384
  92. #define MAX_SIG_GEN_BUFFER_SIZE 8192
  93. #define MIN_SIG_GEN_BUFFER_SIZE 1
  94. #define MIN_DWELL_COUNT 3
  95. #define MAX_SWEEPS_SHOTS ((1 << 30) - 1)
  96. #define MAX_ANALOGUE_OFFSET_50MV_200MV 0.250f
  97. #define MIN_ANALOGUE_OFFSET_50MV_200MV -0.250f
  98. #define MAX_ANALOGUE_OFFSET_500MV_2V 2.500f
  99. #define MIN_ANALOGUE_OFFSET_500MV_2V -2.500f
  100. #define MAX_ANALOGUE_OFFSET_5V_20V 20.f
  101. #define MIN_ANALOGUE_OFFSET_5V_20V -20.f
  102. #define PS3000A_SHOT_SWEEP_TRIGGER_CONTINUOUS_RUN 0xFFFFFFFF
  103. typedef enum enPS3000ABandwidthLimiter
  104. {
  105. PS3000A_BW_FULL,
  106. PS3000A_BW_20MHZ,
  107. } PS3000A_BANDWIDTH_LIMITER;
  108. typedef enum enPS3000AChannelBufferIndex
  109. {
  110. PS3000A_CHANNEL_A_MAX,
  111. PS3000A_CHANNEL_A_MIN,
  112. PS3000A_CHANNEL_B_MAX,
  113. PS3000A_CHANNEL_B_MIN,
  114. PS3000A_CHANNEL_C_MAX,
  115. PS3000A_CHANNEL_C_MIN,
  116. PS3000A_CHANNEL_D_MAX,
  117. PS3000A_CHANNEL_D_MIN,
  118. PS3000A_MAX_CHANNEL_BUFFERS
  119. } PS3000A_CHANNEL_BUFFER_INDEX;
  120. typedef enum enPS3000AChannel
  121. {
  122. PS3000A_CHANNEL_A,
  123. PS3000A_CHANNEL_B,
  124. PS3000A_CHANNEL_C,
  125. PS3000A_CHANNEL_D,
  126. PS3000A_EXTERNAL,
  127. PS3000A_MAX_CHANNELS = PS3000A_EXTERNAL,
  128. PS3000A_TRIGGER_AUX,
  129. PS3000A_MAX_TRIGGER_SOURCES
  130. } PS3000A_CHANNEL;
  131. typedef enum enPS3000ADigitalPort
  132. {
  133. PS3000A_DIGITAL_PORT0 = 0x80, // digital channel 0 - 7
  134. PS3000A_DIGITAL_PORT1, // digital channel 8 - 15
  135. PS3000A_DIGITAL_PORT2, // digital channel 16 - 23
  136. PS3000A_DIGITAL_PORT3, // digital channel 24 - 31
  137. PS3000A_MAX_DIGITAL_PORTS = (PS3000A_DIGITAL_PORT3 - PS3000A_DIGITAL_PORT0) + 1
  138. } PS3000A_DIGITAL_PORT;
  139. typedef enum enPS3000ADigitalChannel
  140. {
  141. PS3000A_DIGITAL_CHANNEL_0,
  142. PS3000A_DIGITAL_CHANNEL_1,
  143. PS3000A_DIGITAL_CHANNEL_2,
  144. PS3000A_DIGITAL_CHANNEL_3,
  145. PS3000A_DIGITAL_CHANNEL_4,
  146. PS3000A_DIGITAL_CHANNEL_5,
  147. PS3000A_DIGITAL_CHANNEL_6,
  148. PS3000A_DIGITAL_CHANNEL_7,
  149. PS3000A_DIGITAL_CHANNEL_8,
  150. PS3000A_DIGITAL_CHANNEL_9,
  151. PS3000A_DIGITAL_CHANNEL_10,
  152. PS3000A_DIGITAL_CHANNEL_11,
  153. PS3000A_DIGITAL_CHANNEL_12,
  154. PS3000A_DIGITAL_CHANNEL_13,
  155. PS3000A_DIGITAL_CHANNEL_14,
  156. PS3000A_DIGITAL_CHANNEL_15,
  157. PS3000A_DIGITAL_CHANNEL_16,
  158. PS3000A_DIGITAL_CHANNEL_17,
  159. PS3000A_DIGITAL_CHANNEL_18,
  160. PS3000A_DIGITAL_CHANNEL_19,
  161. PS3000A_DIGITAL_CHANNEL_20,
  162. PS3000A_DIGITAL_CHANNEL_21,
  163. PS3000A_DIGITAL_CHANNEL_22,
  164. PS3000A_DIGITAL_CHANNEL_23,
  165. PS3000A_DIGITAL_CHANNEL_24,
  166. PS3000A_DIGITAL_CHANNEL_25,
  167. PS3000A_DIGITAL_CHANNEL_26,
  168. PS3000A_DIGITAL_CHANNEL_27,
  169. PS3000A_DIGITAL_CHANNEL_28,
  170. PS3000A_DIGITAL_CHANNEL_29,
  171. PS3000A_DIGITAL_CHANNEL_30,
  172. PS3000A_DIGITAL_CHANNEL_31,
  173. PS3000A_MAX_DIGITAL_CHANNELS
  174. } PS3000A_DIGITAL_CHANNEL;
  175. typedef enum enPS3000ARange
  176. {
  177. PS3000A_10MV,
  178. PS3000A_20MV,
  179. PS3000A_50MV,
  180. PS3000A_100MV,
  181. PS3000A_200MV,
  182. PS3000A_500MV,
  183. PS3000A_1V,
  184. PS3000A_2V,
  185. PS3000A_5V,
  186. PS3000A_10V,
  187. PS3000A_20V,
  188. PS3000A_50V,
  189. PS3000A_MAX_RANGES,
  190. } PS3000A_RANGE;
  191. typedef enum enPS3000ACoupling
  192. {
  193. PS3000A_AC,
  194. PS3000A_DC
  195. } PS3000A_COUPLING;
  196. typedef enum enPS3000AChannelInfo
  197. {
  198. PS3000A_CI_RANGES,
  199. } PS3000A_CHANNEL_INFO;
  200. typedef enum enPS3000AEtsMode
  201. {
  202. PS3000A_ETS_OFF, // ETS disabled
  203. PS3000A_ETS_FAST,
  204. PS3000A_ETS_SLOW,
  205. PS3000A_ETS_MODES_MAX
  206. } PS3000A_ETS_MODE;
  207. typedef enum enPS3000ATimeUnits
  208. {
  209. PS3000A_FS,
  210. PS3000A_PS,
  211. PS3000A_NS,
  212. PS3000A_US,
  213. PS3000A_MS,
  214. PS3000A_S,
  215. PS3000A_MAX_TIME_UNITS,
  216. } PS3000A_TIME_UNITS;
  217. typedef enum enPS3000ASweepType
  218. {
  219. PS3000A_UP,
  220. PS3000A_DOWN,
  221. PS3000A_UPDOWN,
  222. PS3000A_DOWNUP,
  223. PS3000A_MAX_SWEEP_TYPES
  224. } PS3000A_SWEEP_TYPE;
  225. typedef enum enPS3000AWaveType
  226. {
  227. PS3000A_SINE,
  228. PS3000A_SQUARE,
  229. PS3000A_TRIANGLE,
  230. PS3000A_RAMP_UP,
  231. PS3000A_RAMP_DOWN,
  232. PS3000A_SINC,
  233. PS3000A_GAUSSIAN,
  234. PS3000A_HALF_SINE,
  235. PS3000A_DC_VOLTAGE,
  236. PS3000A_MAX_WAVE_TYPES
  237. } PS3000A_WAVE_TYPE;
  238. typedef enum enPS3000AExtraOperations
  239. {
  240. PS3000A_ES_OFF,
  241. PS3000A_WHITENOISE,
  242. PS3000A_PRBS // Pseudo-Random Bit Stream
  243. } PS3000A_EXTRA_OPERATIONS;
  244. #define PS3000A_SINE_MAX_FREQUENCY 1000000.f
  245. #define PS3000A_SQUARE_MAX_FREQUENCY 1000000.f
  246. #define PS3000A_TRIANGLE_MAX_FREQUENCY 1000000.f
  247. #define PS3000A_SINC_MAX_FREQUENCY 1000000.f
  248. #define PS3000A_RAMP_MAX_FREQUENCY 1000000.f
  249. #define PS3000A_HALF_SINE_MAX_FREQUENCY 1000000.f
  250. #define PS3000A_GAUSSIAN_MAX_FREQUENCY 1000000.f
  251. #define PS3000A_PRBS_MAX_FREQUENCY 1000000.f
  252. #define PS3000A_PRBS_MIN_FREQUENCY 0.03f
  253. #define PS3000A_MIN_FREQUENCY 0.03f
  254. typedef enum enPS3000ASigGenTrigType
  255. {
  256. PS3000A_SIGGEN_RISING,
  257. PS3000A_SIGGEN_FALLING,
  258. PS3000A_SIGGEN_GATE_HIGH,
  259. PS3000A_SIGGEN_GATE_LOW
  260. } PS3000A_SIGGEN_TRIG_TYPE;
  261. typedef enum enPS3000ASigGenTrigSource
  262. {
  263. PS3000A_SIGGEN_NONE,
  264. PS3000A_SIGGEN_SCOPE_TRIG,
  265. PS3000A_SIGGEN_AUX_IN,
  266. PS3000A_SIGGEN_EXT_IN,
  267. PS3000A_SIGGEN_SOFT_TRIG
  268. } PS3000A_SIGGEN_TRIG_SOURCE;
  269. typedef enum enPS3000AIndexMode
  270. {
  271. PS3000A_SINGLE,
  272. PS3000A_DUAL,
  273. PS3000A_QUAD,
  274. PS3000A_MAX_INDEX_MODES
  275. } PS3000A_INDEX_MODE;
  276. typedef enum enPS3000A_ThresholdMode
  277. {
  278. PS3000A_LEVEL,
  279. PS3000A_WINDOW
  280. } PS3000A_THRESHOLD_MODE;
  281. typedef enum enPS3000AThresholdDirection
  282. {
  283. PS3000A_ABOVE, //using upper threshold
  284. PS3000A_BELOW, //using upper threshold
  285. PS3000A_RISING, // using upper threshold
  286. PS3000A_FALLING, // using upper threshold
  287. PS3000A_RISING_OR_FALLING, // using both threshold
  288. PS3000A_ABOVE_LOWER, // using lower threshold
  289. PS3000A_BELOW_LOWER, // using lower threshold
  290. PS3000A_RISING_LOWER, // using lower threshold
  291. PS3000A_FALLING_LOWER, // using lower threshold
  292. // Windowing using both thresholds
  293. PS3000A_INSIDE = PS3000A_ABOVE,
  294. PS3000A_OUTSIDE = PS3000A_BELOW,
  295. PS3000A_ENTER = PS3000A_RISING,
  296. PS3000A_EXIT = PS3000A_FALLING,
  297. PS3000A_ENTER_OR_EXIT = PS3000A_RISING_OR_FALLING,
  298. PS3000A_POSITIVE_RUNT = 9,
  299. PS3000A_NEGATIVE_RUNT,
  300. // no trigger set
  301. PS3000A_NONE = PS3000A_RISING
  302. } PS3000A_THRESHOLD_DIRECTION;
  303. typedef enum enPS3000ADigitalDirection
  304. {
  305. PS3000A_DIGITAL_DONT_CARE,
  306. PS3000A_DIGITAL_DIRECTION_LOW,
  307. PS3000A_DIGITAL_DIRECTION_HIGH,
  308. PS3000A_DIGITAL_DIRECTION_RISING,
  309. PS3000A_DIGITAL_DIRECTION_FALLING,
  310. PS3000A_DIGITAL_DIRECTION_RISING_OR_FALLING,
  311. PS3000A_DIGITAL_MAX_DIRECTION
  312. } PS3000A_DIGITAL_DIRECTION;
  313. typedef enum enPS3000ATriggerState
  314. {
  315. PS3000A_CONDITION_DONT_CARE,
  316. PS3000A_CONDITION_TRUE,
  317. PS3000A_CONDITION_FALSE,
  318. PS3000A_CONDITION_MAX
  319. } PS3000A_TRIGGER_STATE;
  320. #pragma pack(push,1)
  321. typedef struct tPS3000ATriggerConditions
  322. {
  323. PS3000A_TRIGGER_STATE channelA;
  324. PS3000A_TRIGGER_STATE channelB;
  325. PS3000A_TRIGGER_STATE channelC;
  326. PS3000A_TRIGGER_STATE channelD;
  327. PS3000A_TRIGGER_STATE external;
  328. PS3000A_TRIGGER_STATE aux;
  329. PS3000A_TRIGGER_STATE pulseWidthQualifier;
  330. } PS3000A_TRIGGER_CONDITIONS;
  331. #pragma pack(pop)
  332. #pragma pack(push,1)
  333. typedef struct tPS3000ATriggerConditionsV2
  334. {
  335. PS3000A_TRIGGER_STATE channelA;
  336. PS3000A_TRIGGER_STATE channelB;
  337. PS3000A_TRIGGER_STATE channelC;
  338. PS3000A_TRIGGER_STATE channelD;
  339. PS3000A_TRIGGER_STATE external;
  340. PS3000A_TRIGGER_STATE aux;
  341. PS3000A_TRIGGER_STATE pulseWidthQualifier;
  342. PS3000A_TRIGGER_STATE digital;
  343. } PS3000A_TRIGGER_CONDITIONS_V2;
  344. #pragma pack(pop)
  345. #pragma pack(push,1)
  346. typedef struct tPS3000APwqConditions
  347. {
  348. PS3000A_TRIGGER_STATE channelA;
  349. PS3000A_TRIGGER_STATE channelB;
  350. PS3000A_TRIGGER_STATE channelC;
  351. PS3000A_TRIGGER_STATE channelD;
  352. PS3000A_TRIGGER_STATE external;
  353. PS3000A_TRIGGER_STATE aux;
  354. } PS3000A_PWQ_CONDITIONS;
  355. #pragma pack(pop)
  356. #pragma pack(push,1)
  357. typedef struct tPS3000APwqConditionsV2
  358. {
  359. PS3000A_TRIGGER_STATE channelA;
  360. PS3000A_TRIGGER_STATE channelB;
  361. PS3000A_TRIGGER_STATE channelC;
  362. PS3000A_TRIGGER_STATE channelD;
  363. PS3000A_TRIGGER_STATE external;
  364. PS3000A_TRIGGER_STATE aux;
  365. PS3000A_TRIGGER_STATE digital;
  366. } PS3000A_PWQ_CONDITIONS_V2;
  367. #pragma pack(pop)
  368. #pragma pack(push,1)
  369. typedef struct tPS3000ADigitalChannelDirections
  370. {
  371. PS3000A_DIGITAL_CHANNEL channel;
  372. PS3000A_DIGITAL_DIRECTION direction;
  373. } PS3000A_DIGITAL_CHANNEL_DIRECTIONS;
  374. #pragma pack(pop)
  375. #pragma pack(push,1)
  376. typedef struct tPS3000ATriggerChannelProperties
  377. {
  378. int16_t thresholdUpper;
  379. uint16_t thresholdUpperHysteresis;
  380. int16_t thresholdLower;
  381. uint16_t thresholdLowerHysteresis;
  382. PS3000A_CHANNEL channel;
  383. PS3000A_THRESHOLD_MODE thresholdMode;
  384. } PS3000A_TRIGGER_CHANNEL_PROPERTIES;
  385. #pragma pack(pop)
  386. #pragma pack(push,1)
  387. typedef struct tPS3000ATriggerInfo
  388. {
  389. PICO_STATUS status;
  390. uint32_t segmentIndex;
  391. uint32_t reserved0;
  392. int64_t triggerTime;
  393. int16_t timeUnits;
  394. int16_t reserved1;
  395. uint64_t timeStampCounter;
  396. } PS3000A_TRIGGER_INFO;
  397. #pragma pack(pop)
  398. #pragma pack(push,1)
  399. typedef struct tPS3000AScalingFactors
  400. {
  401. PS3000A_CHANNEL channelOrPort;
  402. PS3000A_RANGE range;
  403. int16_t offset;
  404. double scalingFactor;
  405. }PS3000A_SCALING_FACTORS_VALUES;
  406. #pragma pack(pop)
  407. typedef enum enPS3000ARatioMode
  408. {
  409. PS3000A_RATIO_MODE_NONE,
  410. PS3000A_RATIO_MODE_AGGREGATE = 1,
  411. PS3000A_RATIO_MODE_DECIMATE = 2,
  412. PS3000A_RATIO_MODE_AVERAGE = 4,
  413. } PS3000A_RATIO_MODE;
  414. typedef enum enPS3000APulseWidthType
  415. {
  416. PS3000A_PW_TYPE_NONE,
  417. PS3000A_PW_TYPE_LESS_THAN,
  418. PS3000A_PW_TYPE_GREATER_THAN,
  419. PS3000A_PW_TYPE_IN_RANGE,
  420. PS3000A_PW_TYPE_OUT_OF_RANGE
  421. } PS3000A_PULSE_WIDTH_TYPE;
  422. typedef enum enPS3000AHoldOffType
  423. {
  424. PS3000A_TIME,
  425. PS3000A_EVENT,
  426. PS3000A_MAX_HOLDOFF_TYPE
  427. } PS3000A_HOLDOFF_TYPE;
  428. typedef void (__stdcall *ps3000aBlockReady)
  429. (
  430. int16_t handle,
  431. PICO_STATUS status,
  432. void *pParameter
  433. );
  434. typedef void (__stdcall *ps3000aStreamingReady)
  435. (
  436. int16_t handle,
  437. int32_t noOfSamples,
  438. uint32_t startIndex,
  439. int16_t overflow,
  440. uint32_t triggerAt,
  441. int16_t triggered,
  442. int16_t autoStop,
  443. void *pParameter
  444. );
  445. typedef void (__stdcall *ps3000aDataReady)
  446. (
  447. int16_t handle,
  448. PICO_STATUS status,
  449. uint32_t noOfSamples,
  450. int16_t overflow,
  451. void *pParameter
  452. );
  453. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aOpenUnit)
  454. (
  455. int16_t *handle,
  456. int8_t *serial
  457. );
  458. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aOpenUnitAsync)
  459. (
  460. int16_t *status,
  461. int8_t *serial
  462. );
  463. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aOpenUnitProgress)
  464. (
  465. int16_t *handle,
  466. int16_t *progressPercent,
  467. int16_t *complete
  468. );
  469. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetUnitInfo)
  470. (
  471. int16_t handle,
  472. int8_t *string,
  473. int16_t stringLength,
  474. int16_t *requiredSize,
  475. PICO_INFO info
  476. );
  477. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aFlashLed)
  478. (
  479. int16_t handle,
  480. int16_t start
  481. );
  482. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aCloseUnit)
  483. (
  484. int16_t handle
  485. );
  486. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aMemorySegments)
  487. (
  488. int16_t handle,
  489. uint32_t nSegments,
  490. int32_t *nMaxSamples
  491. );
  492. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetChannel)
  493. (
  494. int16_t handle,
  495. PS3000A_CHANNEL channel,
  496. int16_t enabled,
  497. PS3000A_COUPLING type,
  498. PS3000A_RANGE range,
  499. float analogOffset
  500. );
  501. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetDigitalPort)
  502. (
  503. int16_t handle,
  504. PS3000A_DIGITAL_PORT port,
  505. int16_t enabled,
  506. int16_t logicLevel
  507. );
  508. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetBandwidthFilter)
  509. (
  510. int16_t handle,
  511. PS3000A_CHANNEL channel,
  512. PS3000A_BANDWIDTH_LIMITER bandwidth
  513. );
  514. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetNoOfCaptures)
  515. (
  516. int16_t handle,
  517. uint32_t nCaptures
  518. );
  519. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetTimebase)
  520. (
  521. int16_t handle,
  522. uint32_t timebase,
  523. int32_t noSamples,
  524. int32_t *timeIntervalNanoseconds,
  525. int16_t oversample,
  526. int32_t *maxSamples,
  527. uint32_t segmentIndex
  528. );
  529. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetTimebase2)
  530. (
  531. int16_t handle,
  532. uint32_t timebase,
  533. int32_t noSamples,
  534. float *timeIntervalNanoseconds,
  535. int16_t oversample,
  536. int32_t *maxSamples,
  537. uint32_t segmentIndex
  538. );
  539. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetSigGenArbitrary)
  540. (
  541. int16_t handle,
  542. int32_t offsetVoltage,
  543. uint32_t pkToPk,
  544. uint32_t startDeltaPhase,
  545. uint32_t stopDeltaPhase,
  546. uint32_t deltaPhaseIncrement,
  547. uint32_t dwellCount,
  548. int16_t *arbitraryWaveform,
  549. int32_t arbitraryWaveformSize,
  550. PS3000A_SWEEP_TYPE sweepType,
  551. PS3000A_EXTRA_OPERATIONS operation,
  552. PS3000A_INDEX_MODE indexMode,
  553. uint32_t shots,
  554. uint32_t sweeps,
  555. PS3000A_SIGGEN_TRIG_TYPE triggerType,
  556. PS3000A_SIGGEN_TRIG_SOURCE triggerSource,
  557. int16_t extInThreshold
  558. );
  559. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps3000aSetSigGenBuiltIn)
  560. (
  561. int16_t handle,
  562. int32_t offsetVoltage,
  563. uint32_t pkToPk,
  564. int16_t waveType,
  565. float startFrequency,
  566. float stopFrequency,
  567. float increment,
  568. float dwellTime,
  569. PS3000A_SWEEP_TYPE sweepType,
  570. PS3000A_EXTRA_OPERATIONS operation,
  571. uint32_t shots,
  572. uint32_t sweeps,
  573. PS3000A_SIGGEN_TRIG_TYPE triggerType,
  574. PS3000A_SIGGEN_TRIG_SOURCE triggerSource,
  575. int16_t extInThreshold
  576. );
  577. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps3000aSetSigGenBuiltInV2)
  578. (
  579. int16_t handle,
  580. int32_t offsetVoltage,
  581. uint32_t pkToPk,
  582. int16_t waveType,
  583. double startFrequency,
  584. double stopFrequency,
  585. double increment,
  586. double dwellTime,
  587. PS3000A_SWEEP_TYPE sweepType,
  588. PS3000A_EXTRA_OPERATIONS operation,
  589. uint32_t shots,
  590. uint32_t sweeps,
  591. PS3000A_SIGGEN_TRIG_TYPE triggerType,
  592. PS3000A_SIGGEN_TRIG_SOURCE triggerSource,
  593. int16_t extInThreshold
  594. );
  595. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetSigGenPropertiesArbitrary)
  596. (
  597. int16_t handle,
  598. uint32_t startDeltaPhase,
  599. uint32_t stopDeltaPhase,
  600. uint32_t deltaPhaseIncrement,
  601. uint32_t dwellCount,
  602. PS3000A_SWEEP_TYPE sweepType,
  603. uint32_t shots,
  604. uint32_t sweeps,
  605. PS3000A_SIGGEN_TRIG_TYPE triggerType,
  606. PS3000A_SIGGEN_TRIG_SOURCE triggerSource,
  607. int16_t extInThreshold
  608. );
  609. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps3000aSetSigGenPropertiesBuiltIn)
  610. (
  611. int16_t handle,
  612. double startFrequency,
  613. double stopFrequency,
  614. double increment,
  615. double dwellTime,
  616. PS3000A_SWEEP_TYPE sweepType,
  617. uint32_t shots,
  618. uint32_t sweeps,
  619. PS3000A_SIGGEN_TRIG_TYPE triggerType,
  620. PS3000A_SIGGEN_TRIG_SOURCE triggerSource,
  621. int16_t extInThreshold
  622. );
  623. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps3000aSigGenFrequencyToPhase)
  624. (
  625. int16_t handle,
  626. double frequency,
  627. PS3000A_INDEX_MODE indexMode,
  628. uint32_t bufferLength,
  629. uint32_t * phase
  630. );
  631. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps3000aSigGenArbitraryMinMaxValues)
  632. (
  633. int16_t handle,
  634. int16_t * minArbitraryWaveformValue,
  635. int16_t * maxArbitraryWaveformValue,
  636. uint32_t * minArbitraryWaveformSize,
  637. uint32_t * maxArbitraryWaveformSize
  638. );
  639. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps3000aGetMaxEtsValues)
  640. (
  641. int16_t handle,
  642. int16_t * etsCycles,
  643. int16_t * etsInterleave
  644. );
  645. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSigGenSoftwareControl)
  646. (
  647. int16_t handle,
  648. int16_t state
  649. );
  650. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetEts)
  651. (
  652. int16_t handle,
  653. PS3000A_ETS_MODE mode,
  654. int16_t etsCycles,
  655. int16_t etsInterleave,
  656. int32_t *sampleTimePicoseconds
  657. );
  658. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetSimpleTrigger)
  659. (
  660. int16_t handle,
  661. int16_t enable,
  662. PS3000A_CHANNEL source,
  663. int16_t threshold,
  664. PS3000A_THRESHOLD_DIRECTION direction,
  665. uint32_t delay,
  666. int16_t autoTrigger_ms
  667. );
  668. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetTriggerDigitalPortProperties)
  669. (
  670. int16_t handle,
  671. PS3000A_DIGITAL_CHANNEL_DIRECTIONS *directions,
  672. int16_t nDirections
  673. );
  674. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetPulseWidthDigitalPortProperties)
  675. (
  676. int16_t handle,
  677. PS3000A_DIGITAL_CHANNEL_DIRECTIONS *directions,
  678. int16_t nDirections
  679. );
  680. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetTriggerChannelProperties)
  681. (
  682. int16_t handle,
  683. PS3000A_TRIGGER_CHANNEL_PROPERTIES *channelProperties,
  684. int16_t nChannelProperties,
  685. int16_t auxOutputEnable,
  686. int32_t autoTriggerMilliseconds
  687. );
  688. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetTriggerChannelConditions)
  689. (
  690. int16_t handle,
  691. PS3000A_TRIGGER_CONDITIONS *conditions,
  692. int16_t nConditions
  693. );
  694. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetTriggerChannelConditionsV2)
  695. (
  696. int16_t handle,
  697. PS3000A_TRIGGER_CONDITIONS_V2 *conditions,
  698. int16_t nConditions
  699. );
  700. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetTriggerChannelDirections)
  701. (
  702. int16_t handle,
  703. PS3000A_THRESHOLD_DIRECTION channelA,
  704. PS3000A_THRESHOLD_DIRECTION channelB,
  705. PS3000A_THRESHOLD_DIRECTION channelC,
  706. PS3000A_THRESHOLD_DIRECTION channelD,
  707. PS3000A_THRESHOLD_DIRECTION ext,
  708. PS3000A_THRESHOLD_DIRECTION aux
  709. );
  710. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetTriggerDelay)
  711. (
  712. int16_t handle,
  713. uint32_t delay
  714. );
  715. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetPulseWidthQualifier)
  716. (
  717. int16_t handle,
  718. PS3000A_PWQ_CONDITIONS *conditions,
  719. int16_t nConditions,
  720. PS3000A_THRESHOLD_DIRECTION direction,
  721. uint32_t lower,
  722. uint32_t upper,
  723. PS3000A_PULSE_WIDTH_TYPE type
  724. );
  725. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetPulseWidthQualifierV2)
  726. (
  727. int16_t handle,
  728. PS3000A_PWQ_CONDITIONS_V2 *conditions,
  729. int16_t nConditions,
  730. PS3000A_THRESHOLD_DIRECTION direction,
  731. uint32_t lower,
  732. uint32_t upper,
  733. PS3000A_PULSE_WIDTH_TYPE type
  734. );
  735. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aIsTriggerOrPulseWidthQualifierEnabled)
  736. (
  737. int16_t handle,
  738. int16_t *triggerEnabled,
  739. int16_t *pulseWidthQualifierEnabled
  740. );
  741. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetTriggerTimeOffset)
  742. (
  743. int16_t handle,
  744. uint32_t *timeUpper,
  745. uint32_t *timeLower,
  746. PS3000A_TIME_UNITS *timeUnits,
  747. uint32_t segmentIndex
  748. );
  749. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetTriggerTimeOffset64)
  750. (
  751. int16_t handle,
  752. int64_t *time,
  753. PS3000A_TIME_UNITS *timeUnits,
  754. uint32_t segmentIndex
  755. );
  756. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetValuesTriggerTimeOffsetBulk)
  757. (
  758. int16_t handle,
  759. uint32_t *timesUpper,
  760. uint32_t *timesLower,
  761. PS3000A_TIME_UNITS *timeUnits,
  762. uint32_t fromSegmentIndex,
  763. uint32_t toSegmentIndex
  764. );
  765. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetValuesTriggerTimeOffsetBulk64)
  766. (
  767. int16_t handle,
  768. int64_t *times,
  769. PS3000A_TIME_UNITS *timeUnits,
  770. uint32_t fromSegmentIndex,
  771. uint32_t toSegmentIndex
  772. );
  773. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetNoOfCaptures)
  774. (
  775. int16_t handle,
  776. uint32_t *nCaptures
  777. );
  778. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetNoOfProcessedCaptures)
  779. (
  780. int16_t handle,
  781. uint32_t *nProcessedCaptures
  782. );
  783. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetDataBuffer)
  784. (
  785. int16_t handle,
  786. PS3000A_CHANNEL channelOrPort,
  787. int16_t *buffer,
  788. int32_t bufferLth,
  789. uint32_t segmentIndex,
  790. PS3000A_RATIO_MODE mode
  791. );
  792. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetDataBuffers)
  793. (
  794. int16_t handle,
  795. PS3000A_CHANNEL channelOrPort,
  796. int16_t *bufferMax,
  797. int16_t *bufferMin,
  798. int32_t bufferLth,
  799. uint32_t segmentIndex,
  800. PS3000A_RATIO_MODE mode
  801. );
  802. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps3000aSetUnscaledDataBuffers)
  803. (
  804. int16_t handle,
  805. PS3000A_CHANNEL channelOrPort,
  806. int8_t *bufferMax,
  807. int8_t *bufferMin,
  808. int32_t bufferLth,
  809. uint32_t segmentIndex,
  810. PS3000A_RATIO_MODE mode
  811. );
  812. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetEtsTimeBuffer)
  813. (
  814. int16_t handle,
  815. int64_t *buffer,
  816. int32_t bufferLth
  817. );
  818. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aSetEtsTimeBuffers)
  819. (
  820. int16_t handle,
  821. uint32_t *timeUpper,
  822. uint32_t *timeLower,
  823. int32_t bufferLth
  824. );
  825. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aIsReady)
  826. (
  827. int16_t handle,
  828. int16_t *ready
  829. );
  830. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aRunBlock)
  831. (
  832. int16_t handle,
  833. int32_t noOfPreTriggerSamples,
  834. int32_t noOfPostTriggerSamples,
  835. uint32_t timebase,
  836. int16_t oversample,
  837. int32_t *timeIndisposedMs,
  838. uint32_t segmentIndex,
  839. ps3000aBlockReady lpReady,
  840. void *pParameter
  841. );
  842. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aRunStreaming)
  843. (
  844. int16_t handle,
  845. uint32_t *sampleInterval,
  846. PS3000A_TIME_UNITS sampleIntervalTimeUnits,
  847. uint32_t maxPreTriggerSamples,
  848. uint32_t maxPostPreTriggerSamples,
  849. int16_t autoStop,
  850. uint32_t downSampleRatio,
  851. PS3000A_RATIO_MODE downSampleRatioMode,
  852. uint32_t overviewBufferSize
  853. );
  854. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetStreamingLatestValues)
  855. (
  856. int16_t handle,
  857. ps3000aStreamingReady lpPs3000aReady,
  858. void *pParameter
  859. );
  860. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aNoOfStreamingValues)
  861. (
  862. int16_t handle,
  863. uint32_t *noOfValues
  864. );
  865. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetMaxDownSampleRatio)
  866. (
  867. int16_t handle,
  868. uint32_t noOfUnaggreatedSamples,
  869. uint32_t *maxDownSampleRatio,
  870. PS3000A_RATIO_MODE downSampleRatioMode,
  871. uint32_t segmentIndex
  872. );
  873. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetValues)
  874. (
  875. int16_t handle,
  876. uint32_t startIndex,
  877. uint32_t *noOfSamples,
  878. uint32_t downSampleRatio,
  879. PS3000A_RATIO_MODE downSampleRatioMode,
  880. uint32_t segmentIndex,
  881. int16_t *overflow
  882. );
  883. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetValuesBulk)
  884. (
  885. int16_t handle,
  886. uint32_t *noOfSamples,
  887. uint32_t fromSegmentIndex,
  888. uint32_t toSegmentIndex,
  889. uint32_t downSampleRatio,
  890. PS3000A_RATIO_MODE downSampleRatioMode,
  891. int16_t *overflow
  892. );
  893. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetValuesAsync)
  894. (
  895. int16_t handle,
  896. uint32_t startIndex,
  897. uint32_t noOfSamples,
  898. uint32_t downSampleRatio,
  899. PS3000A_RATIO_MODE downSampleRatioMode,
  900. uint32_t segmentIndex,
  901. void *lpDataReady,
  902. void *pParameter
  903. );
  904. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetValuesOverlapped)
  905. (
  906. int16_t handle,
  907. uint32_t startIndex,
  908. uint32_t *noOfSamples,
  909. uint32_t downSampleRatio,
  910. PS3000A_RATIO_MODE downSampleRatioMode,
  911. uint32_t segmentIndex,
  912. int16_t *overflow
  913. );
  914. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetValuesOverlappedBulk)
  915. (
  916. int16_t handle,
  917. uint32_t startIndex,
  918. uint32_t *noOfSamples,
  919. uint32_t downSampleRatio,
  920. PS3000A_RATIO_MODE downSampleRatioMode,
  921. uint32_t fromSegmentIndex,
  922. uint32_t toSegmentIndex,
  923. int16_t *overflow
  924. );
  925. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetTriggerInfoBulk)
  926. (
  927. int16_t handle,
  928. PS3000A_TRIGGER_INFO * triggerInfo,
  929. uint32_t fromSegmentIndex,
  930. uint32_t toSegmentIndex
  931. );
  932. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aStop)
  933. (
  934. int16_t handle
  935. );
  936. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aHoldOff)
  937. (
  938. int16_t handle,
  939. uint64_t holdoff,
  940. PS3000A_HOLDOFF_TYPE type
  941. );
  942. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetChannelInformation)
  943. (
  944. int16_t handle,
  945. PS3000A_CHANNEL_INFO info,
  946. int32_t probe,
  947. int32_t *ranges,
  948. int32_t *length,
  949. int32_t channels
  950. );
  951. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aEnumerateUnits)
  952. (
  953. int16_t *count,
  954. int8_t *serials,
  955. int16_t *serialLth
  956. );
  957. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aPingUnit)
  958. (
  959. int16_t handle
  960. );
  961. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aMaximumValue)
  962. (
  963. int16_t handle,
  964. int16_t *value
  965. );
  966. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aMinimumValue)
  967. (
  968. int16_t handle,
  969. int16_t *value
  970. );
  971. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetAnalogueOffset)
  972. (
  973. int16_t handle,
  974. PS3000A_RANGE range,
  975. PS3000A_COUPLING coupling,
  976. float *maximumVoltage,
  977. float *minimumVoltage
  978. );
  979. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aGetMaxSegments)
  980. (
  981. int16_t handle,
  982. uint32_t *maxSegments
  983. );
  984. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aChangePowerSource)
  985. (
  986. int16_t handle,
  987. PICO_STATUS powerState
  988. );
  989. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps3000aCurrentPowerSource)
  990. (
  991. int16_t handle
  992. );
  993. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps3000aQueryOutputEdgeDetect)
  994. (
  995. int16_t handle,
  996. int16_t * state
  997. );
  998. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps3000aSetOutputEdgeDetect)
  999. (
  1000. int16_t handle,
  1001. int16_t state
  1002. );
  1003. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps3000aGetScalingValues)
  1004. (
  1005. int16_t handle,
  1006. PS3000A_SCALING_FACTORS_VALUES *scalingValues,
  1007. int16_t nChannels
  1008. );
  1009. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps3000aCheckForUpdate)(int16_t handle,
  1010. PICO_FIRMWARE_INFO* firmwareInfos,
  1011. int16_t* nFirmwareInfos,
  1012. uint16_t* updatesRequired);
  1013. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps3000aStartFirmwareUpdate)(int16_t handle, PicoUpdateFirmwareProgress progress);
  1014. #endif