基于GPIB總線的無(wú)線電頻譜監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)
int CGPIB∷RecvData(void*Buffer,int limitLength)
{ if(!(m_bOpened)||(m_dev==NULL))
return FALSE;
ibeot(m_dev,1);
ibtmo(m_ctrl,T3s);
ibtmo(m_dev,T3s);
ibrda(m_dev,Buffer,limitLength);
//從儀器異步讀數(shù)據(jù)到Buffer
ibwait(m_dev,0x4100); //等待異步讀完成
int nLocCount=ibcntl;
if(ibsta ERR)
return FALSE;
ibwait(m_ctrl,0x0000);
if(ibsta ERR)
return -1;
return nLocCount;
}
?、蓐P(guān)閉儀器的方法主要用于將儀器置為本地測(cè)量方式,同時(shí)使儀器處于離線狀態(tài)。其關(guān)鍵代碼如下:
BOOL CGPIB∷Close( )
{ if(!(m_bOpened)||(m_dev==NULL))
return TRUE;
ibloc(m_dev); //置ESVN40為本地測(cè)量方式
ibonl(m_dev,0); //置ESVN40為離線方式
if(ibsta ERR)
return FALSE;
m_bOpened=FALSE;
ibonl(m_ctrl,0); //設(shè)置GPIB卡為OFF-Line狀態(tài)
return 1;
}
3 程序運(yùn)行界面
該系統(tǒng)可以進(jìn)行無(wú)線電信號(hào)的監(jiān)測(cè),其中包括某個(gè)頻點(diǎn)的電平、調(diào)整深度、頻率補(bǔ)償和頻率偏移等。此外,系統(tǒng)還能對(duì)單頻點(diǎn)的頻譜進(jìn)行分析,對(duì)給定的頻段進(jìn)行信號(hào)掃描。在實(shí)際應(yīng)用中,采用雙線程的工作機(jī)理,可以很大程度地提高數(shù)據(jù)采集的速度。系統(tǒng)對(duì)信號(hào)進(jìn)行頻率掃描時(shí)的運(yùn)行界面如圖4所示。在界面中,由于ESVN40只是返回掃描駐點(diǎn)的電平值,因此在軟件中對(duì)該掃描功能進(jìn)行了擴(kuò)充。在界面上只要設(shè)定一個(gè)電平閾值(用戶可以認(rèn)為超過(guò)該閾值的電平,可能存在信道占用)和一個(gè)用戶認(rèn)為每個(gè)信道應(yīng)該占用的最大帶寬或法定的最大帶寬,則通過(guò)軟件設(shè)計(jì)對(duì)采樣的樣本進(jìn)行分析后,可以對(duì)占用信道的中心頻點(diǎn)進(jìn)行初步定位。用戶根據(jù)在測(cè)量結(jié)果表中顯示的值,可以進(jìn)一步分析該中心頻點(diǎn)的頻譜或測(cè)量其他的調(diào)制特征值。可見,通過(guò)虛擬儀器的思想,將軟硬件結(jié)合使用,可以極大地?cái)U(kuò)充硬件的功能。
4 結(jié)束語(yǔ)
在系統(tǒng)的開發(fā)中,采用了C++中類的思想,使得系統(tǒng)具備了良好的擴(kuò)展性,對(duì)于不同的儀器接口方式,可以最大限度地利用已開發(fā)的代碼段。同時(shí),也增強(qiáng)了系統(tǒng)的可維護(hù)性,在實(shí)際應(yīng)用中取得了不錯(cuò)的效果。在采用了雙線程工作機(jī)制后,充分發(fā)揮了儀器的性能,比單線程的速度提高了50%。
評(píng)論