⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hp662xa.c

📁 CVI教程,用于信号采集系统的多任务开发软件.学习简单,功能实用.
💻 C
📖 第 1 页 / 共 5 页
字号:
/***************************************************************************** *  Hewlett-Packard 662xA Power Supply Instrument Driver                                *  LabWindows/CVI 5.0 Instrument Driver                                      *  Original Release: 4/1/98                                   *  By: ST, National Instruments                               *      PH.    Fax                                *                                                                            *  Modification History:                                                     *                                                                            *       4/1/98 - Instrument Driver Created.                   *                                                                            *****************************************************************************/#include <string.h>#include <stdio.h>  #include <formatio.h>#include <math.h>#include <ctype.h>#include <stdlib.h>#include "hp662xa.h"/***************************************************************************** *--------------------- Hidden Attribute Declarations -----------------------* *****************************************************************************/#define HP662XA_ATTR_DRIVER_SETUP               IVI_ATTR_DRIVER_SETUP                   /* ViString, read-only     */#define HP662XA_ATTR_MODEL                      (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 1L)   /* ViInt32,  read-only     */#define HP662XA_ATTR_RANGE_CHANGE_STATUS        (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 2L)   /* ViInt32,  multi-channel */#define HP662XA_ATTR_MEASUREMENT                (IVI_SPECIFIC_PRIVATE_ATTR_BASE + 3L)   /* ViReal64, multi-channel *//***************************************************************************** *---------------------------- Useful Macros --------------------------------* *****************************************************************************/    /*- I/O buffer size -----------------------------------------------------*/#define BUFFER_SIZE                             512L            /*- DriverSetup Options -------------------------------------------------*/#define SETUP_MODEL_TAG                         "Model"    /*- HP 662XA Family Member Capabilites ----------------------------------*//* Family members */#define HP6621A                   0     /* multiple-output, dual-range */#define HP6622A                   1     /*               .             */#define HP6623A                   2     /*               .             */#define HP6624A                   3     /*               .             */#define HP6625A                   4     /*               .             */#define HP6626A                   5     /*               .             */#define HP6627A                   6     /*               .             */#define HP6628A                   7     /*               .             */#define HP6629A                   8     /*               .             */#define NUMBER_OF_MODELS          9static IviStringValueTable HP662XA_ModelTable ={        {HP6621A,   "6621A"},        {HP6622A,   "6622A"},        {HP6623A,   "6623A"},        {HP6624A,   "6624A"},        {HP6625A,   "6625A"},        {HP6626A,   "6626A"},        {HP6627A,   "6627A"},        {HP6628A,   "6628A"},        {HP6629A,   "6629A"},        {VI_NULL,   VI_NULL}};static ViInt8 HP662XA_NumberOfChannels[NUMBER_OF_MODELS] ={/*HP6621A*/   2,/*HP6622A*/   2,/*HP6623A*/   3,/*HP6624A*/   4,/*HP6625A*/   2,/*HP6626A*/   4,/*HP6627A*/   4,/*HP6628A*/   2,/*HP6629A*/   4,};#define CHANNELS_IN_TABLE  4static ViReal64 HP662XA_VoltageSettings[NUMBER_OF_MODELS][CHANNELS_IN_TABLE] ={/* channel:    1        2      3      4    *//*HP6621A*/   20.2,    20.2,   0.0,   0.0,/*HP6622A*/   50.5,    50.5,   0.0,   0.0,/*HP6623A*/   20.2,    20.2,  50.5,   0.0,/*HP6624A*/   20.2,    20.2,  50.5,  50.5,/*HP6625A*/   50.5,    50.5,   0.0,   0.0,/*HP6626A*/   50.5,    50.5,  50.5,  50.5,/*HP6627A*/   50.5,    50.5,  50.5,  50.5,/*HP6628A*/   50.5,    50.5,   0.0,   0.0,/*HP6629A*/   50.5,    50.5,  50.5,  50.5,};static ViReal64 HP662XA_VoltageLimits[NUMBER_OF_MODELS][CHANNELS_IN_TABLE] ={/* channel:    1       2      3      4    *//*HP6621A*/   23.0,   23.0,   0.0,   0.0,/*HP6622A*/   55.0,   55.0,   0.0,   0.0,/*HP6623A*/   23.0,   23.0,  55.0,   0.0,/*HP6624A*/   23.0,   23.0,  55.0,  55.0,/*HP6625A*/   55.0,   55.0,   0.0,   0.0,/*HP6626A*/   55.0,   55.0,  55.0,  55.0,/*HP6627A*/   55.0,   55.0,  55.0,  55.0,/*HP6628A*/   55.0,   55.0,   0.0,   0.0,/*HP6629A*/   55.0,   55.0,  55.0,  55.0,};static ViReal64 HP662XA_CurrentLimits[NUMBER_OF_MODELS][CHANNELS_IN_TABLE] ={/* channel:    1        2      3      4    *//*HP6621A*/   10.30,   10.30,  0.0,   0.0,/*HP6622A*/    4.12,    4.12,  0.0,   0.0,/*HP6623A*/    5.15,   10.30,  2.06,  0.0,/*HP6624A*/    5.15,    5.15,  2.06,  2.06,/*HP6625A*/    0.50,    2.0,   0.0,   0.0,/*HP6626A*/    0.50,    0.50,  2.0,   2.0,/*HP6627A*/    2.06,    2.06,  2.06,  2.06,/*HP6628A*/    2.0,     2.0,   0.0,   0.0,/*HP6629A*/    2.0,     2.0,   2.0,   2.0,};static ViReal64 HP662XA_CurrentMinimums[NUMBER_OF_MODELS][CHANNELS_IN_TABLE] ={/* channel:    1        2      3      4    *//*HP6621A*/    0.13,    0.13,  0.0,   0.0,/*HP6622A*/    0.07,    0.07,  0.0,   0.0,/*HP6623A*/    0.08,    0.13,  0.05,  0.0,/*HP6624A*/    0.08,    0.08,  0.05,  0.05,/*HP6625A*/    0.0,     0.0,   0.0,   0.0,/*HP6626A*/    0.0,     0.0,   0.0,   0.0,/*HP6627A*/    0.05,    0.05,  0.05,  0.05,/*HP6628A*/    0.0,     0.0,   0.0,   0.0,/*HP6629A*/    0.0,     0.0,   0.0,   0.0,};static IviStringValueTable instrumentErrorTable ={    {0,       "No error."},    {1,       "Unidentified character."},    {2,       "Number format is incorrect."},    {3,       "Unidentified command."},    {4,       "Syntax error."},    {5,       "Value out of range."},    {6,       "Cannot respond since no query was made."},    {7,       "Display string too long."},    {8,       "Buffer is full."},    {9,       "Firmware error."},    {10,      "Hardware error."},    {11,      "Hardware error on channel 1."},    {12,      "Hardware error on channel 2."},    {13,      "Hardware error on channel 3."},    {14,      "Hardware error on channel 4."},    {15,      "No model number available."},    {16,      "Error during calibration."},    {17,      "Incorrect calibration."},    {18,      "Calibration is locked."},    {20,      "Timer failed self-test."},    {21,      "RAM failed self-test."},    {22,      "Self-Test jumper in Skip Self-Test position."},    {27,      "ROM failed checksum."},    {28,      "Unidentified command."},    {29,      "Incorrect checksum for non-volatile storage."},    {30,      "Store limit has been reached."},    {VI_NULL, VI_NULL}};/***************************************************************************** *-------------- Utility Function Declarations (Non-Exported) ---------------* *****************************************************************************/static ViStatus HP662XA_InitAttributes (ViSession vi, ViInt32 model);static ViStatus HP662XA_DefaultInstrSetup (ViSession openInstrSession);static ViStatus HP662XA_CheckStatus (ViSession vi);static ViStatus HP662XA_QueryID (ViSession vi,                                 ViInt32 bufferSize,                                 ViChar buffer[]);static ViStatus HP662XA_GetModel (ViSession vi,                                  ViInt32* model);static ViStatus HP662XA_CheckForRangeChange (ViSession vi,                                             ViConstString channel,                                             ViBoolean* changed);static ViStatus HP662XA_GetRangeChangeStatus (ViSession vi,                                              ViConstString channel,                                              ViStatus* status);static ViStatus HP662XA_GetProtectionStatus (ViSession vi,                                             ViConstString channel,                                             ViBoolean* ovpTripped,                                             ViBoolean* ocpTripped,                                             ViBoolean* otpTripped);static ViStatus HP662XA_SimulateMeasurement (ViSession vi,                                             ViConstString channel,                                             ViReal64* measurement);static ViStatus HP662XA_GetDriverSetupOption (ViSession vi,                                              ViConstString optionTag,                                              ViInt32 optionValueSize,                                              ViChar optionValue[]);static ViStatus HP662XA_BuildChannelList (ViInt32 numberOfChannels,                                          ViInt32 channelListSize,                                          ViChar channelList[]);/***************************************************************************** *----------------- Callback Declarations (Non-Exported) --------------------* *****************************************************************************/    /*- Global Session Callbacks --------------------------------------------*/    static ViStatus _VI_FUNC HP662XA_CheckStatusCallback (ViSession vi, ViSession io);    /*- Attribute callbacks -------------------------------------------------*/static ViStatus _VI_FUNC HP662XAAttrDriverRevision_ReadCallback (ViSession vi,                                                                 ViSession io,                                                                  ViConstString channelName,                                                                 ViAttr attributeId,                                                                  const ViConstString cacheValue);static ViStatus _VI_FUNC HP662XAAttrIdQueryResponse_ReadCallback (ViSession vi,                                                                  ViSession io,                                                                   ViConstString channelName,                                                                   ViAttr attributeId,                                                                   const ViConstString cacheValue);static ViStatus _VI_FUNC HP662XAAttrVoltageLimit_CheckCallback (ViSession vi,                                                                ViConstString channelName,                                                                ViAttr attributeId,                                                                ViReal64 value);static ViStatus _VI_FUNC HP662XAAttrVoltageLimit_WriteCallback (ViSession vi,                                                                 ViSession io,                                                                 ViConstString channelName,                                                                 ViAttr attributeId,                                                                 ViReal64 value);static ViStatus _VI_FUNC HP662XAAttrVoltageLimit_ReadCallback (ViSession vi,                                                                ViSession io,                                                                ViConstString channelName,                                                                ViAttr attributeId,                                                                ViReal64 *value);static ViStatus _VI_FUNC HP662XAAttrCurrentLimit_CheckCallback (ViSession vi,                                                                 ViConstString channelName,                                                                 ViAttr attributeId,                                                                 ViReal64 value);static ViStatus _VI_FUNC HP662XAAttrCurrentLimit_WriteCallback (ViSession vi,                                                                 ViSession io,                                                                 ViConstString channelName,                                                                 ViAttr attributeId,                                                                 ViReal64 value);static ViStatus _VI_FUNC HP662XAAttrCurrentLimit_ReadCallback (ViSession vi,                                                                ViSession io,                                                                ViConstString channelName,                                                                ViAttr attributeId,                                                                ViReal64 *value);static ViStatus _VI_FUNC HP662XAAttrOVPEnabled_CheckCallback (ViSession vi,                                                               ViConstString channelName,                                                               ViAttr attributeId,                                                               ViBoolean value);static ViStatus _VI_FUNC HP662XAAttrOCPEnabled_WriteCallback (ViSession vi,                                                               ViSession io,                                                               ViConstString channelName,                                                               ViAttr attributeId,                                                               ViBoolean value);static ViStatus _VI_FUNC HP662XAAttrOCPEnabled_ReadCallback (ViSession vi,                                                              ViSession io,                                                              ViConstString channelName,                                                              ViAttr attributeId,                                                              ViBoolean *value);static ViStatus _VI_FUNC HP662XAAttrOutputConnected_CheckCallback (ViSession vi,                                                                   ViConstString channelName,                                                                   ViAttr attributeId,                                                                   ViBoolean value);static ViStatus _VI_FUNC HP662XAAttrOutputConnected_WriteCallback (ViSession vi,                                                                    ViSession io,                                                                    ViConstString channelName,                                                                    ViAttr attributeId, 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -