📄 gf.c
字号:
ViConstString channelName,
ViAttr attributeId,
ViReal64 value);
static ViStatus _VI_FUNC GFAttrFMInternalWaveform_WriteCallback (ViSession vi,
ViSession io,
ViConstString channelName,
ViAttr attributeId,
ViInt32 value);
static ViStatus _VI_FUNC GFAttrFMInternalWaveform_ReadCallback (ViSession vi,
ViSession io,
ViConstString channelName,
ViAttr attributeId,
ViInt32 *value);
static ViStatus _VI_FUNC GFAttrFMInternalWaveform_CheckCallback (ViSession vi,
ViConstString channelName,
ViAttr attributeId,
ViInt32 value);
static ViStatus _VI_FUNC GFAttrFMInternalFrequency_WriteCallback (ViSession vi,
ViSession io,
ViConstString channelName,
ViAttr attributeId,
ViReal64 value);
static ViStatus _VI_FUNC GFAttrFMInternalFrequency_ReadCallback (ViSession vi,
ViSession io,
ViConstString channelName,
ViAttr attributeId,
ViReal64 *value);
static ViStatus _VI_FUNC GFAttrFMInternalFrequency_CheckCallback (ViSession vi,
ViConstString channelName,
ViAttr attributeId,
ViReal64 value);
static ViStatus _VI_FUNC GFAttrOutputEnabled_CompareCallback (ViSession vi,
ViConstString channelName,
ViAttr attributeId,
ViBoolean coercedNewValue,
ViBoolean cacheValue,
ViInt32 *result);
/*****************************************************************************
*------------ User-Callable Functions (Exportable Functions) ---------------*
*****************************************************************************/
/*****************************************************************************
* Function: GF_init
* Purpose: VXIplug&play required function. Calls the
* GF_InitWithOptions function.
*****************************************************************************/
ViStatus _VI_FUNC GF_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( GF_InitWithOptions (resourceName, IDQuery, resetDevice,
"", newVi));
Error:
return error;
}
/*****************************************************************************
* Function: GF_InitWithOptions
* Purpose: This function creates a new IVI session and calls the
* IviInit function.
*****************************************************************************/
ViStatus _VI_FUNC GF_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 ("GF", optionString, &vi));
/* init the driver */
checkErr( GF_IviInit (resourceName, IDQuery, resetDevice, vi));
*newVi = vi;
Error:
if (error < VI_SUCCESS)
Ivi_Dispose (vi);
return error;
}
/*****************************************************************************
* Function: GF_IviInit
* Purpose: This function is called by GF_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 GF_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( GF_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( GF_reset (vi));
else /*- Send Default Instrument Setup ---------------------------------*/
checkErr( GF_DefaultInstrSetup (vi));
checkErr( GF_CheckStatus (vi));
if (IDQuery)
viCheckWarn( VI_WARN_NSUP_ID_QUERY);
if (reset && error == VI_SUCCESS )
viCheckWarn( VI_WARN_NSUP_RESET);
Error:
if (error < VI_SUCCESS)
{
if (!Ivi_Simulating (vi) && io)
viClose (io);
}
return error;
}
/*****************************************************************************
* Function: GF_close
* Purpose: This function closes the instrument.
*
* Note: This function must unlock the session before calling
* Ivi_Dispose.
*****************************************************************************/
ViStatus _VI_FUNC GF_close (ViSession vi)
{
ViStatus error = VI_SUCCESS;
checkErr( Ivi_LockSession (vi, VI_NULL));
checkErr( GF_IviClose (vi));
Error:
Ivi_UnlockSession (vi, VI_NULL);
Ivi_Dispose (vi);
return error;
}
/*****************************************************************************
* Function: GF_IviClose
* Purpose: This function performs all of the drivers clean-up operations
* except for closing the IVI session. This function is called by
* GF_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 GF_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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -