韓紅幫,解永剛,張恒云,楊亞彪,李海雁
(1.昆明學(xué)院 現(xiàn)代教育技術(shù)中心,云南 昆明 650214;2.昆明學(xué)院 資產(chǎn)管理與設(shè)備處,云南 昆明 650214;3.昆明學(xué)院 化學(xué)科學(xué)與技術(shù)系,云南 昆明 650214)
在高校教學(xué)和科研實(shí)踐工作中,常常需要對(duì)一些信號(hào)進(jìn)行采集分析處理,但由于經(jīng)費(fèi)不足等原因許多實(shí)驗(yàn)室無(wú)相應(yīng)儀器設(shè)備,或者存在設(shè)備數(shù)量較少,功能單一等問題,不能很好地滿足教學(xué)實(shí)驗(yàn)和科研實(shí)踐要求。要實(shí)現(xiàn)信號(hào)采集,就需要數(shù)據(jù)采集卡的支持,而市場(chǎng)上數(shù)據(jù)采集卡價(jià)格比較昂貴,不可能在實(shí)驗(yàn)室中普遍配置使用。
目前聲卡已成為多媒體計(jì)算機(jī)的一個(gè)標(biāo)準(zhǔn)配置,它是一個(gè)非常優(yōu)秀的音頻信號(hào)采集系統(tǒng),其最高采樣率可達(dá)192 kHz,量化精度可選擇8比特、16比特和24比特,支持雙通道模式,能夠無(wú)失真采集25 kHz以下信號(hào)。在采樣頻率要求不高的情況下,可以利用計(jì)算機(jī)聲卡作為數(shù)據(jù)采集卡,利用計(jì)算機(jī)CPU作為信號(hào)處理器,通過軟件編程實(shí)現(xiàn)常規(guī)信號(hào)實(shí)時(shí)采集分析處理[1]。
本文設(shè)計(jì)的系統(tǒng)不僅能滿足教學(xué)工作和科研實(shí)踐要求,還能根據(jù)不同應(yīng)用需求靈活方便的添加信號(hào)處理軟件模塊,實(shí)現(xiàn)采集信號(hào)的實(shí)時(shí)處理。
聲卡一般有Mic In和Line In兩個(gè)輸入插孔,待采集信號(hào)可以通過這兩個(gè)插孔輸入到聲卡。兩個(gè)插口的區(qū)別是:1)MicIn接口有前置放大器,容易引入噪聲且會(huì)導(dǎo)致信號(hào)過負(fù)荷,而LineIn接口噪聲干擾小且動(dòng)態(tài)特性良好;2)MicIn接口有4 kHz的前置低通濾波器,僅適合話筒信號(hào)輸入,而Line In接口前置低通濾波器帶寬范圍為25 kHz,實(shí)用信號(hào)范圍更廣。聲卡用作數(shù)據(jù)采集卡時(shí)一般選擇Line in口為信號(hào)輸入接口[2-3]。在本文系統(tǒng)中待采集信號(hào)分別以左右聲道方式同時(shí)從Line in口輸入。
聲卡作為數(shù)字采集卡使用,首先必須對(duì)其編程控制并連續(xù)不斷的獲取AD采樣數(shù)據(jù)。其軟件編程接口有幾種可供選擇,首先,聲卡是一種多媒體設(shè)備,可以用MCI(Media Control Interface)命令來(lái)控制聲卡,MCI提供了一組與設(shè)備無(wú)關(guān)的控制命令,是一種訪問多媒體設(shè)備的高層次方法。但是該方法不夠靈活,無(wú)法在錄音的過程中訪問內(nèi)存中的采樣數(shù)據(jù),只有在錄音完成后通過訪問錄音文件才可以得到采樣數(shù)據(jù),另外,聲卡在采樣過程中存取文件需要耗費(fèi)時(shí)間,有可能造成采樣數(shù)據(jù)的斷續(xù),顯然該方法不能滿足信號(hào)實(shí)時(shí)采集的要求。其次,Windows低級(jí)波形音頻函數(shù)提供了對(duì)聲卡最大靈活性的操作,它允許在采樣過程中實(shí)時(shí)訪問內(nèi)存中每個(gè)采樣數(shù)據(jù),能很好地滿足實(shí)時(shí)采集處理要求[4]。
實(shí)現(xiàn)聲卡采集數(shù)據(jù)的實(shí)時(shí)性、連續(xù)性和可靠性是軟件設(shè)計(jì)的關(guān)鍵問題。本文軟件系統(tǒng)中,通過直接調(diào)用Windows最底層波形音頻接口函數(shù),實(shí)現(xiàn)聲卡的編程控制,系統(tǒng)中采用了多線程多緩沖技術(shù),即聲卡采集與數(shù)據(jù)處理使用不同的工作線程,同時(shí)給聲卡提供多個(gè)用于承載采集數(shù)據(jù)的緩沖區(qū),在同一時(shí)刻部分緩沖區(qū)供聲卡采集線程裝載數(shù)據(jù)的同時(shí),另外已經(jīng)裝滿數(shù)據(jù)的緩沖區(qū)供數(shù)據(jù)處理線程處理,從而使得信號(hào)采集和數(shù)據(jù)處理工作同時(shí)進(jìn)行,有效保證了采集數(shù)據(jù)的連續(xù)性和信號(hào)處理的實(shí)時(shí)性[5-6],其原理框圖如圖1所示。
圖1 聲卡實(shí)時(shí)采集原理框圖Fig.1 Schematic diagram of sound card real-time collecting
Windows以動(dòng)態(tài)鏈接庫(kù)Mmsystem.dll的形式提供低級(jí)波形音頻函數(shù),用以控制聲卡實(shí)現(xiàn)信號(hào)的正確采集,在軟件編程中采用面向?qū)ο蟮乃枷耄瑢⒙暱▽?shí)時(shí)采集功能封裝成專門的類CSoundIn,以下從代碼的角度給出聲卡采集模塊的軟件實(shí)現(xiàn)過程[7]。
1)設(shè)置聲卡基本參數(shù)。先定義WAVEFORMATEX結(jié)構(gòu)變量m_Format,設(shè)置聲卡采樣數(shù)據(jù)格式、采樣率、采樣位數(shù)、通道數(shù)以及緩沖大小。具體代碼為:
緩沖區(qū)設(shè)置不能太大也不能太小,太大時(shí)信號(hào)采集的實(shí)時(shí)性受到影響,太小時(shí)采集的信號(hào)有可能來(lái)不及處理就被覆蓋了,從而導(dǎo)致數(shù)據(jù)不連續(xù),起不到緩沖的作用。
2)打開聲卡設(shè)備,添加數(shù)據(jù)緩沖區(qū),開始數(shù)據(jù)采集,主要代碼如下:
其中 waveInOpen(&m_hRecord,WAVE_MAPPER,&m_Format,(DWORD)waveInProc, (DWORD)this, CALLBACK_FUNCTION)函數(shù)打開聲卡采集線程;AddInputBufferToQueue()函數(shù)通過調(diào) 用 waveInPrepareHeader (m_hRecord,m_pHdr[i], sizeof(WAVEHDR))和 waveInAddBuffer (m_hRecord, m_pHdr[i],sizeof(WAVEHDR))函數(shù)給聲卡添加多個(gè)供存儲(chǔ)數(shù)據(jù)的緩沖區(qū)。
3)通過回調(diào)函數(shù)實(shí)時(shí)獲取采集數(shù)據(jù)。從上一步的waveIn Open()函數(shù)具體參數(shù)可知,采用了回調(diào)函數(shù)的方式實(shí)時(shí)獲取聲卡采樣數(shù)據(jù),當(dāng)聲卡緩沖隊(duì)列中有裝滿數(shù)據(jù)的緩沖區(qū)時(shí),操作系統(tǒng)會(huì)自動(dòng)調(diào)用回調(diào)函數(shù)waveInProc()將裝滿數(shù)據(jù)的緩沖區(qū)及時(shí)回調(diào)供用戶線程實(shí)時(shí)分析處理,同時(shí)將提取數(shù)據(jù)后的空緩沖區(qū)重新加入到采集緩沖隊(duì)列中,繼續(xù)循環(huán)使用。具體代碼為:
4)當(dāng)采集結(jié)束的時(shí)候,關(guān)閉聲卡,釋放緩沖隊(duì)列,正常退出聲卡采集模塊的工作。
如圖2所示為本文設(shè)計(jì)的軟件系統(tǒng)對(duì)數(shù)字移動(dòng)無(wú)線電(DMR)集群通信系統(tǒng)C4FM調(diào)制方式信號(hào)進(jìn)行雙通道實(shí)時(shí)采集處理的運(yùn)行情況。該系統(tǒng)實(shí)現(xiàn)了雙路C4FM信號(hào)的實(shí)時(shí)采集,并對(duì)采集信號(hào)的波形和頻譜進(jìn)行了實(shí)時(shí)顯示,如圖所示系統(tǒng)提供了最多4個(gè)顯示終端8個(gè)顯示通道(每個(gè)界面中可以以不同的顏色同時(shí)顯示兩種數(shù)據(jù)信息),其中顯示終端數(shù)目和每個(gè)顯示終端要顯示的數(shù)據(jù)信息用戶根據(jù)需要自由配置。系統(tǒng)對(duì)左右聲道采集和處理所得數(shù)據(jù)量,信號(hào)強(qiáng)度等進(jìn)行實(shí)時(shí)顯示。信號(hào)處理模塊實(shí)現(xiàn)了C4FM信號(hào)的實(shí)時(shí)解調(diào)以及對(duì)其承載信息的實(shí)時(shí)還原。同時(shí),對(duì)采集到的樣點(diǎn)數(shù)據(jù)和處理結(jié)果,可以通過軟件左下角的“系統(tǒng)設(shè)置”按鈕切換到“系統(tǒng)設(shè)置”屬性頁(yè)進(jìn)行設(shè)置,系統(tǒng)給出了對(duì)其實(shí)時(shí)存儲(chǔ)和網(wǎng)絡(luò)發(fā)送的接口,方便獲取信號(hào)采集數(shù)據(jù),以更好的滿足教學(xué)實(shí)驗(yàn)和科研實(shí)踐需求。
圖2 系統(tǒng)對(duì)雙路DMR系統(tǒng)之C4FM信號(hào)實(shí)時(shí)采集處理Fig.2 Real-time collecting and disposal of C4FM signals from doublechannel DMR system
如圖3所示為系統(tǒng)對(duì)雙路4FSK信號(hào)進(jìn)行實(shí)時(shí)采集處理的運(yùn)行情況。在該應(yīng)用中,系統(tǒng)實(shí)現(xiàn)了4FSK信號(hào)的實(shí)時(shí)采集、解調(diào)等處理。
圖3 系統(tǒng)對(duì)雙路4FSK調(diào)制信號(hào)實(shí)時(shí)采集處理Fig.3 Real-time collecting and disposal of double-channel 4FSK modulating signals
在該系統(tǒng)平臺(tái)基礎(chǔ)上,緊密結(jié)合軟件編程技術(shù),實(shí)現(xiàn)了多種信號(hào)的采集處理,現(xiàn)已完成了多個(gè)教學(xué)實(shí)驗(yàn),取得了很好的效果。
采用聲卡代替商用數(shù)據(jù)采集卡,利用Visual C++軟件編程技術(shù),設(shè)計(jì)了基于聲卡的雙通道實(shí)時(shí)信號(hào)采集處理系統(tǒng),實(shí)現(xiàn)了25 kHz范圍內(nèi)雙路信號(hào)實(shí)時(shí)采集分析以及采集數(shù)據(jù)的文件存儲(chǔ)和網(wǎng)絡(luò)發(fā)送等功能。充分體現(xiàn)了聲卡作為數(shù)據(jù)采集卡具有價(jià)格低廉、系統(tǒng)靈活的優(yōu)越性,其性能穩(wěn)定,界面友好,接口方便,有效地解決了實(shí)驗(yàn)室采集設(shè)備不足、專用數(shù)據(jù)采集卡價(jià)格昂貴等問題,具有廣泛的推廣應(yīng)用價(jià)值。
[1]劉世剛,劉鋒.基于聲卡的QPSK信號(hào)的實(shí)時(shí)軟解調(diào)[J].今日電子,2005(6):58-60.
LIU Shi-gang,LIU Feng.Real time soft demodulation based on sound card[J].Electronic Products,2005(6):58-60.
[2]曲喜強(qiáng),劉哲.基于聲卡的音頻信號(hào)采集與分析系統(tǒng)設(shè)計(jì)[J].電子測(cè)試,2009(2):75-77.
QU Xi-qiang,LIU Zhe.Audio signal acquisition and analysis system design based on sound card[J].Electronic Test,2009(2):75-77.
[3]周愛軍,馬海瑞.基于聲卡的LabVIEW數(shù)據(jù)采集與分析系統(tǒng)設(shè)計(jì)[J].微計(jì)算機(jī)信息,2005,21(25):108-110.
ZHOU Ai-jun,MA Hai-rui.Sound card based data acquisition and analysis system in LabVlEW[J].Control&Automation,2005,21(25):108-110.
[4]趙正敏,陳良海,崔樹青,等.雙通道聲卡構(gòu)成多通道數(shù)據(jù)采集系統(tǒng)[J].電聲技術(shù),2002(11):28-30.
ZHAO Zheng-min,CHEN Liang-hai,CUI Shu-qing,et al.Double-channel sound card constitutes multi-channel data collecting system[J].Audio Engineering,2002(11):28-30.
[5]張兵.基于多緩沖區(qū)實(shí)時(shí)音頻采集和傳輸實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2006,32(12):272-273.
ZHANG Bing.Real-time audio collection and transmission implementationbasedonmulti-buffer[J].ComputerEngineering,2006,32(12):272-273.
[6]董華,易克初,田斌.一種基于聲卡的數(shù)據(jù)采集系統(tǒng)[J].山西電子技術(shù),2006(1):3-4.
DONG Hua,YI Ke-chu,TIAN Bin.A data acquisition system based on sound card[J].SHANXI Electronic Technology,2006(1):3-4.
[7]葉向陽(yáng),黃國(guó)策,余侃民,等.計(jì)算機(jī)聲卡在實(shí)時(shí)采樣監(jiān)控系統(tǒng)中的開發(fā)應(yīng)用[J].微計(jì)算機(jī)應(yīng)用,2006,27(5):582-584.
YE Xiang-yang,HUANG Guo-ce,YU Kan-min,et al.The application of soundcard in the real-time monitoring system[J].Microcomputer Applications,2006,27(5):582-584.