微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于单片机的无线电子点菜系统硬件方案设计

基于单片机的无线电子点菜系统硬件方案设计

时间:09-14 来源:互联网 点击:

4.2 串行口调试工具

串行口调试工具是用微软公司的visual c++6.0[20][21]开发的。几乎所有世界级的软件,从业界领先的Web浏览器到面向任务的企业应用,都是使用Microsoft Visual C++开发系统来开发的。要用C++来开发Windows和Web上的高性能应用程序,Visual C++是效率最高的首选工具。Visual C++ 6.0在不牺牲灵活性、性能和控制力度的同时,给C++带来了更高水平的生产效率。它具有可视化的界面,封装了大量的类,使界面制作变的很简单,使用它可以方便快捷地开发Windows环境下的应用程序。visual c++6.0专门为串行口通信提供了Mscomm[20][21]控件,使用该控件程序员不必花时间去了解比较复杂的API函数,通过简单修改控件的属性和使用控件提供的方法就可以实现对串口的配置,完成串口发送和接收数据。
4.2.1串行通信的基本原理
串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。 在Windows环境下,串口是系统资源的一部分。 应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。32位下串口通信程序可以用两种方法实现:利用ActiveX控件;使用API通信函数。在本次课程设计中,所用到的是MFC的MSComm控件,下面先将这个关键的控件做一下简单的介绍。
Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,为应用程序提供串行通信功能,它为应用程序提供了通过串行接口收发数据的简便方法。MSComm控件在串口编程时非常方便,其实际上是调用了API函数,但我们不必再了解复杂的API函数就可控制串行通信。通信的过程,实际上是对属性的操作和对控件事件的响应。
在Windows操作系统中,串行通信采用”事件通知”方式,支持数据按块传送。进行通信时,Windows开辟一个用户定义的输入输出缓冲区,每接收一个字符就产生一个低级硬件中断,串行驱动程序立即取得控制权,并将字符放入输入数据缓冲区,然后将控制权返还正在运行的应用程序。如果输入数据缓冲区满了,驱动程序用当前定义的流控制机制通知发送方停止发送数据。发送数据也采用类似的处理方式,应用程序将需要发送的数据放入输出数据缓冲区,串口每发送一个字符就产生一个低级硬件中断。
Visual C++ 6.0通信控件Mscomm提供了功能完善的串口数据的发送和接收功能,Mscomm 控件具有两种处理方式:一是事件驱动(Event-driven)方法,一是查询法。
1)事件驱动方式。当通信事件发生时,MSCOMM控件会触发OnComm事件,调用者可以捕获该事件,通过检查其CommEvent属性便可确认发生的是哪种事件或错误,从而进行相应的处理。这种方法的优点是响应及时、可靠性高。
2)查询方式。在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。如果应用程序较小,这种方法可能更可取。例如,如果写一个简单的电话拨号程序,则没有必要每接收1个字符都产生事件,因为惟一等待接收的字符是调制解调器的”确定”响应。
在使用MSCOMM控件时,1个MSCOMM控件只能同时对应1个串口。如果应用程序需要访问和控件多个串口,那么必须使用多个MSCOMM控件。
在VC++中,MSCOMM控件只对应着1个C++类–CMSComm。由于MSCOMM控件本身没有提供方法,所以CMSComm类除了Create()成员函数外,其他的函数都是Get/Set函数对,用来获取或设置控件的属性。MSCOMM控件也只有1个OnComm事件,用来向调用者通知有通信事件发生。
MSCOMM控件有许多很重要的属性,限于篇幅只给出几个较为重要和常用的属性。

表4.3 MSCOMM控件的重要属性
属 性 说 明
CommPort 通信端口号
Settings 以字符串形式表示的波特率、奇偶校验、数据位
PortOpen 通信端口的状态,打开或是关闭
Input 接收数据
Output 发送数据
InputMode 接收数据的类型:0为文本;1为二进制

表4.4 程序中用到的所有控件,以及它们的ID
控件 ID 标题
按钮 ID_SEND 发送
按钮 ID_CLEAR 清空
编辑框 IDC_EDIT_SEND
编辑框 IDC_EDIT_RCV
静态文本 IDC_STATIC 接收缓冲区
静态文本 IDC_STATIC 发送缓冲区
组框 IDC_STATIC 端口选择
单选按钮 IDC_1 端口1
单选按钮 IDC_2 端口2
mscomm IDC_MSCOMM

表4.5 用到的变量和变量的类型
Control IDS Type Member
IDC_EDIT_SEND CString m_str_send
IDC_EDIT_RCV CString m_str_recv
IDC_MSCOMM CMSComm m_mscomm

Object

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top