📄 gpibdll.cpp
字号:
VOID LCGpibDll::CloseMarker(int i)
{
CString cmd;
cmd.Format(":CALC1:MARK%d OFF;",i);
Write(cmd);
}
VOID LCGpibDll::PresetZero()
{
Write(":CALC1:MATH:FUNC NORM;");
}
//9.17
BOOL LCGpibDll::SetCalMethod(CString dMethod)
{
char ReBuff[255];
CString csCmd;
memset(ReBuff, 0, sizeof(ReBuff));
csCmd.Format("SENS1:CORR:COLL:METH:%s;*OPC?;");
if (FALSE == Query(csCmd, ReBuff, sizeof(ReBuff)))
{
return FALSE;
}
return TRUE;
}
BOOL LCGpibDll::SetCalDONE()
{
char ReBuff[255];
CString csCmd;
memset(ReBuff, 0, sizeof(ReBuff));
csCmd.Format(":SENS1:CORR:COLL:METH:SOLT2 1,2;:SENS1:CORR:COLL:SAVE;*OPC?;");
if (FALSE == Query(csCmd, ReBuff, sizeof(ReBuff)))
{
return FALSE;
}
return TRUE;
}
BOOL LCGpibDll::Calibrate(CString dMethod)
{
char ReBuff[255];
CString csCmd;
memset(ReBuff, 0, sizeof(ReBuff));
csCmd.Format("SENS1:CORR:COLL:%s;*OPC?;",dMethod);
if (FALSE == Query(csCmd, ReBuff, sizeof(ReBuff)))
{
return FALSE;
}
return TRUE;
}
BOOL LCGpibDll::GetBand(double &dValue)
{
// double dValue = 0;
char ReBuff[255];
CString csCmd;
memset(ReBuff, 0, sizeof(ReBuff));
csCmd.Format(":SENS1:BAND?;");
if (FALSE == Query(csCmd, ReBuff, sizeof(ReBuff)))
{
return FALSE;
}
dValue = (double)::atof(ReBuff);
return TRUE;
}
double LCGpibDll::GetPoints( double &dValue)
{
char ReBuff[255];
CString csCmd;
memset(ReBuff, 0, sizeof(ReBuff));
csCmd.Format(":SENS1:SWE:POIN?;");
if (FALSE == Query(csCmd, ReBuff, sizeof(ReBuff)))
{
return FALSE;
}
dValue = (double)::atof(ReBuff);
return dValue;
}
double LCGpibDll::GetPower( double &dValue)
{
char ReBuff[255];
CString csCmd;
memset(ReBuff, 0, sizeof(ReBuff));
csCmd.Format(":SOUR1:POW?;");
if (FALSE == Query(csCmd, ReBuff, sizeof(ReBuff)))
{
return FALSE;
}
dValue = (double)::atof(ReBuff)/1000;
return dValue;
}
BOOL LCGpibDll::GetMeans( char ReBuff[100] )
{
CString csCmd;
memset(ReBuff, 0, sizeof(ReBuff));
csCmd.Format(":CALC1:PAR1:DEF?;");
if (FALSE == Query(csCmd, ReBuff, sizeof(ReBuff)))
{
return FALSE;
}
return TRUE;
}
BOOL LCGpibDll::GetFormat( char ReBuff[100] )
{
// char ReBuff[100];
CString csCmd;
memset(ReBuff, 0, sizeof(ReBuff));
csCmd.Format(":CALC1:FORM?;");
if (FALSE == Query(csCmd, ReBuff, sizeof(ReBuff)))
{
return FALSE;
}
// dValue = ReBuff;
return TRUE;
}
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
VOID Csum200::SetSweepFreq(double startfreq,double stopfreq)
{
CString cscmd;
cscmd.Format(":FREQ:STAR %f;",startfreq * 1000000);
Write(cscmd);
cscmd.Format(":FREQ:STOP %f;",stopfreq * 1000000);
Write(cscmd);
}
BOOL Csum200::Write(LPCSTR szCmd)
{
ViStatus status;
status = viPrintf(m_vi, "%s\n", szCmd);
if (VI_SUCCESS != status)
{
TraceErr(status);
return FALSE;
}
return TRUE;
}
VOID Csum200::TraceErr(ViStatus status)
{
char szErrMsg[1024];
CString strErrMsg;
viStatusDesc(m_vi, status, szErrMsg);
strErrMsg = szErrMsg;
strErrMsg += "\n";
}
VOID Csum200::OUTPUT(BOOL boutput)
{
if (!boutput)
{
Write(":OUTP OFF;");
}
else
Write(":OUTP ON;");
}
VOID Csum200::SweepOn(BOOL bonoff)
{
Write(":TRIG:SOUR AUTO");
if (!bonoff)
{
Write(":SOURce:FREQuency:MODE CW;");
}
else
{
Write(":SOURce:FREQuency:MODE SWEep;");
}
}
VOID Csum200::SetDwel(double dtime)
{
CString cscmd;
cscmd.Format(":SWE:DWEL %.2f;",dtime);
Write(cscmd);
}
VOID Csum200::SetPower(double dpower)
{
CString cscmd;
cscmd.Format("POW %.2fdBm;",dpower);
Write(cscmd);
}
VOID Csum200::SetFreqA(double dfreq)
{
CString cscmd;
cscmd.Format("FREQ %.3fMHz;",dfreq);
Write(cscmd);
}
BOOL Csum200::Query(const char *lpszCmd, char *lpszRxBuf, UINT nRxBufLength)
{
ViStatus status;
ViUInt32 retCount;
ViEventType eventType;
ViEvent event;
ViJobId JobId_Read;
ViJobId JobId_Wait;
status = viFlush(m_vi, VI_WRITE_BUF|VI_READ_BUF);
if (VI_SUCCESS != status)
{
TraceErr(status);
return FALSE;
}
status = viPrintf(m_vi, "%s\n",lpszCmd);
if (VI_SUCCESS != status)
{
TraceErr(status);
return FALSE;
}
status = viFlush(m_vi, VI_WRITE_BUF);
if (VI_SUCCESS != status)
{
TraceErr(status);
return FALSE;
}
viReadAsync(m_vi, (unsigned char *)lpszRxBuf, nRxBufLength, &JobId_Read);
viWaitOnEvent(m_vi, VI_EVENT_IO_COMPLETION, VI_TMO_INFINITE, &eventType, &event);
viGetAttribute(event, VI_ATTR_JOB_ID, &JobId_Wait);
viGetAttribute(event, VI_ATTR_RET_COUNT, &retCount);
if ((JobId_Wait != JobId_Read) || (retCount <= 0))
{
viClose(event);
return FALSE;
}
lpszRxBuf[retCount] = 0;
viClose(event);
return TRUE;
}
BOOL Csum200::OpenGpib(int iPort,int iAddr)
{
ViStatus status;
if (m_vi != NULL)
viClose(m_vi);
if (m_sesn != NULL)
viClose(m_sesn);
status = viOpenDefaultRM(&m_sesn);
if (status != VI_SUCCESS)
{
TraceErr(status);
return FALSE;
}
//打开GPIB
char szCmd[20];
sprintf(szCmd, "GPIB%d::%d::INSTR ",iPort,iAddr);
status = viOpen(m_sesn, szCmd, VI_NULL, VI_NULL, &m_vi);
if (status != VI_SUCCESS)
{
TraceErr(status);
return FALSE;
}
viClear(m_vi);
viEnableEvent(m_vi, VI_EVENT_IO_COMPLETION, VI_QUEUE, VI_NULL);
char Tmp[8];
if (FALSE == Query("*RST;*CLS;*OPC?;", Tmp, sizeof(Tmp)))
{
return FALSE;
}
return TRUE;
}
BOOL Csum200::OpenTcpip(int iPort,CString iAddr)
{
ViStatus status;
if (m_vi != NULL)
viClose(m_vi);
if (m_sesn != NULL)
viClose(m_sesn);
status = viOpenDefaultRM(&m_sesn);
if (status != VI_SUCCESS)
{
TraceErr(status);
return FALSE;
}
//打开GPIB
char szCmd[20];
sprintf(szCmd, "TCPIP%d::%s::inst0::INSTR",iPort,iAddr);
status = viOpen(m_sesn, szCmd, VI_NULL, VI_NULL, &m_vi);
if (status != VI_SUCCESS)
{
TraceErr(status);
return FALSE;
}
viClear(m_vi);
viEnableEvent(m_vi, VI_EVENT_IO_COMPLETION, VI_QUEUE, VI_NULL);
char Tmp[8];
if (FALSE == Query("*RST;*CLS;*OPC?;", Tmp, sizeof(Tmp)))
{
return FALSE;
}
return TRUE;
}
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
CFsp13::CFsp13()
{
}
CFsp13::~CFsp13()
{
}
double CFsp13::GetMarkPeakY()
{
CString temp;
char ReBuff[255];
memset(ReBuff, 0, sizeof(ReBuff));
temp.Format("CALC:MARK:MAX;Y?");
if (FALSE == Query(temp, ReBuff, sizeof(ReBuff)))
{
return FALSE;
}
double dValue = (double)::atof(ReBuff);
return dValue;
}
double CFsp13::GetMarkPeakX()
{
CString temp;
char ReBuff[255];
memset(ReBuff, 0, sizeof(ReBuff));
temp.Format("CALC:MARK:MAX;X?");
if (FALSE == Query(temp, ReBuff, sizeof(ReBuff)))
{
return FALSE;
}
double dValue = (double)::atof(ReBuff);
return dValue;
}
BOOL CFsp13::Write(LPCSTR szCmd)
{
ViStatus status;
status = viPrintf(m_vi, "%s\n", szCmd);
if (VI_SUCCESS != status)
{
TraceErr(status);
return FALSE;
}
return TRUE;
}
VOID CFsp13::TraceErr(ViStatus status)
{
char szErrMsg[1024];
CString strErrMsg;
viStatusDesc(m_vi, status, szErrMsg);
strErrMsg = szErrMsg;
strErrMsg += "\n";
}
BOOL CFsp13::OpenGpib(int iPort,int iAddr)
{
ViStatus status;
if (m_vi != NULL)
viClose(m_vi);
if (m_sesn != NULL)
viClose(m_sesn);
status = viOpenDefaultRM(&m_sesn);
if (status != VI_SUCCESS)
{
TraceErr(status);
return FALSE;
}
//打开GPIB
char szCmd[20];
sprintf(szCmd, "GPIB%d::%d::INSTR ",iPort,iAddr);
status = viOpen(m_sesn, szCmd, VI_NULL, VI_NULL, &m_vi);
if (status != VI_SUCCESS)
{
TraceErr(status);
return FALSE;
}
viClear(m_vi);
viEnableEvent(m_vi, VI_EVENT_IO_COMPLETION, VI_QUEUE, VI_NULL);
char Tmp[8];
if (FALSE == Query("*RST;*CLS;*OPC?;", Tmp, sizeof(Tmp)))
{
return FALSE;
}
return TRUE;
}
BOOL CFsp13::OpenTcpip(int iPort,CString iAddr)
{
ViStatus status;
if (m_vi != NULL)
viClose(m_vi);
if (m_sesn != NULL)
viClose(m_sesn);
status = viOpenDefaultRM(&m_sesn);
if (status != VI_SUCCESS)
{
TraceErr(status);
return FALSE;
}
//打开GPIB
char szCmd[20];
sprintf(szCmd, "TCPIP%d::%s::inst0::INSTR",iPort,iAddr);
status = viOpen(m_sesn, szCmd, VI_NULL, VI_NULL, &m_vi);
if (status != VI_SUCCESS)
{
TraceErr(status);
return FALSE;
}
viClear(m_vi);
viEnableEvent(m_vi, VI_EVENT_IO_COMPLETION, VI_QUEUE, VI_NULL);
char Tmp[8];
if (FALSE == Query("*RST;*CLS;*OPC?;", Tmp, sizeof(Tmp)))
{
return FALSE;
}
return TRUE;
}
BOOL CFsp13::Query(const char *lpszCmd, char *lpszRxBuf, UINT nRxBufLength)
{
ViStatus status;
ViUInt32 retCount;
ViEventType eventType;
ViEvent event;
ViJobId JobId_Read;
ViJobId JobId_Wait;
status = viFlush(m_vi, VI_WRITE_BUF|VI_READ_BUF);
if (VI_SUCCESS != status)
{
TraceErr(status);
return FALSE;
}
status = viPrintf(m_vi, "%s\n",lpszCmd);
if (VI_SUCCESS != status)
{
TraceErr(status);
return FALSE;
}
status = viFlush(m_vi, VI_WRITE_BUF);
if (VI_SUCCESS != status)
{
TraceErr(status);
return FALSE;
}
viReadAsync(m_vi, (unsigned char *)lpszRxBuf, nRxBufLength, &JobId_Read);
viWaitOnEvent(m_vi, VI_EVENT_IO_COMPLETION, VI_TMO_INFINITE, &eventType, &event);
viGetAttribute(event, VI_ATTR_JOB_ID, &JobId_Wait);
viGetAttribute(event, VI_ATTR_RET_COUNT, &retCount);
if ((JobId_Wait != JobId_Read) || (retCount <= 0))
{
viClose(event);
return FALSE;
}
lpszRxBuf[retCount] = 0;
viClose(event);
return TRUE;
}
VOID CFsp13::SetTimeout(unsigned long timeout)
{
viSetAttribute(m_vi,VI_ATTR_TMO_VALUE,timeout);
}
VOID CFsp13::SetFreqCenter(double dfreq)
{
CString temp;
temp.Format("FREQUENCY:CENTER %fMHz",dfreq);
Write(temp);
}
VOID CFsp13::SetSpan(double dfreq)
{
CString temp;
temp.Format("FREQUENCY:SPAN %fkHz",dfreq);
Write(temp);
}
VOID CFsp13::SetAtt(double dfreq)
{
CString temp;
temp.Format("INP:ATT %fdB",dfreq);
Write(temp);
}
VOID CFsp13::SetRefLevel(double dfreq)
{
CString temp;
temp.Format("DISP:WIND:TRAC:Y:RLEV %fdBm",dfreq);
Write(temp);
}
VOID CFsp13::SetStart(double dfreq)
{
CString temp;
temp.Format("FREQ:START %f",dfreq*1000000);
Write(temp);
}
VOID CFsp13::SetStop(double dfreq)
{
CString temp;
temp.Format("FREQ:STOP %f",dfreq*1000000);
Write(temp);
}
VOID CFsp13::SetResbw(double dfreq)
{
CString temp;
temp.Format("BANDwidth %f",dfreq*1000);
Write(temp);
}
VOID CFsp13::SetSweeptime(double dtime)
{
CString temp;
temp.Format("SWEep:TIME %f",dtime/1000);
Write(temp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -