设为首页 收藏本站 English

当前位置: 众友五金网 >> 隔离柱

基于MSComm控件的异步串行通信技术0吊车

发布时间:2022-11-23 19:34:59

基于MSComm控件的异步串行通信技术

基于MSComm控件的异步串行通信技术 2011年12月09日 来源: 1引言 串行数据通信所用帧数少,传输距离远,尤其在远距离传输时,节约成本明显,应用极为广泛。然而,随着微机操作系统逐渐舍弃DOS,串口通信的编程却比原来复杂了。 DOS下的串行通信方法已不宜再用,而在32位模式下,一般有4种方法:直接嵌入汇编(包括对端口读写的C函数)、Win32 API编程、使用第三方编写的串行通信类、利用现有控件MSComm通信。其中,第1种方法最为简单,但不能运行在NT内核的Windows操作系统下,第2种API编程使用难度较大,而第3方串口的通信类有时不易获取。所以,最后一种方法MSComm控件通信比较实用。而且,该控件在VC,VB,Delphi中均可使用。2MSComm控件介绍 MSComm控件是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,通过串行端口传输和接收数据,为应用程序提供串行通信功能。他在串口编程时非常方便,他实际上是调用了API函数,但程序员不必再了解复杂的API函数就可控制串行通信。通信的过程,实际上是对属性的操作和对控件事件的响应。2.1MSComm控件的属性 MSComm控件在VC中包含26个属性,其中重要的属性有:CommPort为设置并返回连接的串行端口号;Settings为设置并返回波特率、奇偶校验、数据位、停止位;PortOpen为返回通信端口的状态或打开关闭端口;Input为返回并删除接收缓冲区中的数据流;OutPut为往传输缓冲区写数据流(文本数据或二进制数据)等。通过对属性的操作,就可以完成串行口的查询、设置及通信。2.2MSComm控件的事件 控件只有一个OnComm事件,在发生通信事件或错误时,将触发该事件,CommEvent属性的值将被改变。如果有必要,可以检查 CommEvent属性的值。由于通信(特别是通过电话线的通信)是不可预料的,捕捉这些事件和错误将有助于使应用程序对这些情况做出正确的处理。3MSComm控件在VC中的基本用法 把控件插入到工程中:在VC++环境下,建立MFC类库工程,打开: “Project→Add to Project→Component and Controls→Registered ActiveXControls找到Microsoft Communication Control,Version 6.0控件,插入到当前工程,在当前工程中就创建了类CMScomm,类的头文件mscommh和主文件mscommcpp自动加入到当前工程中。 如果工程文件是基于对话框的,或其视类是基于CformView的,CMScomm和常规控件的用法基本一样。 如果工程文件不属于以上情况,应先在View→ID=Source Symbols选项中,创建一个新的资源符号,在主类(可以是视类)中,添加一个CMScomm型的变量,然后调用该变量的Create成员函数把该变量与上面创建的资源符号关联起来,最后就可以用该变量对串口进行操作了。针对上面的情况(假设新建资源符号为ID_COMMCTRL),应有以下操作: 在视类的头文件中,添加声明语句: 接下来就可用m_Com变量对端口进行各种操作了。4在实际中的应用4.1接口连接 智能液晶显示界面和单片机等微处理器系统配合使用,实现强大的显示功能,该显示界面本身带有微处理器,具有预置256色BMP图像的功能,图像数据存储于显示界面自带的Flash闪存中。由于用户的需要不同,预置画面要随时可以更新,为此要开发相应的软件系统,通过串口随时可以把PC机的图像数据传输到显示界面。接口连接关系如图1所示。 由于通信距离较近,采用串行口直接相连方式(否则,需要用调制解调器)。通信口选择微机的COM1或COM2标准RS232异步通信接口。智能界面板载128 B的缓冲区,采用了DSR硬件握手,微机以单工串行的通信方式向智能界面发送数据。接收程序用汇编语言编写,采用1位起始位、1位停止位、8位数据位、无校验位的异步串行通信方式,上电后处于待接收命令状态。在通信过程中,如果智能界面的微处理器忙,他就会置DTR(微机的DSR)为RS232标准低电平(这里为8 V),微机通过判断,暂停发送数据,等智能界面的微处理器闲时,他又置DSR为高(这里为-8 V),微机恢复发送数据。微机的通信程序用VC 6.0的MFC类库编程,使用MSComm控件对串口进行管理及发送数据。4.2软件的编写4.2.1初始化设置 建立一个名为MyCom的工程文件,参照上一部分对MSComm控件进行处理,在视类CmyCom中得到可使用的CMSomm型变量m_Com。 在视类的OnInitialUpdate()函数中,进行控件的初始化,加入如下语句:

合肥肤康皮肤病医院联系方式

福建新生儿癫痫医院

山西长峰血管瘤医院介绍

石家庄脆甲症医院

深圳肤康皮肤病医院介绍

友情链接