没有合适的资源?快使用搜索试试~ 我知道了~
VC6.0实现串行通信的三种方法
需积分: 10 8 下载量 108 浏览量
2008-11-05
23:39:19
上传
评论
收藏 58KB DOC 举报
温馨提示
试读
14页
在Win32下,可以使用两种编程方式实现串口通信,其一是使用ActiveX控件,这种方法程序简单,但欠灵活。其二是调用Windows的API函数,这种方法可以清楚地掌握串口通信的机制,并且自由灵活。其三....
资源推荐
资源详情
资源评论
VC6.0 实现串行通信的三种方法
在工业控制中,工控机(一般都基于 平台)经常需要与智能仪表通过串口
进行通信。串口通信方便易行,应用广泛。
一般情况下,工控机和各智能仪表通过 总线进行通信。 的通信方式是半双
工的,只能由作为主节点的工控 机依次轮询网络上的各智能控制单元子节点。每次通
信都是由 机通过串口向智能控制单元发布命令,智能控制单元在接收到正确的命令后
作出应答。
在 下,可以使用两种编程方式实现串口通信,其一是使用 控件,这
种方法程序简单,但欠灵活。其二是调用 的 函数,这种方法可以清楚地掌
握串口通信的机制,并且自由灵活。本文我们只介绍 串口通信部分。
串口的操作可以有两种操作方式:同步操作方式和重叠操作方式(又称为异步操作方
式)。同步操作时, 函数会阻塞直到操作完成以后才能返回(在多线程方式中,虽然
不会阻塞主线程,但是仍然会阻塞监听线程);而重叠操作方式, 函数会立即返回,
操作在后台进行,避免线程的阻塞。
无论那种操作方式,一般都通过四个步骤来完成:
() 打开串口
() 配置串口
() 读写串口
() 关闭串口
() 打开串口
系统把文件的概念进行了扩展。无论是文件、通信设备、命名管道、邮件槽、
磁盘、还是控制台,都是用 函数 来打开或创建的。该函数的原型为:
!"#" $$"%&'"("'"("
)*'" !+$,-$$.+$!"%/01/'2"22"22"22"22"22
("1/'("31/' !"
)$&%45
%&:将要打开的串口逻辑名,如“(*6;
:指定串口访问的类型,可以是读取、写入或二者并列;
)*:指定共享属性,由于串口不能共享,该参数必须置为 7;
%/01/:引用安全性属性结构,缺省值为 + ;
1/:创建标志,对串口操作该参数必须置为 (!-!$8;
31/:属性描述,用于指定该串口是否进行异步操作,该值为
!- 8-(9! !,表示使用异步的 :(;该值为 7,表示 同步
:( 操作;
)$&%:对串口而言该参数必须置为 + ;
同步 :( 方式打开串口的示例代码:
2"22"222 !")&522::全局变量,串口句柄
2"22"222)&;#<=(*<='::(* 口
2"22"2228!!-!>8!!-$!'"::允许读和写
2"22"2227'"::独占方式
2"22"222+ '
2"22"222(!-!$8'"::打开而不是创建
2"22"2227'"::同步方式
2"22"222+ 45
2"22"222?#)&;;# !4@4
2"22"222A2"22"22"22"22"2"
2"22"22"22"2?B*3.B#<=打开 (* 失败C<=45
2"22"22"22"2/" !52"22"222
2"22"222D
2"22"222/"$+!5
重叠 :( 打开串口的示例代码:
2"22"222 !")&522::全局变量,串口句柄
2"22"222)&";#<=(*<='22::(* 口
2"22"2228!!-!>8!!-$!'"::允许读和写
2"22"2227'22::独占方式
2"22"222+ '2"2
2"22"222(!-!$8'22::打开而不是创建
2"22"222 !-$$.+$!-(* > !- 8-(9! !'"::重叠方式
2"22"222+ 45
2"22"222?#)&";;9 - !-9 +!4
2"22"222A2"22"222
2"22"22"22"22"2"?B*3.B#<=打开 (* 失败C<=45
2"22"22"22"22"2"/" !5
2"22"222D
2"22"222/"$+!5
()、配置串口
在打开通讯设备句柄后,常常需要对串口进行一些初始化配置工作。这需要通过一个
. 结构来进行。. 结构包含了诸如波特率、数据位数、奇偶校验和停止位数等信息。
在查询或配置串口的属性时,都要用 . 结构来作为缓冲区。
一般用 打开串口后,可以调用 8&& 函数来获取串口的初始
配置。要修改串口的配置,应该先修改 . 结构,然后再调用 && 函数设置
串口。
. 结构包含了串口的各项参数设置,下面仅介绍几个该结构常用的变量:
0%?"/"-.
A2"2
2"2EEE2"2::波特率,指定通信设备的传输速率。这个成员可以是实际波特率值或者下面
的常量值之一:
2"2("./5"
:F.-7'.-77'.-G77'.-77'.-77'.-77'.-HG77'.
-H77'.-77'.-G777'.-IG77'2"22"22"22"22"22"22"2"
.-77'.-777'.-G777'.-77F:
2"2("?05"::"指定奇偶校验使能。若此成员为 ,允许奇偶校验检查 …
2"2.,$!22.0J5"::"通信字节位数,K
2"2.,$!"05"::指定奇偶校验方法。此成员可以有下列值:!9!$, 偶校验
($, 无校验 *L$,"标记校验 ($, 奇校验
2"2.,$!"%.5"::指定停止位的位数。此成员可以有下列值:(!$(.$" 位停止
位 $($(.$" 位停止位 (!$(.$"M 位停止位 ………
D".5
1M) 文件中定义了以上用到的常量。如下:
22NO"($,2"22"22"22"27
22NO"($,2"22"22"222
22NO"!9!$,2"22"22"2"
22NO"(!$(.$2"22"22"2"7
22NO"(!$(.$2"22"222
22NO"$($(.$2"22"22"2"
22NO".-72"22"22"22"2"7
22NO".-772"22"22"22"2"77
22NO".-G772"22"22"22"2"G77
22NO".-772"22"22"22"277
22NO".-772"22"22"22"277
22NO".-772"22"22"22"277
22NO".-HG772"22"22"22"2HG77
22NO".-772"22"22"22277
22NO".-H772"22"22"222H77
22NO".-772"22"22"22277
22NO".-G7772"22"22"222G777
22NO".-IG772"22"22"222IG77
22NO".-772"22"22"2"77
22NO".-7772"22"22"2"777
22NO".-G7772"22"22"2"G777
8&& 函数可以获得 (* 口的设备控制块,从而获得相关参数:
.(( "8&&#
2"2 !")'22::标识通讯端口的句柄
2"2 ."%.2"2"::指向一个设备控制块(. 结构)的指针
2245
&& 函数设置 (* 口的设备控制块:
.(( "&&#
2"2 !")'
2"2 ."%."
剩余13页未读,继续阅读
资源评论
Johnnyfu
- 粉丝: 3
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功