终端接收到数据头后,判断设备地址是否为本机地址,如果是则读取命令,根据命令字,发送不同的警报,如果地址不是本机地址则丢弃数据包。
Windows CE中声音播放程序的实现
系统的在检测时需要系统在终端进行声音播放和录入,再通过无线网络把录入的声音文件传送到控制中心。在应用程序中,声音的录入和播放使用波形音频编程接口来实现,通过这个接口可以对音频以脉冲编码调制(pulse code modulation,PCM)的方式进行压缩编码,并能使应用程序精确地控制波形音频的输入输出设备。
声音的录制过程如下:
1. 使用waveInOpen函数打开一个音频输入设备;
2. 使用WAVEHDR结构体分配录制声音时所需的内存,然后waveInPrepareHeader函数准备一个音频输入的数据头;
3. 调用waveInAddBuff函数为音频输入设备准备一个缓存数据块;
4. 使用waveInStart函数开始录制音频;
5. 录音结束时使用waveIn UnprepareHeader函数释放音频输入缓存区,并调用waveInClose函数关闭音频设备。
音频的播放过程如下:
1. 使用waveOutOpen函数打开一个音频输出设备;
2. 使用WAVEHDR结构体分配录制声音时所需的内存,然后调用waveOutPrepareHeader函数准备一个音频输出的数据头;
3. 使用waveOutWrite函数发送数据块到音频输出设备;
4. 录音结束时使用waveIn UnprepareHeader函数释放音频输入缓存区,并调用waveInClose函数关闭音频设备。
相对来说音频地录入比输出更为复杂一些。将模拟的(连续的)声音波形数字元化(离散化)的过程,主要包括采样和量化两个方面。数字音频的质量也主要取决于:采样频率和量化位数这两个重要参数。此外,声道的数目、相应的音频设备也是影响音频质量的原因。在PCM语音压缩编码中:
数据量=(采样频率×量化位数)/8(字节数) ×声道数目
应用程序录制的Wave文件中也同样有几个重要的参数来定义声音数据格式,它们是:采样方式、采样位数、采样频率和声道数。一般采样频率有8kHz、11kHz、22kHz和44kHz,采样频率越高,声音的保真性就越好,但同时也就使音频数据的存储量增大了。在本设计中采集声音只是为了检测设备的运行情况,所以对声音的质量要求不是很高,同时为了减轻网络负担,提高检测速度,设定数据格式为8kHz采样频率、8位量化、单声道。通过实验发现,采样得到音质有所下降,但是可以十分清晰地分辨警报类型的。假设我们测试设备的时间为三秒钟,那么数据量为8000×8÷8×1×3=24KB,在串行口波特率为76800bps时,加上数据包的包头、包长,大约在3~4秒的时间能完成一个终端设备的检测
结语
本设计完成了对遥控遥测警报系统中心控制器的硬件结构的设计,并在嵌入式硬件平台的基础上,开发了控制中心和终端的应用程序。新的系统更好的满足了用户的,同时控制器体积变小了,可靠性增加了。不过,由于系统中无线通信模块无法达到太高的波特率,导致系统检测时间比较长,在这一点有待进一步改进。