首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于Windows CE的遥控遥测警报系统的设计
来源:本站整理  作者:佚名  2009-04-07 14:15:04




Windows CE的串行口通信程序
  在Visual C++中实现串口通信可以简单地使用MSCOMM控件,但是在Embedded Visual C++中没有此控件,所以串口的实现相对复杂。但是Win CE提供了丰富的API函数库,在EVC的编辑环境中可以使用API函数来实现嵌入式系统控制器和无线数传模块的通信。具体过程是首先对串口进行初始化,其中包括使用CreateFile函数打开存在且没有被占用的串口资源,设置设备的属性例如波特率,数据位数,校验方式等。然后设置串口的读写时间,指定端口监测的事件集。在串口的读写过程中,因为写是可以控制的,而读的时候无法确定数据什么时候能收到,所以可以在程序的主线程中写数据,同时创建一个辅助线程专门用来读数据,当有数据需要发送时,使用WriteFile函数向已打开的串口写需要发送数据。而在辅助线程中,用WaitCommEvent来检测线路状态,当检测到收到一个字符的事件发生时调用ReadFile函数对串口进行读操作。读取数据后,为了触发事件响应以完成数据处理,可以在辅助线程中使用PostMessageBox函数向应用程序主窗体类邮递一个自定义消息,这样就可以在主线程中完成消息响应过程。
  值得注意的是Win CE操作系统是一种UNICODE环境它只支持UNICODE的应用程序和控件,这也是为什么同样是32位机,具有基本类似的API函数,很多在Windows下能运行的控件或类在WINCE环境中无法正常工作的原因。所以在进行串口数据发送的时候需要把数据由UNICODE字符串转换为ANSI字符串,可以使用API函数,WideCharToMulitByte进行转换。
  另外WINCE操作系统中不支持重叠I/O模式,所以在打开串口的时候需要选择以非重叠I/O方式打开,但是在同步方式下如果有一个通讯API在操作,另一个会被阻塞,直到上一个操作完成,所以当读数据的线程停留在WaitCommEvent的时候,WritFile就无法继续执行。为了解决此问题需要在调用WritFile函数之前使用TerminateThread函数先终止写线程,在发送完数据后再次创建同样的写线程用来等待数据接收事件。因为无线数传模块就是被设计成使用半双工方式进行数据传输的,所以使用非重叠方式是合理的。
  系统进行警报发放时,由控制中心向终端发送数据包,数据包被定义为如下格式:

终端接收到数据头后,判断设备地址是否为本机地址,如果是则读取命令,根据命令字,发送不同的警报,如果地址不是本机地址则丢弃数据包。
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秒的时间能完成一个终端设备的检测
结语
  本设计完成了对遥控遥测警报系统中心控制器的硬件结构的设计,并在嵌入式硬件平台的基础上,开发了控制中心和终端的应用程序。新的系统更好的满足了用户的,同时控制器体积变小了,可靠性增加了。不过,由于系统中无线通信模块无法达到太高的波特率,导致系统检测时间比较长,在这一点有待进一步改进。

上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:206,093.80000 毫秒