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

📄 gpibdll.cpp

📁 VISA 控制仪表的DLL
💻 CPP
📖 第 1 页 / 共 2 页
字号:
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 + -