📄 hp662xa.c
字号:
ViBoolean value);static ViStatus _VI_FUNC HP662XAAttrOutputConnected_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViBoolean *value);static ViStatus _VI_FUNC HP662XAAttrPeakVoltage_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViReal64 *value);static ViStatus _VI_FUNC HP662XAAttrPeakCurrent_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViReal64 *value);static ViStatus _VI_FUNC HP662XAAttrDCVoltage_CheckCallback (ViSession vi, ViConstString channelName, ViAttr attributeId, ViReal64 value);static ViStatus _VI_FUNC HP662XAAttrDCVoltage_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViReal64 value);static ViStatus _VI_FUNC HP662XAAttrDCVoltage_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViReal64 *value);static ViStatus _VI_FUNC HP662XAAttrStatus_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 *value);static ViStatus _VI_FUNC HP662XAAttrAccumulatedStatus_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 *value);static ViStatus _VI_FUNC HP662XAAttrFault_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 *value);static ViStatus _VI_FUNC HP662XAAttrFaultMask_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 value);static ViStatus _VI_FUNC HP662XAAttrFaultMask_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 *value);static ViStatus _VI_FUNC HP662XAAttrFaultDelay_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViReal64 value);static ViStatus _VI_FUNC HP662XAAttrFaultDelay_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViReal64 *value);static ViStatus _VI_FUNC HP662XAAttrSrqMask_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 value);static ViStatus _VI_FUNC HP662XAAttrSrqMask_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViInt32 *value);static ViStatus _VI_FUNC HP662XAAttrConnectAtPowerOn_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViBoolean value);static ViStatus _VI_FUNC HP662XAAttrConnectAtPowerOn_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViBoolean *value);static ViStatus _VI_FUNC HP662XAAttrSrqAtPowerOn_WriteCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViBoolean value);static ViStatus _VI_FUNC HP662XAAttrSrqAtPowerOn_ReadCallback (ViSession vi, ViSession io, ViConstString channelName, ViAttr attributeId, ViBoolean *value);/***************************************************************************** *------------ User-Callable Functions (Exportable Functions) ---------------* *****************************************************************************//***************************************************************************** * Function: HP662XA_init * Purpose: VXIplug&play required function. Calls the * HP662XA_InitWithOptions function. *****************************************************************************/ViStatus _VI_FUNC HP662XA_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( HP662XA_InitWithOptions (resourceName, IDQuery, resetDevice, "", newVi));Error: return error;}/***************************************************************************** * Function: HP662XA_InitWithOptions * Purpose: This function creates a new IVI session and calls the * IviInit function. *****************************************************************************/ViStatus _VI_FUNC HP662XA_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 interchangeable driver */ checkErr( Ivi_SpecificDriverNew ("HP662XA", optionString, &vi)); /* init the driver */ checkErr( HP662XA_IviInit (resourceName, IDQuery, resetDevice, vi)); *newVi = vi; Error: if (error < VI_SUCCESS) Ivi_Dispose (vi); return error;}/***************************************************************************** * Function: HP662XA_IviInit * Purpose: This function is called by HP662XA_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 HP662XA_IviInit (ViRsrc resourceName, ViBoolean IDQuery, ViBoolean reset, ViSession vi){ ViStatus error = VI_SUCCESS; ViSession io = VI_NULL; ViChar idQueryResponse[BUFFER_SIZE]; ViChar buffer[BUFFER_SIZE]; ViInt32 model; ViString modelString; /* Setup the io session. */ if (!Ivi_Simulating(vi)) /* call only when session is locked */ { 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)); } /* Determine the family model. */ if (!Ivi_Simulating(vi) && IDQuery) { checkErr( HP662XA_QueryID (vi, BUFFER_SIZE, idQueryResponse)); for (model=0; model<NUMBER_OF_MODELS; model++) { viCheckErr( Ivi_GetStringFromTable (HP662XA_ModelTable, model, &modelString)); if (strstr (idQueryResponse, modelString)) break; } if (model == NUMBER_OF_MODELS) viCheckErr( VI_ERROR_FAIL_ID_QUERY); } else model = HP6624A; checkErr( HP662XA_GetDriverSetupOption (vi, SETUP_MODEL_TAG, BUFFER_SIZE, buffer)); if (buffer[0]) { for (model=0; model<NUMBER_OF_MODELS; model++) { viCheckErr( Ivi_GetStringFromTable (HP662XA_ModelTable, model, &modelString)); if (strstr (buffer, modelString)) break; } if (model == NUMBER_OF_MODELS) viCheckErrElab( IVI_ERROR_BAD_OPTION_VALUE, SETUP_MODEL_TAG); } /* Build the channel table and initialize attributes. */ viCheckErr( HP662XA_BuildChannelList (HP662XA_NumberOfChannels[model], BUFFER_SIZE, buffer)); checkErr( Ivi_BuildChannelTable (vi, buffer, VI_FALSE, VI_NULL)); checkErr( HP662XA_InitAttributes (vi, model)); if (!Ivi_Simulating(vi) && IDQuery) checkErr( Ivi_SetAttributeViString (vi, VI_NULL, HP662XA_ATTR_ID_QUERY_RESPONSE, 0, idQueryResponse)); /*- Reset instrument ----------------------------------------------------*/ if (reset) checkErr( HP662XA_reset (vi)); else /*- Send Default Instrument Setup ---------------------------------*/ checkErr( HP662XA_DefaultInstrSetup (vi)); checkErr( HP662XA_CheckStatus (vi));Error: if (error < VI_SUCCESS) { if (!Ivi_Simulating (vi) && io) viClose (io); } return error;}/***************************************************************************** * Function: HP662XA_close * Purpose: This function closes the instrument. * * Note: This function must unlock the session before calling * Ivi_Dispose. *****************************************************************************/ViStatus _VI_FUNC HP662XA_close (ViSession vi){ ViStatus error = VI_SUCCESS; checkErr( Ivi_LockSession (vi, VI_NULL)); checkErr( HP662XA_IviClose (vi));Error: Ivi_UnlockSession (vi, VI_NULL); Ivi_Dispose (vi); return error;}/***************************************************************************** * Function: HP662XA_IviClose * Purpose: This function performs all of the drivers clean-up operations
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -