admin 管理员组文章数量: 1086019
2024年3月19日发(作者:ccle数据库)
VB6.0的MSComm通信控件应用举例
提要本文介绍了基于VB6.0的MSComm通信控件相关理论,并以一个实例
演示了MSComm控件的主要属性。
关键词:串行通信;VB6.0;MSComm控件
在当今这个科技飞速发展的时代,我们经常需要在计算机与其他设备之
间进行通信,而串行通信作为一种灵活、方便、可靠的通信方式被广泛采用。在
开发串行通信程序的过程中,利用微软的MSComm通信控件相对比较简单,该
控件具有丰富的与串行通信密切相关的属性及事件,提供了对串口的各种操作。
MSComm控件在VB中容易使用,在串口编程时也非常方便,程序员不必花时
间去了解较为复杂的API函数。
一、用VB6.0进行串行通信程序的设计方法简介
用visual basic6.0进行串行通信程序的设计有两种方式:(1)直接调用
Windows API。(2)使用通信组件。该方式实际上是通过通信组件间接调用
Windows API函数,其过程要比直接调用API要复杂,但在程序上容易实现。使
用MSComm控件时,实际上就是使用了API函数,API函数将被解
释并传送给外围设备驱动程序,使用MSComm的用户只需要关心如何使用
MSComm所提供的属性或事件,以驱动API函数的接口完成工作。
二、串行通信程序的执行过程
MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功
能。该控件提供了两种处理通信的方式:
1、事件驱动通信。事件驱动通信是处理串行端口交互作用的一种非常有效
的方式。在使用事件驱动通信时,每当有一个字符到达或端口状态发生改变,或
发生错误时,MSComm控件将触发OnComm事件进行捕获,通过检查MSComm
控件的CommEvent属性获知所发生的事件或错误,从而采取相应的操作处理这
些通信事件。这种方法的优点是程序响应及时,可靠性高。
2、查询法。该方法可以在程序的每个关键功能之后,通过检查CommEvent
属性的值来查询事件和错误。每个使用的MSComm控件对应着一个串行端口。
如果应用程序需要访问多个串行端口,必须使用多个MSComm控件。
查询法适合于较小的应用程序,在这种情况下,每当应用程序执行完某一串
行口操作后,将不断检查MSComm控件的CommEvent属性,以检查执行结果
或检查某一事件是否发生。
而进行串行通信时一般有两种传输方式:
(1)字符形式:通常以小于ASCII码128的字符码来传递,通常用于传送
指令。
(2)二进制形式:将数据以二进制编码的方式传递,它可能含有ASCII码
128以上的字符码。通常用来传送数据,以提高速度。
三、串行通信实例
下面以一个实例来演示MSComm控件的主要属性。根据程序需要,进行以
下操作步骤:
1、新建工程。启动VB后,新建一个标准的EXE工程。
2、设计用户界面。(1)在“工具”菜单中选中“部件”,在“控件”选项卡中选
择“Microsoft Comm Controls6.0”。然后从工具箱中将MSComm添加到窗体Form1
中。(2)给窗体Form1添加1个计时器控件,3个命令按钮控件,并设置控件的
相关属性。(表1)
3、编写程序代码
Option Explicit
Public echo As Boolean‟回应‘打开/关闭’标志
Dim ret As Integer‟设为整数
Dim starttime As Data‟为端口计时器存储开始时间
Private Sub command1_click()
On Error Resume Next
Dim openflag
en = Not en
If Err Then MsgBox Error$,48
openflag = en
If en Then
starttiming
End If
End Sub
Private Sub Command2_Click()
On Local Error Resume Next
Static num As String
num=“1-029-8936-6735”„MSDN的电话号码‟从用户处获得电话号码
num=InputBox$(”输入电话号码:”,”拨打电话号码”,num)
If num=““ Then Exit Sub
If Not en Then‟如果端口没有打开则打开它
If Err Then Exit Sub
End If
=“ATDT” & num & vbCrLf‟拨打电话号码
starttiming‟启动端口计时器
End Sub
Private Sub Command3_Click()
On Error Resume Next
=“ATH”„发送挂机字符串
ret=ble‟保存当前设置
ble=True‟打开DTR
ble=False‟关闭DTR
ble=ret‟恢复原来的设置‟如果端口确实处于打开状态,则
关闭它
If en Then en = False
If Err Then MsgBox Error$,48‟通知用户错误信息
stoptiming‟停止端口计时器
On Error GoTo 0
End Sub
„oncomm事件被用于捕获communications事件及错误
Private Static Sub MSComm1_OnComm()
Dim evmsg$
Dim ermsg$
„依据commecent属性进行分支
Select Case ent
„事件信息
Case comEvReceive
Dim buffer As Variant
buffer =
“接收-” & StrConv(buffer,vbUnicode)
„showdate txtterm,(StrConv(buffer,vbUnicode))
Case comEvSend
Case comEvCTS
evmsg$=“被检测的CTS改变”
Case comEvDSR
evmsg$=“被检测的DSR改变”
Case comEvCD
evmsg$=“被检测的CD改变”
Case comEvRing
evmsg$=“电话铃响起”
Case comEvEOF
evmsg$=“被检测的文件结尾”
Case comBreak
ermsg$=“收到中断”
Case comCDTO
ermsg$=“运输检测超时”
Case comCTSTO
ermsg$=“CTS超时”
Case comDCB
ermsg$=“检索DCB错误”
Case comDSRTO
ermsg$=“DSR超时”
Case comFrame
ermsg$=“帧错误”
Case comOverrun
ermsg$=“超限错误”
Case comRxOver
ermsg$=“接收缓冲区溢出”
Case comRxParity
ermsg$=“奇偶校验错”
Case comTxFull
ermsg$=“传送缓冲区满”
Case Else
ermsg$=“未知的错误或事件”
End Select
End Sub
Private Sub starttiming()
„调用此函数启动连接时间计时器
starttime=Now
d=True
End Sub
Private Sub stoptiming()
„调用此函数停止计时
d = False
End Sub
程序执行时的界面如下图:
版权声明:本文标题:VB6.0的MSComm通信控件应用举例 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1710853556a576365.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论