摘 要:采用普通PC的声卡作用数据采集卡,使用VC++开发参数可调的多功能虚拟波形发生器。该波形发生器配合已开发的示波器和频谱分析仪,已在日常教学中得到了推广应用。
关键词:VC++;声卡;波形发生
1 引 言
目前,虚拟仪器应用快速发展,采用声卡作为数据采集进行虚拟仪器开发已成为当今一种较为流行、且经济高效的开发方式。声卡作为语音信号与计算机的通用接口,其主要功能就是将所获取的模拟音频信号转换为数字信号,经过音效芯片的处理,将该数字信号转换为模拟信号输出。选择声卡来代替价格昂贵的数据采集卡主要基于以下原因:声卡价格便宜、开发成本低;即买即用,省略A/ D 卡的硬件开发,缩短开发周期;灵活性好,可以在Windows操作系统下使用,且可用通用的软件开发工具对其进行开发。
作者在VC++6.0的开发环境下,使用声卡进行数据采集,利用Window低层音频服务函数,结合前期开发的虚拟示波器和频谱分析仪,完成了参数可调的多功能虚拟波形发生器的设计。为避免在声卡的各种测量中出现错漏,作者采用真实示波器和MATLAB软件进行过多次实验加以校准。由于是基于通用多媒体计算机进行的开发,故软件通用性强,无需特殊硬件支持,成本低,十分便于推广,是课堂演示实验以及课外科技实验的有效实验工具。
2 Windows低层音频编程原理
考虑到需对声卡音频波形进行实时处理,作者采用Windows的低层音频函数。低层音频函数可直接与声卡驱动程序进行通信, 提供了对声卡的最大灵活性操作, 允许在采样过程中随机地访问内存中的每个采样数据,可克服使用高层音频服务的MCI命令所遇到的实时性问题。
用低层音频函数控制声卡进行数据采集的步骤和函数:(1)获取音频输入设备数量WaveInGetNumDevs;(2)获取音频输入设备性能WaveInGetDevCaps;(3)打开音频输入设备WaveInOpen;(4)为音频输入设备准备缓冲区WaveInPrepareHeader;(5)添加缓冲区WaveInAddBuffer;(6) 开始数据采集WaveInStart;(7)采集结束后关闭音频输入设备WaveInStop、清除音频输入的缓冲区WaveInUnrepareHeader。
3 基于声卡的虚拟波形发生器的实现
多功能虚拟波形发生器的波形选择界面如图1所示,仪器界面图2所示。如图2所示,可在仪器左边窗口查看信号时域波形的同时,通过仪器右边窗口查看其频谱和相位谱(有连续、离散、分贝三种视图选择)。用户可通过单击仪器工具栏上按钮,或通过波形产生菜单进行波形产生操作。该波形发生器可产生9种参数可调的常见波形:正弦信号,方波,三角波,高斯白噪声,调幅(AM),调频(DSB),幅移键控(ASK),频移键控(FSK)以及相移键控(PSK)。
图1 波形产生选择对话框 图2 多功能波形发生器界面
4 结束语
在掌握声卡工作原理的基础上,采用VC++作为开发语言,利用WINDOWS低层音频函数实现声卡的数据采集,完成了参数可调的多功能虚拟波形发生器的设计。该波形发生器配合同期开发的示波器和频谱分析仪,已在日常教学中得到了推广应用。
参考文献:
[1] 鲁莹,徐全元. 虚拟典型仪器的设计与实现[J]. 电脑知识与技术,2008,09
[2] 董华,易克初,田斌. 一种基于声卡的数据采集系统[J].山西电子技术,2006.01
[3] 胡合松,胡荣强.基于VC++的虚拟声卡示波器设计[J].武汉理工大学学报.信息与管理工程版,2006,28(5)
[4] 徐丹,胡荣强.刘柱. 基于声卡的数据采集及波形发生器设计[J]. 中国水运.2006,6(10)
[5] 李博轩.Visual C++6.0多媒体开发指南.北京:清华大学出版社,2000.36—75.
[6] 樊昌信,张甫翊,徐炳祥,吴成柯.通信原理(第5版).北京:国防工业出版社,2001.63-187.