韓紅幫,解永剛,張恒云,楊亞彪,李海雁
(1.昆明學院 現代教育技術中心,云南 昆明 650214;2.昆明學院 資產管理與設備處,云南 昆明 650214;3.昆明學院 化學科學與技術系,云南 昆明 650214)
在高校教學和科研實踐工作中,常常需要對一些信號進行采集分析處理,但由于經費不足等原因許多實驗室無相應儀器設備,或者存在設備數量較少,功能單一等問題,不能很好地滿足教學實驗和科研實踐要求。要實現信號采集,就需要數據采集卡的支持,而市場上數據采集卡價格比較昂貴,不可能在實驗室中普遍配置使用。
目前聲卡已成為多媒體計算機的一個標準配置,它是一個非常優秀的音頻信號采集系統,其最高采樣率可達192 kHz,量化精度可選擇8比特、16比特和24比特,支持雙通道模式,能夠無失真采集25 kHz以下信號。在采樣頻率要求不高的情況下,可以利用計算機聲卡作為數據采集卡,利用計算機CPU作為信號處理器,通過軟件編程實現常規信號實時采集分析處理[1]。
本文設計的系統不僅能滿足教學工作和科研實踐要求,還能根據不同應用需求靈活方便的添加信號處理軟件模塊,實現采集信號的實時處理。
聲卡一般有Mic In和Line In兩個輸入插孔,待采集信號可以通過這兩個插孔輸入到聲卡。兩個插口的區別是:1)MicIn接口有前置放大器,容易引入噪聲且會導致信號過負荷,而LineIn接口噪聲干擾小且動態特性良好;2)MicIn接口有4 kHz的前置低通濾波器,僅適合話筒信號輸入,而Line In接口前置低通濾波器帶寬范圍為25 kHz,實用信號范圍更廣。聲卡用作數據采集卡時一般選擇Line in口為信號輸入接口[2-3]。在本文系統中待采集信號分別以左右聲道方式同時從Line in口輸入。
聲卡作為數字采集卡使用,首先必須對其編程控制并連續不斷的獲取AD采樣數據。其軟件編程接口有幾種可供選擇,首先,聲卡是一種多媒體設備,可以用MCI(Media Control Interface)命令來控制聲卡,MCI提供了一組與設備無關的控制命令,是一種訪問多媒體設備的高層次方法。但是該方法不夠靈活,無法在錄音的過程中訪問內存中的采樣數據,只有在錄音完成后通過訪問錄音文件才可以得到采樣數據,另外,聲卡在采樣過程中存取文件需要耗費時間,有可能造成采樣數據的斷續,顯然該方法不能滿足信號實時采集的要求。其次,Windows低級波形音頻函數提供了對聲卡最大靈活性的操作,它允許在采樣過程中實時訪問內存中每個采樣數據,能很好地滿足實時采集處理要求[4]。
實現聲卡采集數據的實時性、連續性和可靠性是軟件設計的關鍵問題。本文軟件系統中,通過直接調用Windows最底層波形音頻接口函數,實現聲卡的編程控制,系統中采用了多線程多緩沖技術,即聲卡采集與數據處理使用不同的工作線程,同時給聲卡提供多個用于承載采集數據的緩沖區,在同一時刻部分緩沖區供聲卡采集線程裝載數據的同時,另外已經裝滿數據的緩沖區供數據處理線程處理,從而使得信號采集和數據處理工作同時進行,有效保證了采集數據的連續性和信號處理的實時性[5-6],其原理框圖如圖1所示。

圖1 聲卡實時采集原理框圖Fig.1 Schematic diagram of sound card real-time collecting
Windows以動態鏈接庫Mmsystem.dll的形式提供低級波形音頻函數,用以控制聲卡實現信號的正確采集,在軟件編程中采用面向對象的思想,將聲卡實時采集功能封裝成專門的類CSoundIn,以下從代碼的角度給出聲卡采集模塊的軟件實現過程[7]。
1)設置聲卡基本參數。先定義WAVEFORMATEX結構變量m_Format,設置聲卡采樣數據格式、采樣率、采樣位數、通道數以及緩沖大小。具體代碼為:

緩沖區設置不能太大也不能太小,太大時信號采集的實時性受到影響,太小時采集的信號有可能來不及處理就被覆蓋了,從而導致數據不連續,起不到緩沖的作用。
2)打開聲卡設備,添加數據緩沖區,開始數據采集,主要代碼如下:


其中 waveInOpen(&m_hRecord,WAVE_MAPPER,&m_Format,(DWORD)waveInProc, (DWORD)this, CALLBACK_FUNCTION)函數打開聲卡采集線程;AddInputBufferToQueue()函數通過調 用 waveInPrepareHeader (m_hRecord,m_pHdr[i], sizeof(WAVEHDR))和 waveInAddBuffer (m_hRecord, m_pHdr[i],sizeof(WAVEHDR))函數給聲卡添加多個供存儲數據的緩沖區。
3)通過回調函數實時獲取采集數據。從上一步的waveIn Open()函數具體參數可知,采用了回調函數的方式實時獲取聲卡采樣數據,當聲卡緩沖隊列中有裝滿數據的緩沖區時,操作系統會自動調用回調函數waveInProc()將裝滿數據的緩沖區及時回調供用戶線程實時分析處理,同時將提取數據后的空緩沖區重新加入到采集緩沖隊列中,繼續循環使用。具體代碼為:

4)當采集結束的時候,關閉聲卡,釋放緩沖隊列,正常退出聲卡采集模塊的工作。
如圖2所示為本文設計的軟件系統對數字移動無線電(DMR)集群通信系統C4FM調制方式信號進行雙通道實時采集處理的運行情況。該系統實現了雙路C4FM信號的實時采集,并對采集信號的波形和頻譜進行了實時顯示,如圖所示系統提供了最多4個顯示終端8個顯示通道(每個界面中可以以不同的顏色同時顯示兩種數據信息),其中顯示終端數目和每個顯示終端要顯示的數據信息用戶根據需要自由配置。系統對左右聲道采集和處理所得數據量,信號強度等進行實時顯示。信號處理模塊實現了C4FM信號的實時解調以及對其承載信息的實時還原。同時,對采集到的樣點數據和處理結果,可以通過軟件左下角的“系統設置”按鈕切換到“系統設置”屬性頁進行設置,系統給出了對其實時存儲和網絡發送的接口,方便獲取信號采集數據,以更好的滿足教學實驗和科研實踐需求。

圖2 系統對雙路DMR系統之C4FM信號實時采集處理Fig.2 Real-time collecting and disposal of C4FM signals from doublechannel DMR system
如圖3所示為系統對雙路4FSK信號進行實時采集處理的運行情況。在該應用中,系統實現了4FSK信號的實時采集、解調等處理。

圖3 系統對雙路4FSK調制信號實時采集處理Fig.3 Real-time collecting and disposal of double-channel 4FSK modulating signals
在該系統平臺基礎上,緊密結合軟件編程技術,實現了多種信號的采集處理,現已完成了多個教學實驗,取得了很好的效果。
采用聲卡代替商用數據采集卡,利用Visual C++軟件編程技術,設計了基于聲卡的雙通道實時信號采集處理系統,實現了25 kHz范圍內雙路信號實時采集分析以及采集數據的文件存儲和網絡發送等功能。充分體現了聲卡作為數據采集卡具有價格低廉、系統靈活的優越性,其性能穩定,界面友好,接口方便,有效地解決了實驗室采集設備不足、專用數據采集卡價格昂貴等問題,具有廣泛的推廣應用價值。
[1]劉世剛,劉鋒.基于聲卡的QPSK信號的實時軟解調[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]曲喜強,劉哲.基于聲卡的音頻信號采集與分析系統設計[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數據采集與分析系統設計[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]趙正敏,陳良海,崔樹青,等.雙通道聲卡構成多通道數據采集系統[J].電聲技術,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]張兵.基于多緩沖區實時音頻采集和傳輸實現[J].計算機工程,2006,32(12):272-273.
ZHANG Bing.Real-time audio collection and transmission implementationbasedonmulti-buffer[J].ComputerEngineering,2006,32(12):272-273.
[6]董華,易克初,田斌.一種基于聲卡的數據采集系統[J].山西電子技術,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].微計算機應用,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.