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

📄 hp662xa.c

📁 CVI例程
💻 C
📖 第 1 页 / 共 5 页
字号:
 *           except for closing the IVI session.  This function is called by  *           HP662XA_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 HP662XA_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: HP662XA_reset                                                          * Purpose:  This function resets the instrument.                           *****************************************************************************/ViStatus _VI_FUNC HP662XA_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, "CLR;"));        }        checkErr( HP662XA_DefaultInstrSetup (vi));                                        checkErr( HP662XA_CheckStatus (vi));                                      Error:    Ivi_UnlockSession (vi, VI_NULL);    return error;}/***************************************************************************** * Function: HP662XA_self_test                                                        * Purpose:  This function executes the instrument self-test and returns the  *           result.                                                          *****************************************************************************/ViStatus _VI_FUNC HP662XA_self_test (ViSession vi, ViInt16 *testResult,                                      ViChar testMessage[]){    ViStatus error = VI_SUCCESS;    ViString errorMessage;        checkErr( Ivi_LockSession (vi, VI_NULL));    if (testResult == VI_NULL)        viCheckParm( IVI_ERROR_INVALID_PARAMETER, 2, "Null address for Test Result");    if (testMessage == VI_NULL)        viCheckParm( IVI_ERROR_INVALID_PARAMETER, 3, "Null address for Test Message");    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, "TEST?"));                    viCheckErr( viScanf (io, "%hd", testResult));        if (Ivi_GetStringFromTable (instrumentErrorTable, *testResult, &errorMessage) != VI_SUCCESS)            errorMessage = "Unknown error.";        strcpy (testMessage, errorMessage);        }    else if (Ivi_UseSpecificSimulation(vi)) /* call only when locked */        {            /* Simulate Self Test */        *testResult = 0;        strcpy (testMessage, "No error.");        }        checkErr( HP662XA_CheckStatus (vi));Error:    Ivi_UnlockSession(vi, VI_NULL);    return error;}/***************************************************************************** * Function: HP662XA_error_query                                                      * Purpose:  This function queries the instrument error queue and returns    *           the result.                                                      *****************************************************************************/ViStatus _VI_FUNC HP662XA_error_query (ViSession vi, ViInt32 *errCode,                                        ViChar errMessage[]){    ViStatus error = VI_SUCCESS;    ViInt32   errorCount;            checkErr( Ivi_LockSession (vi, VI_NULL));        if (errCode == VI_NULL)        viCheckParm( IVI_ERROR_INVALID_PARAMETER, 2, "Null address for Error Code");    if (errMessage == VI_NULL)        viCheckParm( IVI_ERROR_INVALID_PARAMETER, 3, "Null address for Error Message");    if (!Ivi_Simulating(vi))                /* call only when locked */        {        ViSession   io = Ivi_IOSession(vi); /* call only when locked */            checkErr( HP662XA_CheckStatusCallback (vi, io));        checkErr( Ivi_InstrSpecificErrorQueueSize (vi, &errorCount));        if (errorCount > 0)            checkErr( Ivi_DequeueInstrSpecificError (vi, errCode, errMessage));        else            {             *errCode = 0;            strcpy (errMessage, "No error.");            }            }    else if (Ivi_UseSpecificSimulation(vi)) /* call only when locked */        {            /* Simulate Error Query */        *errCode = 0;        strcpy (errMessage, "No error.");        }Error:    Ivi_UnlockSession(vi, VI_NULL);    return error;}/***************************************************************************** * Function: HP662XA_error_message                                                   * Purpose:  This function translates the error codes returned by this        *           instrument driver into user-readable strings.   * *           Note:  The caller can pass VI_NULL for the vi parameter.  This  *           is useful if one of the init functions fail. *****************************************************************************/ViStatus _VI_FUNC HP662XA_error_message (ViSession vi, ViStatus errorCode,                                         ViChar errorMessage[256]){    ViStatus    error = VI_SUCCESS;        static      IviStringValueTable errorTable =         {            IVIPOWER_ERROR_CODES_AND_MSGS,            {VI_NULL,                               VI_NULL}        };            if (vi)        Ivi_LockSession(vi, VI_NULL);        /* all VISA and IVI error codes are handled as well as codes in the table */    if (errorMessage == VI_NULL)        viCheckParm( IVI_ERROR_INVALID_PARAMETER, 3, "Null address for Error Message");    checkErr( Ivi_GetSpecificDriverStatusDesc(vi, errorCode, errorMessage, errorTable));Error:    if (vi)        Ivi_UnlockSession(vi, VI_NULL);    return error;}/***************************************************************************** * Function: HP662XA_revision_query                                                   * Purpose:  This function returns the driver and instrument revisions.       *****************************************************************************/ViStatus _VI_FUNC HP662XA_revision_query (ViSession vi, ViChar driverRev[],                                           ViChar instrRev[]){    ViChar      rdBuffer[BUFFER_SIZE];    ViStatus    error = VI_SUCCESS;        checkErr( Ivi_LockSession (vi, VI_NULL));    if (driverRev == VI_NULL)        viCheckParm( IVI_ERROR_INVALID_PARAMETER, 2, "Null address for Driver Revision");    if (instrRev == VI_NULL)        viCheckParm( IVI_ERROR_INVALID_PARAMETER, 3, "Null address for Instrument Revision");    checkErr( Ivi_GetAttributeViString (vi, VI_NULL, IVI_ATTR_DRIVER_REVISION,                                         0, -1, driverRev));    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, "ROM?"));        viCheckErr( viScanf (io, "%256[^\r]", instrRev));        }    else if (Ivi_UseSpecificSimulation(vi)) /* call only when locked */        {            /* Simulate Instrument Revision Query */        strcpy (instrRev, "No revision information available while simulating.");        }    checkErr( HP662XA_CheckStatus (vi));Error:        Ivi_UnlockSession(vi, VI_NULL);    return error;}/***************************************************************************** *  Function: HP662XA_ConnectOutput *  Purpose:  This function connects a channel to its output. *****************************************************************************/ViStatus _VI_FUNC HP662XA_ConnectOutput (ViSession vi, ViConstString channel){    ViStatus  error = VI_SUCCESS;    checkErr( Ivi_LockSession (vi, VI_NULL));    checkErr( Ivi_SetAttributeViBoolean (vi, channel,                                         HP662XA_ATTR_OUTPUT_CONNECTED,                                         0, VI_TRUE));        checkErr( HP662XA_CheckStatus (vi));Error:    Ivi_UnlockSession (vi, VI_NULL);    return error;}/***************************************************************************** *  Function: HP662XA_DisconnectOutput *  Purpose:  This function disconnects a channel from its output. *****************************************************************************/ViStatus _VI_FUNC HP662XA_DisconnectOutput (ViSession vi, ViConstString channel){    ViStatus error = VI_SUCCESS;    checkErr( Ivi_LockSession (vi, VI_NULL));    checkErr( Ivi_SetAttributeViBoolean (vi, channel,                                         HP662XA_ATTR_OUTPUT_CONNECTED,                                         0, VI_FALSE));        checkErr( HP662XA_CheckStatus (vi));Error:    Ivi_UnlockSession (vi, VI_NULL);    return error;}/***************************************************************************** *  Function: HP662XA_ConfigureLimits *  Purpose:  This function configures the over-voltage and over-current *            protection. *****************************************************************************/ViStatus _VI_FUNC HP662XA_ConfigureLimits (ViSession vi,                                           ViConstString channel,                                           ViReal64 voltageLimit,                                           ViReal64 currentLimit,                                           ViBoolean ovpEnabled,                                           ViBoolean ocpEnabled){    ViStatus error = VI_SUCCESS;        checkErr( Ivi_LockSession (vi, VI_NULL));    /*

⌨️ 快捷键说明

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