没有合适的资源?快使用搜索试试~ 我知道了~
首页vc串口通讯控件MSComm编程详解
资源详情
资源评论
资源推荐
vc 串口通讯控件 MSComm 编程详解
在 中进行串口通讯最简单的方法莫过于在对话框中使用 控件了, 通信控件提
供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其他通信设备(如 ).
还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,从而可以用它
创建全双工 、事件驱动的、高效实用的通信程序。
一、用 控件通信
.串口通信基础知识
一般悦来,计算机都有一个或多个串行端口,它们依次为 、、…,这些串口还提供了外
部设备与 进行数据传输和皿信的通道。这些串口在 和外设之间充当解释器的角色。当字符数据
从 发送给外设时,这些字符数据将被转换成串行比特流数据;当接收数据时,比特流数据被转换为
字符数据传递给 ,再进一步说,在操作系统方面, 用通信驱动程序()调用
函数发送和接收数据,当用通信控件或声明调用 函数时,它门由 解释并传递给设
备驱动程序,
作为一个 程序员,要编写通信程序.只需知道通信控件提供给 通信 函数的接口即可.
换句话说,只需设定和监视通信控件的属性和事件即可。
.使用 控件
在开始使用 控件之前。需要先了解其属性、事件或错误
属性 描述
设置或返回通信端口号
以字符串的形式设置或返回波特率、奇偶校验、数据位和停止位
设置或返回通信端口的状态。也可以打开和关闭端口
!返回和删除接收缓冲区中的字符
!!将字符串写入发送缓冲区
" 属性为通信事件或错误返回下列值之一。在该控件的对象库中也可以找到这些常量。
常量 值 描述
"#$%%收到了断开信号
"&& %% '#&&! 。在发 送字符时,在系统指定的事 件内,
&('#&)线是低电平
"& %%( ###)&! 。在发 送 字 符 时,在 系 统 指 定的事件 内 ,
(###))线是低电平
"*#%%+数据帧错误。硬件检测到一个数据帧错误
"!%%,端口溢出。硬件中的字符尚未读,下一个字符又到达,并且丢失
"& %%- # & 。 在 发 送 字 符 时 , 在 系 统 指 定 的 事 件 内 ,
(#)线是低电平。 也称为 .(. #',接收线信号检
测)
"/%%0接收缓冲区溢出。在接收缓冲区中没有空间
"/#)%%1奇偶校验错。硬件检测到奇偶校验错误 -
"&/*!''%%发送缓冲区满。在对发送字符排队时,发送缓冲区满
"%检取端口 (''$)时发生了没有预料到的错误
通信事件包含了下面的设置:
常量 值 描述
"发送缓冲区中的字符数比 22' 值低
"接收到了 22' 个字符。持续产生该事件,直到使用了 ! 属性删除了
接收缓冲区中的数据
"&(&('#&)线改变
"+(###))线改变。当 从 到 % 改变时,该事件发生
" 3 ( # ) 线 改 变 " , 检 测 到 响 铃 信 号 。 一 些
&(#')2!44通用异步收发器)不支持该事件
""*-收到了 "* 字符( 字符 ,)
" 消息( 控件)下表列出了 控件可捕获的错误消息:
常量 值 描述
#')#'!(0%无效的属性值
6!(0(属性只读
76!(1+属性只读
0%%%端口打开时该存在无效
0%%超时设置必须比 % 值大
#'0%%无效的端口号
0%%(属性只在运行时有效
0%%+属性在运行时是只读的
'#)0%%3端口已经打开
0%%,设备标识符无效或不支持
0%%-不支持设备的波特率
0%%0指定的字节大小无效
0%%1缺省参数错误
0%%硬件不可用(被其他设备锁住)
0%函数不能分配队列
60%设备没有打开
0%(设备已经打开
0%+不能使用通信通知
#*#'0%3不能设置通信状态
0%,不能设置通信事件屏蔽
60%0该存在只在端口打开是有效
0%1设备忙
#"0%%通信设备读错误
"0%检取端口设备控制块时出现内部错误
注意在使用的时候一定要保证两个通讯串口的设置是相同的,否则受到的信息将会产生错误!
由于取值位数的不同,有可能发送的信息要读很多次才能组合成需要的信息!
。建立 工程,都会撒。
将 控 件 加 进 来 : 打 开 “ 849&849#'49
/':5然后选择控件:!#'5,% 插入到当前的工
程中。这样就将类 的相关文件 和 2一并加入到了工程中。编程
时只需将控件对话中的 控件拖至你的应用对话框中就 ; 了
。定义串口对象:
<=
(。串口初始化:
)'><."=
<#?6..5)'5?%5%5%5%@525<@=
?<7?@@AA如果串口是打开的,则行关闭串口
B
<?*."@=
C
<?@=AA选择
<!DE?%+@=AA接收缓冲区
<!!DE?%+@=AA发送缓冲区
<!.?%@=AA设置当前接收区数据长度为 %5表示全部读取
<!?@=AA以二进制方式读写数据
<&22'?@=AA 接 收 缓 冲 区 有 个 及 个 以 上 字 符 时 , 将 引 发 接 收 数 据 的
事件
< ?F1,%%5505F@=AA波特率 1,%% 无检验位,0 个数据位, 个停止位
?G<7?@@AA如果串口没有打开则打开
<?&"@=AA打开串口
'
B
<!!D!?%@=
/# /?F&2#'*#'!GF@=
C
+。串口数据读写:
类的读 写 函 数 比较 简 单 : 7!?@和 !!?@ 。 函 数 原形分 别 为 6&
7!?@和 !!(6&#'!)5均使用 6& 类型。但 机发送
和接收数据时习惯用字符串形式。6 中查阅 6& 类型,可以用 & 表示字符串,但所有的
& 都包含宽字符,而只有 6& 支持宽字符,1H 并不支持。所以要完成一个适应
各平台的串口应用程序必须解决这个问题。这里使用 I)#) 即可解决之。
发数据:在对话框对加入 按钮 控件并给你添加消息
&<' JJ?@
B
AA&J)!'K#2#'2
5!=
<##=
<##>FL''GF=
!><##7. 2?@=
)#)<#)=
<#)''?@=
<#)E?!@=
?>%=<#)?5<##MN@=
<!!?'##?<#)@@=
C
收数据:给串口控件添加消息
&<' JJ?@
B
6&<!=
2#O5O=
$5"5=
5<##=
"><7"?@=
2?"@
B
#J
$><7!D!?@=AA接收缓冲区的字符数目
?$9%@
B
<!><7!?@=
>?2#O@?! 2#O@<!##)49##=
C
>%=
>=
2'?@
B
PP=
PP=
C
O>QBCQ=
>?2#O@=AA清除字符串中的不必要字符
<##>?2#O@=
C
AA数据显示处理
<P><##=
###?#'@=
C
目 次
控件两种处理通讯的方式F9 控件两种处理通讯的方式
属性
&22'属性
&L' 属性
&22'属性
L' 属性
L' 属性
属性
!.属性
"*"#I'属性
L#2#$常数
常数
!常数
错误消息
RRRR控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。 控件在串
口编程时非常方便,程序员不必去花时间去了解较为复杂的 函数,而且在 、、'2 等语言
中均可使用。 !#'(以下简称 )是 公司提供的
简化 下串行通信编程的 H 控件,它为应用程序提供了通过串行接口收发数据的简便方法。
具体的来说,它提供了两种处理通信问题的方法:一是事件驱动?"-@方法,一是查询法。
控件两种处理通讯的方式F9 控件两种处理通讯的方式
控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。
事件驱动方式
事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通
知,例如,在串口接收缓冲区中有字符,或者 #?@或 S!&?&@线上
一个字符到达或一个变化发生时。在这些情况下,可以利用 控件的 事件捕获并处
理这些通讯事件。事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅
"属性。在编程过程中,就可以在 事件处理函数中加入自己的处理代码。这种方
法的优点是程序响应及时,可靠性高。每个 控件对应着一个串行端口。如果应用程序需要访
问多个串行端口,必须使用多个 控件。
查询方式
查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,
可以通过检查 "属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方
法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,
因为唯一等待接收的字符是调制解调器的“确定”响应。
控件的常用属性
控件有很多重要的属性,但首先必须熟悉几个属性。
设置并返回通讯端口号。
以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
设置并返回通讯端口的状态。也可以打开和关闭端口。
!从接收缓冲区返回和删除字符。
!!向传输缓冲区写一个字符串。
下面分别描述:
CommPort 属性 设置并返回通讯端口号。
语法 I8M#'!N?#'!一整型值,说明端口号。@R
说明 在设计时,#'!可以设置成从 到 ,的任何数(缺省值为 )。但是如果用 属性打
开一个并不存在的端口时,控件会产生错误 ,0(设备无效)。
注意:必须在打开端口之前设置 属性。
RThreshold 属性:在 控件设置 "属性为 "并产生
之前,设置并返回的要接收的字符数。
语法 I822'M>#'!N(#'!整型表达式,说明在产生 事件之前要接收的字
符数。)
说明 当接收字符后,若 22'属性设置为 %(缺省值)则不产生 事件。例如,设置
22'为 ,接收缓冲区收到每一个字符都会使 控件产生 事件。
CTSHolding 属性:确定是否可通过查询 '#&?&@线的状态发送数据。'#&
是调制解调器发送到相联计算机的信号,指示传输可以进行。该属性在设计时无效,在运行时为只读。
语法: I8&L' ('#)
控件的 &L' 属性设置值:
剩余26页未读,继续阅读
奔跑的龟龟
- 粉丝: 5
- 资源: 37
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0