没有合适的资源?快使用搜索试试~ 我知道了~
VC多线程串口编程
4星 · 超过85%的资源 需积分: 9 19 下载量 18 浏览量
2013-08-26
20:35:05
上传
评论
收藏 149KB DOC 举报
温馨提示
试读
27页
VC多线程串口编程.doc
资源推荐
资源详情
资源评论
深入浅出
Win32
多线程程序设计综合实例
时间 来源未知
泡泡堂 收集
本章我们将以工业控制和嵌入式系统中运用极为广泛的串口通信为例讲述多
线程的典型应用。 而网络通信也是多线程应用最广泛的领域之一,所以本章的
最后一节也将对多线程网络通信进行简短的描述。 串口通信 在工业控制系统
中,工控机(一般都基于 平
本章我们将以工业控制和嵌入式系统中运用极为广泛的串口通信为例讲述多线
程的典型应用。
而网络通信也是多线程应用最广泛的领域之一,所以本章的最后一节也将对多
线程网络通信进行简短的描述。
串口通信
在工业控制系统中,工控机(一般都基于 平台)经常需要与单
片机通过串口进行通信。因此,操作和使用 的串口成为大多数单片机、嵌
入式系统领域工程师必须具备的能力。
串口的使用需要通过三个步骤来完成的:
() 打开通信端口;
() 初始化串口,设置波特率、数据位、停止位、奇偶校验等参数。为了给
读者一个直观的印象,下图从 的控制面板-系统-设备管理器
-通信端口()打开 的设置窗口:
() 读写串口。
在 平台下,对通信端口进行操作跟基本的文件操作一样。
创建打开 资源
下列函数如果调用成功,则返回一个标识通信端口的句柄,否则返回:
!"#$"%&"'()&*%&"#+",通信端口名,如
)"!"--",对资源的访问类型
)(.#!"",指定共享模式, 不能共享,该参数为
( /)01)2/ (&*("-3!$4$$!53$",
安全描述符指针,可为 /
)!"#$*$,创建方式
)%$$!53$",文件属性,可为 /
."+*&#$"%&"模板文件句柄,置为 /
78
获得设置 属性
下列函数可以获得 口的设备控制块,从而获得相关参数:
29"$++($#$"'
.%&",标识通信端口的句柄
2&*2指向一个设备控制块'2 结构7的指针
78
如果要调整通信端口的参数,则需要重新配置设备控制块,再用
("$++($#$"'7函数进行设置:
2("$++($#$"'
.%&",标识通信端口的句柄
2&*2指向一个设备控制块'2 结构7的指针
78
2 结构包含了串口的各项参数设置,如下:
$4*"":$!3-$12
;
-5
)2&"6$.8<":'27
)2#3)#$"8-3!!"$5#3!#$"
):2#!485#!4+", %-."-=
):#!$48"#5&"*#!$4-."-=6
):3$>$%&8(3$*3$?-$!&
):3$>!%&8()3$*3$?-$!&
):$!$!&8)?-$!&$4*"
):!("$@$48()"$@$4
):A$3"AB8A%%-$3">
):3$A8AA%%3$?-$!&
):A8AA%%?-$!&
): !!!.#!8"#5&""!!!!"*&#-"+"$
):3&&8"#5&"3&&$!**6
):)$$!&8)(?-$!&
):5!$ !!!8#5!$!"#!$""!!!
):3++4C8!""!@"
))""!@"8$-3!!"$&43"
)A+8$!#+$A$.!".&
)AB+8$!#+$A%%$.!".&
20 24$"(<"83+5"!:5$54$",DE
20 #!$48DF,,"@",+#!=,*#-"
20 ($*2$8,,F,G,
-.#!A.#!8>#)>A-.#!#-$"!
-.#!AB.#!8>#)>A%%-.#!#-$"!
-.#! !!!.#!8"!!!!"*&#-"+"$-.#!#-$"!
-.#! :.#!8":*3$-.#!#-$"!
-.#! @$.#!8!"-"@""@"$-.#!#-$"!
))""!@"8!""!@"8$3"
H28
读写串口
在读写串口之前,还要用 3!6"++'7函数清空缓冲区,并用
("$++#='7函数设置事件掩模来监视指定通信端口上的事件,其原型
为:
2("$++#='
.%&",标识通信端口的句柄
) @$#=能够使能的通信事件
78
串口上可能发生的事件如下表所示:
值 事件描述
I12) J 5!"#=#"$"-$"*3$
I1( ."('-&"#!$"76#&-.#6"$#$"
I1() ."()'#$#"$!"#476#&-.#6"$#$"
I1 ))
&"$#$3"!!!--3!!""$#$3"!!!#!"
1%) , 1I ))/,# 1)A)0
I1)9 !6-#$!#"$"-$"
I1)(
.")('!"-"@"&"6#&"$"-$76#&-.#6"
$#$"
I1)A
)
-.#!#-$"!#!"-"@"#*&#-"$."*3$53B"!
I1)A%
9
.""@"$-.#!#-$"!#!"-"@"#*&#-"$."*3$
53B"!.""@"$-.#!#-$"!*"-K"$.""@-"L
2$!3-$3!",.-.#**&"$#"!#&*!$5436
$."("$++($#$":3-$
I1A
0
."&#$-.#!#-$"!$."3$*3$53B"!#"$
在设置好事件掩模后,我们就可以利用 #$++ @"$'7函数来等待串口上
发生事件,其函数原型为:
2#$++ @"$'
.%&",标识通信端口的句柄
)&* @$#=,指向存放事件标识变量的指针
I ) &*@"!&#**",指向 @"!&#**" 结构
78
我们可以在发生事件后,根据相应的事件类型,进行串口的读写操作:
2)"#%&"' .%&",标识通信端口的句柄
I&*23B"!,输入数据 23B"! 指针
)3+5"!:24$")"#,需要读取的字节数
)&*3+5"!:24$")"#,实际读取的字节数指针
I ) &*@"!&#**"指向 @"!&#**" 结构
78
2!$"%&"' .%&",标识通信端口的句柄
I&*23B"!,输出数据 23B"! 指针
)3+5"!:24$"!$",需要写的字节数
)&*3+5"!:24$"!$$",实际写入的字节数指针
I ) &*@"!&#**"指向 @"!&#**" 结构
78
工程实例
下面我们用第 节所述 实现一个多线程的串口通信程序。这个例子工程
(工程名为 3&$.!"#+)的界面很简单,如下图所示:
它是一个多线程的应用程序,包括两个工作者线程,分别处理串口 和串口
。为了简化问题,我们让连接两个串口的电缆只包含 )A、A 两根连线(即
不以硬件控制 )(,串口上只会发生 I1A 0、 I1)A) 事
件)。
在工程实例的 23&$.!"#+**$$#-"'7函数中,启动
并设置 和 ,其源代码为:
23&$.!"#+**$$#-"'7
;
剩余26页未读,继续阅读
资源评论
- Sound_tactics2013-10-30DOC文档的,下来看看串口的编程,对编程有些许帮助
- dongxuewen2020-03-05很不错的学习资料
cv风凌
- 粉丝: 0
- 资源: 22
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功