📄 fl45.c
字号:
/***************************************************************************** * Copyright 1998 National Instruments Corporation. All Rights Reserved. * *****************************************************************************//***************************************************************************** * Fluke 45 Digitial Multimeter Instrument Driver * LabWindows/CVI 5.0 Instrument Driver * Original Release: 3/4/98 * By: TKN, National Instruments, Austin Texas * PH. 800-433-3488 Fax 512-794-5678 * * Modification History: * * 3/4/1998 - Instrument Driver Created. * 7/7/1998 - [sz] Added VI_NULL entry to the error table in the * self_test function * - [sz] Changed the timeout in self_test from 20s to 1 min * - [sz] Changed attrRange_CheckCallback - deleted the * condition for the DIODE and CONTINUITY function * - [sz] Corrected the usage of checkErr and viCheckErr macros * - [sz] Changed IVIDMM_ERROR_ACCURACY* to FL45_ERROR_ACCURACY* * - [sz] Modified ?: operator parameters in * attrTriggerSource_WriteCallback * - [sz] Morphed 'if' to 'switch' statement in * attrTriggerDelay_WriteCallback and * attrTriggerDelay_ReadCallback functions * - [sz] Changed attrSecondaryFunction_WriteCallback function * (Reinstating the primary function will automatically * remove the secondary function.) * - [sz] Updated the minor version of the driver to 100 *****************************************************************************/#include <string.h>#include <stdio.h> #include <stdlib.h> #include <formatio.h>#include <stdlib.h>#include "fl45.h"/***************************************************************************** *--------------------- Hidden Attribute Declarations -----------------------* *****************************************************************************/#define FL45_ATTR_OPC_TIMEOUT (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 1L) /* ViInt32 */#define FL45_ATTR_MATH_MODIFIERS (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 2L)/***************************************************************************** *---------------------------- Useful Macros --------------------------------* *****************************************************************************/ /*- I/O buffer size -----------------------------------------------------*/#define BUFFER_SIZE 512L /*- 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 /*- Modifier mode Bits --------------------------------------------------*/#define FL45_VAL_MIN_MODE_BIT 0x01#define FL45_VAL_MAX_MODE_BIT 0x02#define FL45_VAL_HOLD_MODE 0x04#define FL45_VAL_DB_MODE 0x08#define FL45_VAL_DBPOWER_MODE 0x10#define FL45_VAL_RELATIVE_MODE 0x20#define FL45_VAL_COMPARE_MODE 0x40 /*- List of channels passed to the Ivi_BuildChannelTable function -------*/ #define CHANNEL_LIST "1"/***************************************************************************** *-------------- Utility Function Declarations (Non-Exported) ---------------* *****************************************************************************/static ViStatus FL45_GetAccuracyTablePtr (ViSession vi, ViInt32 function, ViReal64 range, ViReal64 resolution, IviRangeTablePtr *accuracyTblPtr, IviRangeTablePtr *addAccuracyTblPtr); static ViStatus FL45_GetAccuracy (ViSession vi, ViReal64 freqOfInterest, ViReal64 *multiplier, ViReal64 *offset);static ViStatus FL45_InitAttributes (ViSession vi);static ViStatus FL45_DefaultInstrSetup (ViSession openInstrSession);static ViStatus FL45_CheckStatus (ViSession vi);static ViStatus FL45_WaitForOPC (ViSession vi, ViInt32 maxTime);static ViStatus FL45_GetActualRange (ViSession vi, ViSession io, ViReal64 *value);/***************************************************************************** *----------------- Callback Declarations (Non-Exported) --------------------* *****************************************************************************/ /*- Global Session Callbacks --------------------------------------------*/ static ViStatus _VI_FUNC FL45_CheckStatusCallback (ViSession vi, ViSession io);static ViStatus _VI_FUNC FL45_WaitForOPCCallback (ViSession vi, ViSession io); /*- Attribute callbacks -------------------------------------------------*/static ViStatus _VI_FUNC FL45AttrDriverRevision_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, const ViConstString cacheValue);static ViStatus _VI_FUNC FL45AttrIdQueryResponse_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, const ViConstString cacheValue);static ViStatus _VI_FUNC FL45AttrFunction_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 value);static ViStatus _VI_FUNC FL45AttrFunction_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 *value);static ViStatus _VI_FUNC FL45AttrRange_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViReal64 value);static ViStatus _VI_FUNC FL45AttrRange_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViReal64 *value);static ViStatus _VI_FUNC FL45AttrRange_CheckCallback (ViSession vi, ViConstString channelName, ViAttr attributeId, ViReal64 value);static ViStatus _VI_FUNC FL45AttrRange_RangeTableCallback (ViSession vi, ViConstString channelName, ViAttr attributeId, IviRangeTablePtr *rangeTablePtr);static ViStatus _VI_FUNC FL45AttrResolution_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViReal64 value);static ViStatus _VI_FUNC FL45AttrResolution_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViReal64 *value);static ViStatus _VI_FUNC FL45AttrTriggerSource_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 value);static ViStatus _VI_FUNC FL45AttrTriggerSource_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 *value);static ViStatus _VI_FUNC FL45AttrTriggerDelay_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViReal64 value);static ViStatus _VI_FUNC FL45AttrTriggerDelay_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViReal64 *value);static ViStatus _VI_FUNC FL45AttrTriggerDelay_CheckCallback (ViSession vi, ViConstString channelName, ViAttr attributeId, ViReal64 value);static ViStatus _VI_FUNC FL45AttrAcMinFreq_RangeTableCallback (ViSession vi, ViConstString channelName, ViAttr attributeId, IviRangeTablePtr *rangeTablePtr);static ViStatus _VI_FUNC FL45AttrAcMaxFreq_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViReal64 *value);static ViStatus _VI_FUNC FL45AttrAcMaxFreq_RangeTableCallback (ViSession vi, ViConstString channelName, ViAttr attributeId, IviRangeTablePtr *rangeTablePtr);static ViStatus _VI_FUNC FL45AttrApertureTime_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViReal64 *value);static ViStatus _VI_FUNC FL45AttrAutoRangeValue_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViReal64 *value);static ViStatus _VI_FUNC FL45AttrDbMode_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 value);static ViStatus _VI_FUNC FL45AttrDbMode_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 *value);static ViStatus _VI_FUNC FL45AttrDbMode_CheckCallback (ViSession vi, ViConstString channelName, ViAttr attributeId, ViInt32 value);static ViStatus _VI_FUNC FL45AttrDbRef_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 value);static ViStatus _VI_FUNC FL45AttrDbRef_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 *value);static ViStatus _VI_FUNC FL45AttrDbRef_CheckCallback (ViSession vi, ViConstString channelName, ViAttr attributeId, ViInt32 value);static ViStatus _VI_FUNC FL45AttrHoldEnable_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViBoolean value);static ViStatus _VI_FUNC FL45AttrHoldEnable_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViBoolean *value);static ViStatus _VI_FUNC FL45AttrHoldThreshold_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 value);static ViStatus _VI_FUNC FL45AttrHoldThreshold_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 *value);static ViStatus _VI_FUNC FL45AttrCompareEnable_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViBoolean value);static ViStatus _VI_FUNC FL45AttrCompareEnable_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViBoolean *value);static ViStatus _VI_FUNC FL45AttrCompareHigh_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViReal64 value);static ViStatus _VI_FUNC FL45AttrCompareLow_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViReal64 value);static ViStatus _VI_FUNC FL45AttrMinMaxMode_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 value);static ViStatus _VI_FUNC FL45AttrMinMaxMode_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 *value);static ViStatus _VI_FUNC FL45AttrMinMaxMax_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViReal64 value);static ViStatus _VI_FUNC FL45AttrMinMaxMax_CheckCallback (ViSession vi, ViConstString channelName, ViAttr attributeId, ViReal64 value);static ViStatus _VI_FUNC FL45AttrMinMaxMin_WriteCallback (ViSession vi, ViSession io, ViConstString channelName,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -