📄 hp33120a.c
字号:
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, ":SYST:ERR?")); viCheckErr( viScanf (io, "%ld,\"%256[^\"]", errCode, errMessage)); } 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: hp33120a_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 usefull if one of the init functions fail. *****************************************************************************/ViStatus _VI_FUNC hp33120a_error_message (ViSession vi, ViStatus errorCode, ViChar errorMessage[256]){ ViStatus error = VI_SUCCESS; static IviStringValueTable errorTable = { IVIFGEN_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: hp33120a_revision_query * Purpose: This function returns the driver and instrument revisions. *****************************************************************************/ViStatus _VI_FUNC hp33120a_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, "*IDN?")); viCheckErr( viScanf (io, "%*[^,],%*[^,],%*[^,],%256[^\n]", instrRev)); } else if (Ivi_UseSpecificSimulation(vi)) /* call only when locked */ { /* Simulate Instrument Revision Query */ strcpy (instrRev, "No revision information available while simulating."); } checkErr( hp33120a_CheckStatus (vi));Error: Ivi_UnlockSession(vi, VI_NULL); return error;}/***************************************************************************** * Function: hp33120a_ConfigureOutputMode * Purpose: This function configures the output mode of the function * generator. The output mode determines how the function * generator produces waveforms. For example, you can select to * output a standard waveform, an arbitrary waveform, or a sequence * of arbitrary waveforms. *****************************************************************************/ViStatus _VI_FUNC hp33120a_ConfigureOutputMode (ViSession vi, ViInt32 outputMode){ ViStatus error = VI_SUCCESS; checkErr( Ivi_LockSession (vi, VI_NULL)); /* Set attribute: */ viCheckParm( Ivi_SetAttributeViInt32 (vi, VI_NULL, HP33120A_ATTR_OUTPUT_MODE, IVI_VAL_DIRECT_USER_CALL, outputMode), 2, "Output Mode"); checkErr( hp33120a_CheckStatus (vi)); Error: Ivi_UnlockSession (vi, VI_NULL); return error;}/***************************************************************************** * Function: hp33120a_ConfigureOutputImpedance * Purpose: This function configures the output impedance for the channel * you specify. *****************************************************************************/ViStatus _VI_FUNC hp33120a_ConfigureOutputImpedance (ViSession vi, ViConstString channelName, ViReal64 outputImpedance){ ViStatus error = VI_SUCCESS; checkErr( Ivi_LockSession (vi, VI_NULL)); /* Set attribute: */ viCheckParm( Ivi_SetAttributeViReal64 (vi, channelName, HP33120A_ATTR_OUTPUT_IMPEDANCE, IVI_VAL_DIRECT_USER_CALL, outputImpedance), 3, "Output Impedance"); checkErr( hp33120a_CheckStatus (vi)); Error: Ivi_UnlockSession (vi, VI_NULL); return error;} /***************************************************************************** * Function: hp33120a_ConfigureRefClockSource * Purpose: This function configures the function generator's reference * clock source. The function generator uses the reference clock * to derive frequencies and sample rates when generating output. *****************************************************************************/ViStatus _VI_FUNC hp33120a_ConfigureRefClockSource (ViSession vi, ViInt32 refClockSource){ ViStatus error = VI_SUCCESS; checkErr( Ivi_LockSession (vi, VI_NULL)); /* Set attribute: */ viCheckParm( Ivi_SetAttributeViInt32 (vi, VI_NULL, HP33120A_ATTR_REF_CLOCK_SOURCE, IVI_VAL_DIRECT_USER_CALL, refClockSource), 2, "Reference Clock Source"); checkErr( hp33120a_CheckStatus (vi)); Error: Ivi_UnlockSession (vi, VI_NULL); return error;}/***************************************************************************** * Function: hp33120a_EnableOutput * Purpose: This function configures the function generator so that the * signal the function generator produces appears at the channel's * output connector. *****************************************************************************/ViStatus _VI_FUNC hp33120a_EnableOutput (ViSession vi, ViConstString channelName){ ViStatus error = VI_SUCCESS; checkErr( Ivi_LockSession (vi, VI_NULL)); /* Set attribute: */ checkErr( Ivi_SetAttributeViBoolean (vi, channelName, HP33120A_ATTR_OUTPUT_ENABLED, IVI_VAL_DIRECT_USER_CALL, VI_TRUE)); Error: Ivi_UnlockSession (vi, VI_NULL); return error;}/***************************************************************************** * Function: hp33120a_DisableOutput * Purpose: This function configures the function generator so that the * signal the function generator produces does not appear at the * channel's output connector. *****************************************************************************/ViStatus _VI_FUNC hp33120a_DisableOutput (ViSession vi, ViConstString channelName){ ViStatus error = VI_SUCCESS; checkErr( Ivi_LockSession (vi, VI_NULL)); /* Set attribute: */ checkErr( Ivi_SetAttributeViBoolean (vi, channelName, HP33120A_ATTR_OUTPUT_ENABLED, IVI_VAL_DIRECT_USER_CALL, VI_FALSE)); Error: Ivi_UnlockSession (vi, VI_NULL); return error;}/***************************************************************************** * Function: hp33120a_InitiateGeneration * Purpose: This function initiates signal generation. This causes the * function generator to leave its Configuration state and enter * its Signal Generation state. *****************************************************************************/ViStatus _VI_FUNC hp33120a_InitiateGeneration (ViSession vi){ return VI_SUCCESS;} /***************************************************************************** * Function: hp33120a_AbortGeneration * Purpose: This function aborts a previously initiated output generation. * After you call this function, the function generator leaves its * Signal Generation state and returns to its Configuration state. *****************************************************************************/ViStatus _VI_FUNC hp33120a_AbortGeneration (ViSession vi){ return VI_SUCCESS;}/***************************************************************************** * Function: hp33120a_ConfigureStandardWaveform * Purpose: This function configures the attributes of the function * generator that affect standard waveform generation. These * attributes are the waveform, amplitude, DC offset, frequency, * and start phase. *****************************************************************************/ViStatus _VI_FUNC hp33120a_ConfigureStandardWaveform (ViSession vi, ViConstString channelName, ViInt32 waveform, ViReal64 amplitude, ViReal64 dcOffset, ViReal64 frequency, ViReal64 startPhase){ ViStatus error = VI_SUCCESS; checkErr( Ivi_LockSession (vi, VI_NULL)); /* Set attributes: */ viCheckParm( Ivi_SetAttributeViInt32 (vi, channelName, HP33120A_ATTR_FUNC_WAVEFORM, 0, waveform), 3, "Standard Waveform"); viCheckParm( Ivi_SetAttributeViReal64 (vi, channelName, HP33120A_ATTR_FUNC_AMPLITUDE, 0, amplitude), 4, "Amplitude"); viCheckParm( Ivi_SetAttributeViReal64 (vi, channelName, HP33120A_ATTR_FUNC_DC_OFFSET, 0, dcOffset), 5, "DC Offset"); viCheckParm( Ivi_SetAttributeViReal64 (vi, channelName, HP33120A_ATTR_FUNC_FREQUENCY, 0, frequency), 6, "Frequency"); viCheckParm( Ivi_SetAttributeViReal64 (vi, channelName, HP33120A_ATTR_FUNC_START_PHASE, 0, startPhase), 7, "Start Phase"); checkErr( hp33120a_CheckStatus (vi)); Error: Ivi_UnlockSession (vi, VI_NULL);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -