2024年5月5日发(作者:)
静嬲|『2 鼢嘲l》 %昭
VB6.O的MSComm通信控件应用举例
口文/程巍巍
提要本文介绍了基于V B6.0的Msc0姗
使用通信组件。该方式实际上是通过通信组件
事件进行捕获,通过检查MSComm控件的
调用AP】要复杂,但在程序上容易实现。使用 而采取相应的操作处理这些通信事件。这种方
MSComm控件时,实际上就是使用了AP1函 法的优点是程序响应及时,可靠性高。
数,API函数将被comm.drv解释并传送给外 2、查询法。该方法可以在程序的每个关键
围设备驱动程序,使用MSComm的用户只需要
功能之后,通过检查CommEvent属性的值来查
ndowS API函数,其过程要比直接 C0mmEvent属性获知所发生的事件或错误,从
通信控件相关理论,并以一个实例演示了
间接调用wi
MSCo棚控件的主要属性。
关键词:串行通信:VB6.0;MScom控件
中图分类号:F49文献标识码:A
在当今这个科技飞速发展的时代,我们经
关心如何使用MsComm所提供的属性或事件, 询事件和错误。每个使用的MSComm控件对
常需要在计算机与其他设备之间进行通信,而
以驱动API函数的接口完成工作。 应着一个串行端口。如果应用程序需要访问多
串行通信作为一种灵活、方便、可靠的通信方
二、串行通信程序的执行过程
个串行端口,必须使用多个MSC0mm控件。
式被广泛采用。在开发串行通信程序的过程
MSComm控件通过串行端口传输和接收
表1
查询法适合于较小的应用程序,在这种情
中,利用微软的MSComm通信控件相对比较简
数据,为应用程序提供串行通
单,该控件具有丰富的与串行通信密切相关的
信功能。该控件提供了两种处
控件类型
MSComm
Timer
C
ommandbu【t0n
C
0mmandbutt0n
属性
name
name
name
属性值
MSComm1
Timer1
Command1
属性及事件,提供了对串口的各种操作。
理通信的方式:
MSComm控件在VB中容易使用,在串口编程
l、事件驱动通信。事件驱
时也非常方便,程序员不必花时间去了解较为
动通信是处理串行端口交互
复杂的API函数。
作用的一种非常有效的方式
用VB6.0进行串行通信程序的设计方
在使用事件驱动通信时,每当
法简介
有一个字符到达或端口状态
一
OptlOn
name
打开端口
Command2
、
Optlon
C
ommandbut【0n
n砌e
输入电话号码
C0mmand3
用visual basic6.0进行串行通信程序的设
发生改变,或发生错误时,
计有两种方式:(1)直接调用wind0ws API。(2)
Mscomm控件将触发0ncomm
Optlon 挂断电话号码
懂。针对我国农民的文化水平相对较低,甚至
的情况下,利用电视网络进行法制教育宣传已 阵风”现象,法制教育宣传机构在进行法制宣
存在文盲和半文盲的情况,法制宣传机构在进 经成为可能,而且利用电视网络进行法制教育 传教育时,应注意避免此种情况的出现;农村
行农村法制教育时应当尽可能采取适合当前
宣传可以收到覆盖面广的效果;抽调各级政法
法制宣传教育贵在坚持,只有常抓不懈,才能
农村实际情况的方法进行,要充分考虑到当前 干警和行政执法人员组成法律咨询宣传队逐 抓出成果。与此同时,就我国的实际情况来看,
农民的接受能力,循序渐进地向农民传授公民 村开展法律宣传,提供法律咨询服务;通过举 我国正处全面建设社会主义新农村的时期,在
应知会的法律基本常识和基础理论,逐步帮助 办法律知识竞赛,它既丰富了农民的生活,也
这个社会转型时期,为了适应经济和社会各个
农民树立牢固的法制观念和法律意识,从而使
使农民从中受到法制教育;把对农民的法制宣 方面飞速发展的需要,各种法律法规将不断被
农民具备一定的法律意识,并养成遵纪守法、
传教育与对中小学生的法制宣传教育结合起
制定出来,这也要求法制宣传机构要不断进行
依法办事的习惯。
来,让中小学生在接受法制宣传教育的同时把 法制教育宣传。
(三)在法制宣传教育的形式上,要灵活多
法带到家中,与家长共同学习,从而收到教育
总之,农村法制宣传教育必须结合农村实
样。针对当前农村法制宣传教育所采取的形式 的双重效果,等等。简言之,只要法制宣传部门 际,采取行之有效的措施与形式,力争收到入
中存在的不足,法制宣传机构在进行农村法制 在进行法制宣传时注意探索新的、更加符合农
耳入心的理想宣传效果,从而维护和促进农村
宣传教育时,应该在发挥原有宣传形式的长处
村实际情况的形式,农村法制宣传教育一定能
的和谐、稳定与发展,为创造一个安定的国内
的基础上,探索新的、更加有效的宣传形式,以
够收到理想的宣传效果。
取得最佳的宣传效果。如,在目前我国电视网
环境做贡献,进而推进社会主义新农村建设的
(四)在法制宣传教育的力度上,要持之以
顺利开展。
络比较普及,广大农民拥有电视机的比例很高
恒。针对当前农村法制宣传教育中存在的“一
(作者单位:中共汕头市委党校)
固
《合作经济与科技》2009年4月号上(总第366期)
科
》鼢f 籀嬲l
况下,每当应用程序执行完某一串行口操作 If Not MSComm1.P0n0Den Then 如果端口没 evms =”电话铃响起”
后,将不断检查MSComm控件的CommEvent
有打开则打开它
Case coⅡlEvE0F
属性,以检查执行结果或检查某一事件是否发
IfElTThen Exit Sub
evmsg¥=”被检测的文件结尾”
生。
EndⅡ
Case c0mBreal【
而进行串行通信时一般有两种传输方式:
MSComm1.Ou【put=”ATDT”&num&vbCrI
e肿s =”收到中断”
(1)字符形式:通常以小于ASCII码128
拨打电话号码
Case c0mCDT0
的字符码来传递,通常用于传送指令。
st timing 启动端口计时器 emsg8=”运输检测超时”
(2)二进制形式:将数据以二进制编码的
End sub
Case comCTS.TO
方式传递,它可能含有ASCII码l28以上的字
Pfivate Sub ComⅡland3
一
Click()
eHIls =”c1、s超时”
符码。通常用来传送数据,以提高速度。
0n Error Resume Next Case comDCB
三、串行通信实例
Msc0mm1.0utput=”ATH” 发送挂机字符串
e册s =”检索DCB错误”
下面以一个实例来演示MsComm控件的
ret=MSComm1.D 腿Enable 保存当前设置
C船e comDSRT0
主要属性。根据程序需要,进行以下操作步骤:
MSComm1.DTREnable= rhe 打开D I'R
e硼sg¥=”DSR超时”
1、新建工程。启动vB后,新建一个标准
MSComm1.DTREnabk=Ealse 关闭DTR
Case comF咖e
的EXE工程。
MSComm1.DTREnable=ref 恢复原来的设置 ern1sg¥=”帧错误”
2、设计用户界面。(1)在“工具’堞单中选
如果端口确实处于打开状态,则关闭它
Case c0m0venun
中“部件”,在“控件”选项卡中选择“Micros0ft
ⅡMSC0mm1.P(In0pen Then MSComm1.P0卜
e肋s :”超限错误”
Comm C0ntr0ls6.O”。然后从工具箱中将
t0pen=False Case comRx0ver
MSComm添加到窗体F0珊l中。(2)给窗体
ⅡErr Then MsgBox Enor¥,48 通知用户错
errnsg¥=”接收缓冲区溢出”
Forn11添加1个计时器控件,3个命令按钮控
误信息
Case comRxParity
件,并设置控件的相关属性。(表1)
st0ptiming 停止端口计时器
e肿sg¥=”奇偶校验错”
3、编写程序代码
0n ErmrGdTb O
Case c0mTxFul】
0ption Explicif End Sub
e册s =”传送缓冲区满”
Public echo As B0olean 回应‘打开,关闭’标志 ,0nc0mm事件被用于捕获communicali0ns事件
Case Else
Dim ret As Integer 设为整数
及错误
em =”未知的错误或事件”
Dim star【time As D8ta 为端口计时器存储开始
Private Static Sub MSComml_0nComm()
End Select
时间
Dim evms
End Sub
PIivate Sub c0mmand1.click()
Dim erms
蹦vate Sub stantiming()
0n Enl0r Resume Nexf
依据c0mmecent属性进行分支
调用此函数启动连接时间计时器
Dim叩ennag
SeIect Case MSComm1.CommEvent stantime=Now
MSComm1.P0nOpen=Not MSComm1.P0卜
事件信息
Tjmer1.Enabled:True
tOpen
C鹊e comEvReceive
End Sub
If Err Then MsgBox EIT0r¥,48
Dim bL erAsVariaTlt
Priva【e Sub st0ptiming()
叩ennag MSC0mm1.P0r【0pen
bufEer=MSC0mm1.InDut
调用此函数停止计时
If MSC0mm1.P0rt0pen Then
Debug.蹦nt”接收一”&S onv(buffer,
Timer1.Enab1ed=False
slantiming
vbUnic0de)
End Sub
End If
,sh0wdaIe txtIerrn, (StrC0nv(buⅡler,
程序执行时的界面如下图:
End Sub
vbUnicode))
腑vale Sub Con瑚and2_Click()
Case comEvSend
0n L0cal EⅡ.0r Resume Next
Case comEvC
Sfalic num As String
evm昭¥=”被检测的CTs改变”
num=”l—O29—8936—6735” MSDN的电话号
Case c0mEvDSR
码 从用户处获得电话号码
evmsg¥=”被检测的DSR改变”
num=Inpu【B0x¥(”输入电话号码:”,”拨打电
Case comEvCD
话号码”,nu『n)
evmsg¥=”被检测的CD改变”
Ⅱnllm=…。 rhen Exit s1lb
Case c0mEvRing
(作者单位:西安欧亚学院信息工程学院)
《合作经济与科技》2Oo9年4月号上(总第366期) 囡


发布评论