📄 tktds754.c
字号:
/***************************************************************************** * Copyright 1998 National Instruments Corporation. All Rights Reserved. * *****************************************************************************//***************************************************************************** * TKTDS754 4-CH Digitizing Oscilloscope Instrument Driver * LabWindows/CVI 5.0 Instrument Driver * Original Release: 3/17/98 * By: SF, National Instruments * PH. 1-512-795-8248 Fax 1-512-794-5678 * * Modification History: * * 3/17/98 - Instrument Driver Created. * *****************************************************************************/#include <string.h>#include <stdio.h> #include <formatio.h>#include <stdlib.h>#include <math.h>#include "tktds754.h"/***************************************************************************** *--------------------- Hidden Attribute Declarations -----------------------* *****************************************************************************/#define TKTDS754_ATTR_OPC_TIMEOUT (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 1L) /* ViInt32 */#define TKTDS754_ATTR_TRIGGER_SOURCE_SW_COPY (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 2L) /* ViString */#define TKTDS754_ATTR_HORZ_SEC_PER_DIV (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 3L) /* ViReal64 */ #define TKTDS754_ATTR_NUM_EN_INPUT_CHANS (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 4L) /* ViInt32 */#define TKTDS754_ATTR_MAX_NUM_EN_INPUT_CHANS (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 5L) /* ViInt32 */#define TKTDS754_ATTR_NUM_EN_REF_CHANS (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 6L) /* ViInt32 */#define TKTDS754_ATTR_MAX_NUM_EN_REF_CHANS (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 7L) /* ViInt32 */#define TKTDS754_ATTR_NUM_EN_MATH_CHANS (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 8L) /* ViInt32 */#define TKTDS754_ATTR_LOGIC_LEVEL (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 9L) /* ViInt32 Channel-Based */#define TKTDS754_ATTR_LOGIC_THRESHOLD (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 10L) /* ViReal64 Channel-Based */#define TKTDS754_ATTR_LOGIC_FUNCTION (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 11L) /* ViInt32 */#define TKTDS754_ATTR_INPUT_DATA_SOURCE (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 12L) /* ViString */#define TKTDS754_ATTR_ACQUISITION_STOP_AFTER (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 15L) /* ViInt32 */#define TKTDS754_ATTR_VERTICAL_SCALE (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 16L) /* ViReal64 */#define TKTDS754_ATTR_FORCE_REAL_TIME (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 17L) /* ViBoolean */#define TKTDS754_ATTR_HISTO_BOX_POSITIONS (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 18L) /* ViString */#define TKTDS754_ATTR_MASK_STANDARD (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 19L) /* ViInt32 */#define TKTDS754_ATTR_MAIN_TRIGGER_TYPE (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 20L) /* ViInt32 */#define TKTDS754_ATTR_PULSE_TRIGGER_CLASS (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 21L) /* ViInt32 */#define TKTDS754_ATTR_LOGIC_TRIGGER_CLASS (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 22L) /* ViInt32 */#define TKTDS754_ATTR_OPTION_STRING (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 23L) /* ViString */ /*- TKTDS754_ATTR_LOGIC_LEVEL Values -*/#define TKTDS754_VAL_LOGIC_HIGH 1#define TKTDS754_VAL_LOGIC_LOW 2#define TKTDS754_VAL_LOGIC_DONT_CARE 3 /*- TKTDS754_ATTR_LOGIC_FUNCTION Values -*/#define TKTDS754_VAL_LOGIC_AND 1#define TKTDS754_VAL_LOGIC_OR 2#define TKTDS754_VAL_LOGIC_NAND 3#define TKTDS754_VAL_LOGIC_NOR 4 /*- TKTDS754_ATTR_ACQUISITION_STOP_AFTER Values -*/#define TKTDS754_VAL_COMMAND 1/* #define TKTDS754_VAL_SINGLE_SEQUENCE Defined in Header File */ /* #define TKTDS754_VAL_LIMIT Defined in Header File */ /*- TKTDS754_ATTR_MAIN_TRIGGER_TYPE Values -*//* #define TKTDS754_VAL_EDGE Defined in Header File *//* #define TKTDS754_VAL_COMM Defined in Header File *//* #define TKTDS754_VAL_TV Defined in Header File */#define TKTDS754_VAL_LOGIC (IVISCOPE_VAL_TRIGGER_TYPE_SPECIFIC_EXT_BASE + 101)#define TKTDS754_VAL_PULSE (IVISCOPE_VAL_TRIGGER_TYPE_SPECIFIC_EXT_BASE + 102)/***************************************************************************** *---------------------------- Useful Macros --------------------------------* *****************************************************************************/ /*- I/O buffer size -----------------------------------------------------*/#define BUFFER_SIZE 512L#define FETCH_BUFFER_SIZE 1000L /*- 488.2 Event Status Register (ESR) Bits ------------------------------*/#define IEEE_488_2_QUERY_ERROR_BIT 0x04#define IEEE_488_2_DEVICE_DEPENDENT_ERROR_BIT 0x08#define IEEE_488_2_EXECUTION_ERROR_BIT 0x10#define IEEE_488_2_COMMAND_ERROR_BIT 0x20 /*- List of channels passed to the Ivi_BuildChannelTable function -------*/ #define CHANNEL_LIST "CH1,CH2,CH3,CH4,MATH1,MATH2,MATH3,REF1,REF2,REF3,REF4" /*- Channel Types -------------------------------------------------------*/#define TKTDS754_VAL_INPUT_CHANNEL 0#define TKTDS754_VAL_REF_CHANNEL 1#define TKTDS754_VAL_MATH_CHANNEL 2 /*- Channels lists to which to restrict channel-based attributes --------*/#define INPUT_CHANNEL_LIST "CH1,CH2,CH3,CH4"#define MATH_CHANNEL_LIST "MATH1,MATH2,MATH3"#define REF_CHANNEL_LIST "REF1,REF2,REF3,REF4" /*- 488.2 Event Status Register (ESR) Bits ------------------------------*/#define IEEE_488_2_QUERY_ERROR_BIT 0x04#define IEEE_488_2_DEVICE_DEPENDENT_ERROR_BIT 0x08#define IEEE_488_2_EXECUTION_ERROR_BIT 0x10#define IEEE_488_2_COMMAND_ERROR_BIT 0x20/***************************************************************************** *--- Typedefs for string/string tables used in trigger source callbacks ----* *****************************************************************************/typedef struct { ViString col1; ViString col2; } tktds754StringTableEntries;typedef tktds754StringTableEntries* tktds754StringTable;/***************************************************************************** *------------------------------- Global Data -------------------------------* *****************************************************************************/ /*- TKTDS754_ATTR_MODEL -*/static IviRangeTableEntry attrModelRangeTableEntries[] = { {TKTDS754_VAL_TDS_754A, 0, 0, "TDS 754A", 0}, {TKTDS754_VAL_TDS_754C, 0, 0, "TDS 754C", 0}, {IVI_RANGE_TABLE_LAST_ENTRY} }; static IviRangeTable attrModelRangeTable = { IVI_VAL_DISCRETE, VI_FALSE, VI_FALSE, VI_NULL, attrModelRangeTableEntries, }; /*- TKTDS754_ATTR_TRIGGER_SOURCE -*/static tktds754StringTableEntries triggerSourceStringTableEntries[] = /* for non-channel sources only */ { { TKTDS754_VAL_EXTERNAL , "AUX" }, { TKTDS754_VAL_AC_LINE , "LINE" }, { TKTDS754_VAL_SW_TRIG_FUNC , "" }, { TKTDS754_VAL_GPIB_GET , "" }, { VI_NULL , VI_NULL } }; static tktds754StringTable triggerSourceStringTable = triggerSourceStringTableEntries; /* Range Tables used by the tktds754_ConfigureMathChannel and tktds754_ConfigureMathChannelFFT functions */static IviRangeTableEntry mathFunctionRangeTableEntries[] = { {TKTDS754_VAL_MATH_INVERT, 0, 0, "INV", 0}, {TKTDS754_VAL_MATH_ADD, 0, 0, "+", 0}, {TKTDS754_VAL_MATH_SUBTRACT, 0, 0, "-", 0}, {TKTDS754_VAL_MATH_MULTIPLY, 0, 0, "*", 0}, {TKTDS754_VAL_MATH_DIVIDE, 0, 0, "/", 0}, {TKTDS754_VAL_MATH_INTEGRATE, 0, 0, "INT", 0}, {TKTDS754_VAL_MATH_DIFFERENTIATE, 0, 0, "DIF", 0}, {TKTDS754_VAL_MATH_FFT, 0, 0, "FFT", 0}, {IVI_RANGE_TABLE_LAST_ENTRY} };static IviRangeTable mathFunctionRangeTable = { IVI_VAL_DISCRETE, VI_FALSE, VI_FALSE, "", mathFunctionRangeTableEntries,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -