基于声卡的双通道实时信号采集处理系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于声卡的双通道实时信号采集处理系统设计
韩红帮1,解永刚2,张恒云3,杨亚彪1,李海雁
1
(1.昆明学院现代教育技术中心,云南昆明650214;2.昆明学院资产管理与设备处,云南昆明650214;
3.昆明学院化学科学与技术系,云南昆明
650214)
摘要:采用声卡代替商用数据采集卡,利用Visual C++软件编程技术,设计了基于声卡的双通道实时信号采集处理系统,该系统能够实现25kHz 范围内双路信号的实时采集、实时分析,所采集数据的存储和网络发送等功能,系统实用性较强,可广泛应用于各高校实验室及实时语音信号处理等领域。
关键词:声卡;信号采集;信号处理;系统设计中图分类号:TP274.2
文献标识码:A
文章编号:1674-6236(2013)02-0001-03
Design of double -channel real -time signal collecting and disposal system
based on sound card
HAN Hong -bang 1,XIE Yong -gang 2,ZHANG Heng -yun 3,YANG Ya -biao 1,LI Hai -yan 1
(1.The Center of Modern Education Technology ,Kunming University ,Kunming 650214,China ;
2.Office of Asset and Equipment Management ,Kunming University ,Kunming 650214,China ;
3.The Department of Chemistry ,Kunming University ,Kunming 650214,China )
Abstract:This article aims at the design of double -channel real -time signal collecting and disposal system based on sound card by means of replacing commercial data collecting card with sound card ,with the application of Visual C++software programming technology.This system is capable of the real -time collecting ,analysis ,storage and online transmitting of the double -channel signals within the range of 25kHz.And the author believes that this system is of high practical applicability which ensures its full use in university laboratories and other certain fields like real -time voice signal deposal.
Key words:sound card ;signal collecting ;signal disposal ;system design
收稿日期:2012-09-22
稿件编号:201209163
基金项目:云南省教育厅科学研究基金项目(2011Y238)
作者简介:韩红帮(1977—),男,云南曲靖人,硕士,实验师。
研究方向:现代教育技术。
在高校教学和科研实践工作中,常常需要对一些信号进行采集分析处理,但由于经费不足等原因许多实验室无相应仪器设备,或者存在设备数量较少,功能单一等问题,不能很好地满足教学实验和科研实践要求。
要实现信号采集,就需要数据采集卡的支持,而市场上数据采集卡价格比较昂贵,不可能在实验室中普遍配置使用。
目前声卡已成为多媒体计算机的一个标准配置,它是一个非常优秀的音频信号采集系统,其最高采样率可达192
kHz ,量化精度可选择8比特、16比特和24比特,支持双通道
模式,能够无失真采集25kHz 以下信号。
在采样频率要求不高的情况下,可以利用计算机声卡作为数据采集卡,利用计算机CPU 作为信号处理器,通过软件编程实现常规信号实时采集分析处理[1]。
本文设计的系统不仅能满足教学工作和科研实践要求,还能根据不同应用需求灵活方便的添加信号处理软件模块,实现采集信号的实时处理。
1系统硬件结构
声卡一般有Mic In 和Line In 两个输入插孔,待采集信号
可以通过这两个插孔输入到声卡。
两个插口的区别是:1)MicIn 接口有前置放大器,容易引入噪声且会导致信号过负荷,而
LineIn 接口噪声干扰小且动态特性良好;2)MicIn 接口有4kHz
的前置低通滤波器,仅适合话筒信号输入,而Line In 接口前置低通滤波器带宽范围为25kHz ,实用信号范围更广。
声卡用作数据采集卡时一般选择Line in 口为信号输入接口[2-3]。
在本文系统中待采集信号分别以左右声道方式同时从Line in 口输入。
2系统软件编程技术
声卡作为数字采集卡使用,首先必须对其编程控制并连
续不断的获取AD 采样数据。
其软件编程接口有几种可供选择,首先,声卡是一种多媒体设备,可以用MCI (Media Control
Interface )命令来控制声卡,MCI 提供了一组与设备无关的控
制命令,是一种访问多媒体设备的高层次方法。
但是该方法
电子设计工程
Electronic Design Engineering
第21卷
Vol.21
第2期No.22013年1月Jan.2013
-1-
《电子设计工程》2013年第2期
不够灵活,无法在录音的过程中访问内存中的采样数据,只有在录音完成后通过访问录音文件才可以得到采样数据,另外,声卡在采样过程中存取文件需要耗费时间,有可能造成采样数据的断续,显然该方法不能满足信号实时采集的要求。
其次,Windows 低级波形音频函数提供了对声卡最大灵活性的操作,它允许在采样过程中实时访问内存中每个采样数据,能很好地满足实时采集处理要求[4]。
2.1双路信号实时采集实现原理
实现声卡采集数据的实时性、连续性和可靠性是软件设
计的关键问题。
本文软件系统中,通过直接调用Windows 最底层波形音频接口函数,实现声卡的编程控制,系统中采用了多线程多缓冲技术,即声卡采集与数据处理使用不同的工作线程,同时给声卡提供多个用于承载采集数据的缓冲区,在同一时刻部分缓冲区供声卡采集线程装载数据的同时,另外已经装满数据的缓冲区供数据处理线程处理,从而使得信号采集和数据处理工作同时进行,有效保证了采集数据的连续性和信号处理的实时性
[5-6],其原理框图如图1所示。
2.2声卡软件编程
Windows 以动态链接库Mmsystem.dll 的形式提供低级波
形音频函数,用以控制声卡实现信号的正确采集,在软件编程中采用面向对象的思想,将声卡实时采集功能封装成专门的类CSoundIn ,以下从代码的角度给出声卡采集模块的软件实现过程[7]。
1)设置声卡基本参数。
先定义WAVEFORMATEX 结构
变量m_Format ,设置声卡采样数据格式、采样率、采样位数、通道数以及缓冲大小。
具体代码为:
m_Format.wFormatTag =WAVE_FORMAT_PCM ;//设置
采样的编码方式
m_BufferSize
=9600;//设置缓冲区大小SetBitsPerSample (16);
//设置采样位数SetSamplesPerSecond (16000);//采样率设置SetNumberOfChannels (1);
//采样声道数设置
缓冲区设置不能太大也不能太小,太大时信号采集的实时性受到影响,太小时采集的信号有可能来不及处理就被覆盖了,从而导致数据不连续,起不到缓冲的作用。
2)打开声卡设备,添加数据缓冲区,开始数据采集,主要
代码如下:
bool CSoundIn::Start (){
//基于回调函数的方式打开录制设备
mmReturn=::waveInOpen (&m_hRecord ,WAVE_MAPPER ,&m_Format ,
(DWORD )waveInProc ,
(DWORD )this ,
CALLBACK_FUNCTION );
if (mmReturn )return FALSE ;else {
//准备并加入多个供录制的数据缓冲区AddInputBufferToQueue ();//调用waveInStart ()开始录音
mmReturn=::waveInStart (m_hRecord );
if (mmReturn )return FALSE ;m_bRecording =true ;}}
其中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 ()将装满数据的缓冲区及时回调供用户线程实时分析处理,同时将提取数据后的空缓冲区重新加入到采集缓冲队列中,继续循环使用。
具体代码为:
void CSoundIn::waveInProc (HWAVEIN hwi ,UINT uMsg ,DWORD
dwInstance ,DWORD dwParam1,DWORD dwParam2){
MMRESULT mmReturn =0;
CSoundIn *pSound =(CSoundIn *)dwInstance ;LPWAVEHDR pHdr =(LPWAVEHDR )dwParam1;if (uMsg ==MM_WIM_DATA ){
//将录制好的数据缓冲回调到处理类中进行处理pSound->DataFromSoundIn ((BOOLEAN*)pHdr->lpData ,
//将缓冲重新加入缓冲队列中
pHdr->dwBufferLength ,pSound->m_pOwner );
mmReturn =::waveInAddBuffer (pSound ->m_hRecord ,pHdr ,sizeof (WAVEHDR ));
if (mmReturn )return ;}}
图1
声卡实时采集原理框图
Fig.1Schematic diagram of sound card real -time collecting
4)当采集结束的时候,关闭声卡,释放缓冲队列,正常退
出声卡采集模块的工作。
3系统实际应用
如图2所示为本文设计的软件系统对数字移动无线电
(DMR )集群通信系统C4FM 调制方式信号进行双通道实时采集处理的运行情况。
该系统实现了双路C4FM 信号的实时采集,并对采集信号的波形和频谱进行了实时显示,如图所示系统提供了最多4个显示终端8个显示通道(每个界面中可以以不同的颜色同时显示两种数据信息),其中显示终端数目和每个显示终端要显示的数据信息用户根据需要自由配置。
系统对左右声道采集和处理所得数据量,信号强度等进行实时显示。
信号处理模块实现了C4FM 信号的实时解调以及对其承载信息的实时还原。
同时,对采集到的样点数据和处理结果,可以通过软件左下角的“系统设置”按钮切换到“系统设置”属性页进行设置,系统给出了对其实时存储和网络发送的接口,方便获取信号采集数据,以更好的满足教学实验和科研实践需求。
如图3所示为系统对双路4FSK 信号进行实时采集处理的运行情况。
在该应用中,系统实现了4FSK 信号的实时采集、解调等处理。
在该系统平台基础上,紧密结合软件编程技术,实现了多种信号的采集处理,现已完成了多个教学实验,取得了很好的效果。
4结束语
采用声卡代替商用数据采集卡,利用Visual C++软件编
程技术,设计了基于声卡的双通道实时信号采集处理系统,实现了25kHz 范围内双路信号实时采集分析以及采集数据的文件存储和网络发送等功能。
充分体现了声卡作为数据采集卡具有价格低廉、系统灵活的优越性,其性能稳定,界面友好,接口方便,有效地解决了实验室采集设备不足、专用数据采集卡价格昂贵等问题,具有广泛的推广应用价值。
参考文献:
[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 implementation based on multi -buffer[J].Computer Engineering ,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.
图3
系统对双路4FSK 调制信号实时采集处理
Fig.3
Real -time collecting and disposal of double -channel 4FSK
modulating signals
图2
系统对双路DMR 系统之C4FM 信号实时采集处理
Fig.2
Real -time collecting and disposal of C4FM signals from double -channel DMR
system
韩红帮,等基于声卡的双通道实时信号采集处理系统设计
-3-。