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 

ommandbu【t0n 

0mmandbutt0n 

属性 

name 

name 

name 

属性值 

MSComm1 

Timer1 

Command1 

属性及事件,提供了对串口的各种操作。 

理通信的方式: 

MSComm控件在VB中容易使用,在串口编程 

l、事件驱动通信。事件驱 

时也非常方便,程序员不必花时间去了解较为 

动通信是处理串行端口交互 

复杂的API函数。 

作用的一种非常有效的方式 

用VB6.0进行串行通信程序的设计方 

在使用事件驱动通信时,每当 

法简介 

有一个字符到达或端口状态 

OptlOn 

name 

打开端口 

Command2 

Optlon 

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期) 囡