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

📄 fl45.c

📁 经典LabWindows CVI方面的教材《LabWindows CVI开发入门和进阶》一书例题1-4章中的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
                                                          ViAttr attributeId,                                                          ViReal64 value);static ViStatus _VI_FUNC FL45AttrMinMaxMin_CheckCallback (ViSession vi,                                                          ViConstString channelName,                                                          ViAttr attributeId,                                                          ViReal64 value);static ViStatus _VI_FUNC FL45AttrRelativeBase_WriteCallback (ViSession vi,                                                             ViSession io,                                                             ViConstString channelName,                                                             ViAttr attributeId,                                                             ViReal64 value);static ViStatus _VI_FUNC FL45AttrRelativeBase_ReadCallback (ViSession vi,                                                            ViSession io,                                                            ViConstString channelName,                                                            ViAttr attributeId,                                                            ViReal64 *value);static ViStatus _VI_FUNC FL45AttrRelativeBase_CheckCallback (ViSession vi,                                                             ViConstString channelName,                                                             ViAttr attributeId,                                                             ViReal64 value);static ViStatus _VI_FUNC FL45AttrRelativeEnable_WriteCallback (ViSession vi,                                                               ViSession io,                                                               ViConstString channelName,                                                               ViAttr attributeId,                                                               ViBoolean value);static ViStatus _VI_FUNC FL45AttrRelativeEnable_ReadCallback (ViSession vi,                                                              ViSession io,                                                              ViConstString channelName,                                                              ViAttr attributeId,                                                              ViBoolean *value);static ViStatus _VI_FUNC FL45AttrSecondaryFunction_ReadCallback (ViSession vi,                                                                 ViSession io,                                                                 ViConstString channelName,                                                                 ViAttr attributeId,                                                                 ViInt32 *value);static ViStatus _VI_FUNC FL45AttrSecondaryFunction_WriteCallback (ViSession vi,                                                                  ViSession io,                                                                  ViConstString channelName,                                                                  ViAttr attributeId,                                                                  ViInt32 value);static ViStatus _VI_FUNC FL45AttrSecondaryFunction_CheckCallback (ViSession vi,                                                                  ViConstString channelName,                                                                  ViAttr attributeId,                                                                  ViInt32 value);static ViStatus _VI_FUNC FL45AttrSecondaryAutoRangeValue_ReadCallback (ViSession vi,                                                                       ViSession io,                                                                       ViConstString channelName,                                                                       ViAttr attributeId,                                                                       ViReal64 *value);static ViStatus _VI_FUNC FL45AttrSecondaryAutoRangeValue_RangeTableCallback (ViSession vi,                                                                             ViConstString channelName,                                                                             ViAttr attributeId,                                                                             IviRangeTablePtr *rangeTablePtr);static ViStatus _VI_FUNC FL45AttrModifiers_ReadCallback (ViSession vi,                                                         ViSession io,                                                         ViConstString channelName,                                                         ViAttr attributeId,                                                         ViInt32 *value);/***************************************************************************** *------------ User-Callable Functions (Exportable Functions) ---------------* *****************************************************************************//***************************************************************************** * Function: FL45_init    * Purpose:  VXIplug&play required function.  Calls the *           FL45_InitWithOptions function.    *****************************************************************************/ViStatus _VI_FUNC FL45_init (ViRsrc resourceName, ViBoolean IDQuery,                                 ViBoolean resetDevice, ViSession *newVi){       ViStatus    error = VI_SUCCESS;    if (newVi == VI_NULL)        {        Ivi_SetErrorInfo (VI_NULL, VI_FALSE, IVI_ERROR_INVALID_PARAMETER,                           VI_ERROR_PARAMETER4, "Null address for Instrument Handle");        checkErr( IVI_ERROR_INVALID_PARAMETER);        }    checkErr( FL45_InitWithOptions (resourceName, IDQuery, resetDevice, "", newVi));Error:      return error;}/***************************************************************************** * Function: FL45_InitWithOptions                                        * Purpose:  This function creates a new IVI session and calls the  *           IviInit function.                                      *****************************************************************************/ViStatus _VI_FUNC FL45_InitWithOptions (ViRsrc resourceName, ViBoolean IDQuery,                                        ViBoolean resetDevice, ViString optionString,                                        ViSession *newVi){       ViStatus    error = VI_SUCCESS;    ViSession   vi = VI_NULL;        if (newVi == VI_NULL)        {        Ivi_SetErrorInfo (VI_NULL, VI_FALSE, IVI_ERROR_INVALID_PARAMETER,                           VI_ERROR_PARAMETER5, "Null address for Instrument Handle");        checkErr( IVI_ERROR_INVALID_PARAMETER);        }    *newVi = VI_NULL;            /* create a new interchangable driver */    checkErr( Ivi_SpecificDriverNew ("FL45", optionString, &vi));              /* init the driver */    checkErr( FL45_IviInit (resourceName, IDQuery, resetDevice, vi));     *newVi = vi;    Error:    if (error < VI_SUCCESS)         Ivi_Dispose (vi);            return error;}/***************************************************************************** * Function: FL45_IviInit                                                        * Purpose:  This function is called by FL45_InitWithOptions   *           or by an IVI class driver.  This function initializes the I/O  *           interface, optionally resets the device, optionally performs an *           ID query, and sends a default setup to the instrument.                 *****************************************************************************/ViStatus _VI_FUNC FL45_IviInit (ViRsrc resourceName, ViBoolean IDQuery,                                ViBoolean reset, ViSession vi){    ViStatus    error = VI_SUCCESS;    ViSession   io = VI_NULL;        checkErr( Ivi_BuildChannelTable (vi, CHANNEL_LIST, VI_FALSE, VI_NULL));         /* Add attributes */    checkErr( FL45_InitAttributes (vi));    if (!Ivi_Simulating(vi))        {        ViSession   rmSession = VI_NULL;        /* Open instrument session */        checkErr( Ivi_GetAttributeViSession (vi, VI_NULL, IVI_ATTR_VISA_RM_SESSION, 0,                                             &rmSession));         viCheckErr( viOpen (rmSession, resourceName, VI_NULL, VI_NULL, &io));        /* io session owned by driver now */        checkErr( Ivi_SetAttributeViSession (vi, VI_NULL, IVI_ATTR_IO_SESSION, 0, io));          /* Configure VISA Formatted I/O */        viCheckErr( viSetAttribute (io, VI_ATTR_TMO_VALUE, 5000 ));        viCheckErr( viSetBuf (io, VI_READ_BUF | VI_WRITE_BUF, 4000));        viCheckErr( viSetAttribute (io, VI_ATTR_WR_BUF_OPER_MODE, VI_FLUSH_ON_ACCESS));        viCheckErr( viSetAttribute (io, VI_ATTR_RD_BUF_OPER_MODE, VI_FLUSH_ON_ACCESS));        }            /*- Reset instrument ----------------------------------------------------*/    if (reset)         checkErr( FL45_reset (vi));    else  /*- Send Default Instrument Setup ---------------------------------*/        checkErr( FL45_DefaultInstrSetup (vi));                           /* Identification Query */    if (IDQuery)                                       {        ViChar rdBuffer[BUFFER_SIZE];                #define VALID_RESPONSE_STRING_START        "FLUKE, 45"                checkErr( Ivi_GetAttributeViString (vi, VI_NULL, FL45_ATTR_ID_QUERY_RESPONSE,                                             0, BUFFER_SIZE, rdBuffer));                    if (strncmp (rdBuffer, VALID_RESPONSE_STRING_START,                      strlen(VALID_RESPONSE_STRING_START)) != 0)            {                         viCheckErr( VI_ERROR_FAIL_ID_QUERY);            }        }    checkErr( FL45_CheckStatus (vi));Error:    if (error < VI_SUCCESS)        {        if (!Ivi_Simulating (vi) && io)            viClose (io);        }    return error;}/***************************************************************************** * Function: FL45_close                                                            * Purpose:  This function closes the instrument.                             * *           Note:  This function must unlock the session before calling *           Ivi_Dispose. *****************************************************************************/ViStatus _VI_FUNC FL45_close (ViSession vi){    ViStatus    error = VI_SUCCESS;        checkErr( Ivi_LockSession (vi, VI_NULL));        checkErr( FL45_IviClose (vi));Error:        Ivi_UnlockSession (vi, VI_NULL);    Ivi_Dispose (vi);      return error;}/***************************************************************************** * Function: FL45_IviClose                                                         * Purpose:  This function performs all of the drivers clean-up operations    *           except for closing the IVI session.  This function is called by  *           FL45_close or by an IVI class driver.  * *           Note:  This function must close the I/O session and set  *           IVI_ATTR_IO_SESSION to 0. *****************************************************************************/ViStatus _VI_FUNC FL45_IviClose (ViSession vi){    ViStatus error = VI_SUCCESS;    ViSession io = VI_NULL;        /* Do not lock here.  The caller manages the lock. */    checkErr( Ivi_GetAttributeViSession (vi, VI_NULL, IVI_ATTR_IO_SESSION, 0, &io));Error:    Ivi_SetAttributeViSession (vi, VI_NULL, IVI_ATTR_IO_SESSION, 0, VI_NULL);    if(io)                                                              {        viClose (io);        }    return error;   }/***************************************************************************** * Function: FL45_reset                                                          * Purpose:  This function resets the instrument.                           *****************************************************************************/ViStatus _VI_FUNC FL45_reset (ViSession vi){    ViStatus    error = VI_SUCCESS;    checkErr( Ivi_LockSession (vi, VI_NULL));        if (!Ivi_Simulating(vi))                /* call only when locked */        {        ViSession   io = Ivi_IOSession(vi); /* call only when locked */                checkErr( Ivi_SetNeedToCheckStatus (vi, VI_TRUE));        viCheckErr( viPrintf (io, "*RST"));        }        checkErr( FL45_DefaultInstrSetup (vi));         checkErr( FL45_CheckStatus (vi));Error:    Ivi_UnlockSession (vi, VI_NULL);    return error;}/***************************************************************************** * Function: FL45_self_test                                                        * Purpose:  This function executes the instrument self-test and returns the  *           result.                                                          *****************************************************************************/ViStatus _VI_FUNC FL45_self_test (ViSession vi, ViInt16 *testResult,                                   ViChar testMessage[]){    ViStatus    error = VI_SUCCESS;    ViSession   io = VI_NULL;

⌨️ 快捷键说明

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