VC++用开发串行通信程序

分类: VC.NET   出处:iocblog整理  更新时间:2010-02-23   添加到收藏  

    本文详细介绍了visual c++5.0版中有关通讯控件的使用方法,并给出了一个利用该控件编写的简单通用的通信示例程序。

关键词:串行通信       通讯控件

    随着win 95的逐步普及,程序员们越来越愿意在win95下编程,而visual c++正成为主要的开发工具。然而用vc在win95下开发串行通讯程序是程序员们经常会遇到确又令人头痛的一件事,不但要理解许多复杂的api函数,还要掌握多线程编程。令人高兴的是visual c++中提供的通讯控件帮助我们解决了这一难题,通过对这一控件的正确使用,我们可以轻松地编写出所需的串行通信程序。

    下面,我们将结合一个具体的例子来说明。本程序的编程环境是win95和visual c++5.0。这个编程示例的功能比较强,它可以由用户选定进行传输的通信端口,并设定这个端口的相关参数,包括波特率、数据位、停止位、奇偶校验和流量控制等。还具有发送数据和接收数据的双重功能。

一.   在程序中嵌入通讯控件

    启动visual c++5.0,利用mfc appwizard(exe)新建一个项目文件,并命名为commtest,在appwizard第一步选择基于对话框的应用程序类型(dialog based),在第二步将activex controls复选框选中,表示本程序支持activex控件。其他均接收缺省设置,appwizard将自动生成一个以对话框为主窗口的应用程序。下面我们将在该程序中加入通讯控件。在resource view中打开对话框(idd_commtest_dialog),将其修改为如图一所示的对话框。注意将对话框的语言属性改为chinese(p.r.c)。
单击project菜单,从菜单中选择add to project,再单击components and controls,从弹出的对话框中单击registered activex controls,然后在列表框中选择microsoft communications control,version 5.0,单击ok。这时会询问你是否加入cmscomm类,单击ok,返回后就会看到控件工具条上添加了一个通讯控件(形状如电话机),将其拖放到对话框上,同时注意到project中新增加了一个类。通过查看类mscomm的源文件mscomm.cpp,我们可以了解这个控件的属性和使用方法,其中的get…函数可以用来访问该属性的当前值,而set…函数则用来设置该属性的新值。

二.   设置通讯控件的属性值

激活通讯控件的属性对话框,一些重要的属性及其说明如表一所示:

属 性

设定值

说 明

commport

2

串口号,一般串口为鼠标所用,故用串口2

inbuffersize

1024

接收缓冲区大小

inputlen

0

从接收缓冲区读取的字节数,0表示全部读取

inputmode

1

接收数据的类型,0表示文本类型,1表示二进制类型

outbuffersize

1024

发送缓冲区大小

rthreshold

1

设定当接收几个字符时触发oncomm事件,0表示不产生事件,1表示每接收一个字符就产生一个事件 (来源www.iocblog.net)

sthreshold

0

设定在触发oncomm事件前,发送缓冲区内所允许的最少的字符数,0表示发送数据时不产生事件,1表示当发送缓冲区空时产生oncomm事件

settings

9600,n,8,1

串口的参数设置,依次为波特率、奇偶校验(n-无校验,e-偶校验,o-奇校验)、数据位数、停止位数

表1 串口属性及说明

上面表中的属性设定值是本例程中所用的值,可根据需要灵活设定。至于其它的属性可采用缺省值,其说明可参考联机帮助文件。

通讯控件的工作原理类似与中断方式,当有通讯事件发生时(如发送数据、接收数据等),就会触发oncomm事件,在该事件的处理函数中调用getcommevent()函数,通过返回值即可确定是那类事件,再做出相应的处理。(来源www.iocblog.net)

[1] [2] 下一页



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。