韓紅幫,解永剛,張恒云,楊亞彪,李海雁
(1.昆明學(xué)院 現(xiàn)代教育技術(shù)中心,云南 昆明 650214;2.昆明學(xué)院 資產(chǎn)管理與設(shè)備處,云南 昆明 650214;3.昆明學(xué)院 化學(xué)科學(xué)與技術(shù)系,云南 昆明 650214)
在高校教學(xué)和科研實(shí)踐工作中,常常需要對一些信號進(jìn)行采集分析處理,但由于經(jīng)費(fèi)不足等原因許多實(shí)驗(yàn)室無相應(yīng)儀器設(shè)備,或者存在設(shè)備數(shù)量較少,功能單一等問題,不能很好地滿足教學(xué)實(shí)驗(yàn)和科研實(shí)踐要求。要實(shí)現(xiàn)信號采集,就需要數(shù)據(jù)采集卡的支持,而市場上數(shù)據(jù)采集卡價格比較昂貴,不可能在實(shí)驗(yàn)室中普遍配置使用。
目前聲卡已成為多媒體計(jì)算機(jī)的一個標(biāo)準(zhǔn)配置,它是一個非常優(yōu)秀的音頻信號采集系統(tǒng),其最高采樣率可達(dá)192 kHz,量化精度可選擇8比特、16比特和24比特,支持雙通道模式,能夠無失真采集25 kHz以下信號。在采樣頻率要求不高的情況下,可以利用計(jì)算機(jī)聲卡作為數(shù)據(jù)采集卡,利用計(jì)算機(jī)CPU作為信號處理器,通過軟件編程實(shí)現(xiàn)常規(guī)信號實(shí)時采集分析處理[1]。
本文設(shè)計(jì)的系統(tǒng)不僅能滿足教學(xué)工作和科研實(shí)踐要求,還能根據(jù)不同應(yīng)用需求靈活方便的添加信號處理軟件模塊,實(shí)現(xiàn)采集信號的實(shí)時處理。
聲卡一般有Mic In和Line In兩個輸入插孔,待采集信號可以通過這兩個插孔輸入到聲卡。兩個插口的區(qū)別是:1)MicIn接口有前置放大器,容易引入噪聲且會導(dǎo)致信號過負(fù)荷,而LineIn接口噪聲干擾小且動態(tài)特性良好;2)MicIn接口有4 kHz的前置低通濾波器,僅適合話筒信號輸入,而Line In接口前置低通濾波器帶寬范圍為25 kHz,實(shí)用信號范圍更廣。聲卡用作數(shù)據(jù)采集卡時一般選擇Line in口為信號輸入接口[2-3]。在本文系統(tǒng)中待采集信號分別以左右聲道方式同時從Line in口輸入。
聲卡作為數(shù)字采集卡使用,首先必須對其編程控制并連續(xù)不斷的獲取AD采樣數(shù)據(jù)。其軟件編程接口有幾種可供選擇,首先,聲卡是一種多媒體設(shè)備,可以用MCI(Media Control Interface)命令來控制聲卡,MCI提供了一組與設(shè)備無關(guān)的控制命令,是一種訪問多媒體設(shè)備的高層次方法。但是該方法不夠靈活,無法在錄音的過程中訪問內(nèi)存中的采樣數(shù)據(jù),只有在錄音完成后通過訪問錄音文件才可以得到采樣數(shù)據(jù),另外,聲卡在采樣過程中存取文件需要耗費(fèi)時間,有可能造成采樣數(shù)據(jù)的斷續(xù),顯然該方法不能滿足信號實(shí)時采集的要求。其次,Windows低級波形音頻函數(shù)提供了對聲卡最大靈活性的操作,它允許在采樣過程中實(shí)時訪問內(nèi)存中每個采樣數(shù)據(jù),能很好地滿足實(shí)時采集處理要求[4]。
實(shí)現(xiàn)聲卡采集數(shù)據(jù)的實(shí)時性、連續(xù)性和可靠性是軟件設(shè)計(jì)的關(guān)鍵問題。本文軟件系統(tǒng)中,通過直接調(diào)用Windows最底層波形音頻接口函數(shù),實(shí)現(xiàn)聲卡的編程控制,系統(tǒng)中采用了多線程多緩沖技術(shù),即聲卡采集與數(shù)據(jù)處理使用不同的工作線程,同時給聲卡提供多個用于承載采集數(shù)據(jù)的緩沖區(qū),在同一時刻部分緩沖區(qū)供聲卡采集線程裝載數(shù)據(jù)的同時,另外已經(jīng)裝滿數(shù)據(jù)的緩沖區(qū)供數(shù)據(jù)處理線程處理,從而使得信號采集和數(shù)據(jù)處理工作同時進(jìn)行,有效保證了采集數(shù)據(jù)的連續(xù)性和信號處理的實(shí)時性[5-6],其原理框圖如圖1所示。
圖1 聲卡實(shí)時采集原理框圖Fig.1 Schematic diagram of sound card real-time collecting
Windows以動態(tài)鏈接庫Mmsystem.dll的形式提供低級波形音頻函數(shù),用以控制聲卡實(shí)現(xiàn)信號的正確采集,在軟件編程中采用面向?qū)ο蟮乃枷?,將聲卡?shí)時采集功能封裝成專門的類CSoundIn,以下從代碼的角度給出聲卡采集模塊的軟件實(shí)現(xiàn)過程[7]。
1)設(shè)置聲卡基本參數(shù)。先定義WAVEFORMATEX結(jié)構(gòu)變量m_Format,設(shè)置聲卡采樣數(shù)據(jù)格式、采樣率、采樣位數(shù)、通道數(shù)以及緩沖大小。具體代碼為:
緩沖區(qū)設(shè)置不能太大也不能太小,太大時信號采集的實(shí)時性受到影響,太小時采集的信號有可能來不及處理就被覆蓋了,從而導(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ù)給聲卡添加多個供存儲數(shù)據(jù)的緩沖區(qū)。
3)通過回調(diào)函數(shù)實(shí)時獲取采集數(shù)據(jù)。從上一步的waveIn Open()函數(shù)具體參數(shù)可知,采用了回調(diào)函數(shù)的方式實(shí)時獲取聲卡采樣數(shù)據(jù),當(dāng)聲卡緩沖隊(duì)列中有裝滿數(shù)據(jù)的緩沖區(qū)時,操作系統(tǒng)會自動調(diào)用回調(diào)函數(shù)waveInProc()將裝滿數(shù)據(jù)的緩沖區(qū)及時回調(diào)供用戶線程實(shí)時分析處理,同時將提取數(shù)據(jù)后的空緩沖區(qū)重新加入到采集緩沖隊(duì)列中,繼續(xù)循環(huán)使用。具體代碼為:
4)當(dāng)采集結(jié)束的時候,關(guān)閉聲卡,釋放緩沖隊(duì)列,正常退出聲卡采集模塊的工作。
如圖2所示為本文設(shè)計(jì)的軟件系統(tǒng)對數(shù)字移動無線電(DMR)集群通信系統(tǒng)C4FM調(diào)制方式信號進(jìn)行雙通道實(shí)時采集處理的運(yùn)行情況。該系統(tǒng)實(shí)現(xiàn)了雙路C4FM信號的實(shí)時采集,并對采集信號的波形和頻譜進(jìn)行了實(shí)時顯示,如圖所示系統(tǒng)提供了最多4個顯示終端8個顯示通道(每個界面中可以以不同的顏色同時顯示兩種數(shù)據(jù)信息),其中顯示終端數(shù)目和每個顯示終端要顯示的數(shù)據(jù)信息用戶根據(jù)需要自由配置。系統(tǒng)對左右聲道采集和處理所得數(shù)據(jù)量,信號強(qiáng)度等進(jìn)行實(shí)時顯示。信號處理模塊實(shí)現(xiàn)了C4FM信號的實(shí)時解調(diào)以及對其承載信息的實(shí)時還原。同時,對采集到的樣點(diǎn)數(shù)據(jù)和處理結(jié)果,可以通過軟件左下角的“系統(tǒng)設(shè)置”按鈕切換到“系統(tǒng)設(shè)置”屬性頁進(jìn)行設(shè)置,系統(tǒng)給出了對其實(shí)時存儲和網(wǎng)絡(luò)發(fā)送的接口,方便獲取信號采集數(shù)據(jù),以更好的滿足教學(xué)實(shí)驗(yàn)和科研實(shí)踐需求。
圖2 系統(tǒng)對雙路DMR系統(tǒng)之C4FM信號實(shí)時采集處理Fig.2 Real-time collecting and disposal of C4FM signals from doublechannel DMR system
如圖3所示為系統(tǒng)對雙路4FSK信號進(jìn)行實(shí)時采集處理的運(yùn)行情況。在該應(yīng)用中,系統(tǒng)實(shí)現(xiàn)了4FSK信號的實(shí)時采集、解調(diào)等處理。
圖3 系統(tǒng)對雙路4FSK調(diào)制信號實(shí)時采集處理Fig.3 Real-time collecting and disposal of double-channel 4FSK modulating signals
在該系統(tǒng)平臺基礎(chǔ)上,緊密結(jié)合軟件編程技術(shù),實(shí)現(xiàn)了多種信號的采集處理,現(xiàn)已完成了多個教學(xué)實(shí)驗(yàn),取得了很好的效果。
采用聲卡代替商用數(shù)據(jù)采集卡,利用Visual C++軟件編程技術(shù),設(shè)計(jì)了基于聲卡的雙通道實(shí)時信號采集處理系統(tǒng),實(shí)現(xiàn)了25 kHz范圍內(nèi)雙路信號實(shí)時采集分析以及采集數(shù)據(jù)的文件存儲和網(wǎng)絡(luò)發(fā)送等功能。充分體現(xiàn)了聲卡作為數(shù)據(jù)采集卡具有價格低廉、系統(tǒng)靈活的優(yōu)越性,其性能穩(wěn)定,界面友好,接口方便,有效地解決了實(shí)驗(yàn)室采集設(shè)備不足、專用數(shù)據(jù)采集卡價格昂貴等問題,具有廣泛的推廣應(yīng)用價值。
[1]劉世剛,劉鋒.基于聲卡的QPSK信號的實(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),劉哲.基于聲卡的音頻信號采集與分析系統(tǒng)設(shè)計(jì)[J].電子測試,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í)現(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]葉向陽,黃國策,余侃民,等.計(jì)算機(jī)聲卡在實(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.