vb中mscomm控件的经典实例,有详细步骤,适用于学习vb中串口通信的学者!!!
### VB中MSComm控件的经典实例详解:电话通信实现 #### 概述 在VB(Visual Basic)编程环境中,MSComm 控件被广泛应用于串行通信的开发中,特别是对于那些需要与外部设备进行数据交换的应用场景。本文将详细介绍一个通过MSComm 控件实现电话通信的示例程序,该程序具有清晰的步骤说明,非常适合希望学习VB中串口通信的学者。 #### MSComm 控件简介 MSComm 控件是Microsoft提供的用于串行通信的标准控件之一,它支持标准的RS-232接口通信协议。通过MSComm 控件,开发者可以轻松地实现与外部硬件设备之间的数据传输,例如调制解调器(Modem)、传感器等。 #### 示例程序分析 ##### 界面设计 该示例程序包括以下几个主要界面元素: 1. **MSComm 控件**:用于处理串行通信的核心组件。 2. **TextBox 控件**(名称为 `Txttel`):用户输入电话号码的地方。 3. **三个 CommandButton 控件**(名称分别为 `DialButton`、`CancellButton` 和 `QuitButton`):分别用于拨号、取消和退出应用程序。 4. **Label 控件**(用于显示状态信息):展示当前操作的状态或结果。 ##### MSComm 控件设置 在程序中,MSComm 控件进行了以下关键设置: 1. **InBufferSize** 被设置为1024:定义了接收缓冲区的最大大小,这里设置为1024字节。 2. **InputLen** 设置为0:表示当使用 `Input` 属性时,将读取整个接收缓冲区的内容。 3. **InputMode** 设置为0:指示使用 `Input` 属性时的数据读取方式,默认为0表示文本模式。 4. **RThreshold** 设置为2:指定当接收缓冲区中的字符数量达到此值时触发 `OnComm` 事件。 5. **RTSEnable** 设置为 `True`:使能请求发送 (Request to Send) 信号,通常用于全双工通信。 6. **Settings** 设置为 `9600,N,8,1`:定义了通信波特率、数据位、奇偶校验位以及停止位的具体参数,此处为9600bps、无奇偶校验、8个数据位和1个停止位。 ##### 程序逻辑分析 1. **Form_Load() 函数**:加载窗体时初始化MSComm 控件,尝试打开端口1,并处理异常情况。 ```vb Private Sub Form_Load() On Error GoTo error_open For i = 1 To 4 MSComm1.CommPort = 1 MSComm1.PortOpen = True On Error GoTo 0 Exit Sub Next error_open: Resume error_resume End Sub ``` 2. **DialButton_Click() 函数**:处理拨号按钮点击事件,从 `Txttel` 获取电话号码并发起呼叫。 ```vb Private Sub DialButton_Click() Dim Number$, Temp$ Number$ = Trim$(Txttel.Text) If Number$ = "" Then MsgBox "请输入电话号码" Txttel.SetFocus Exit Sub End If DialButton.Enabled = False QuitButton.Enabled = False DialString$ = "ATDT" & Number$ & vbCrLf MSComm1.InBufferCount = 0 MSComm1.Output = DialString$ Lblmessage.Caption = "正在拨打: " & Number$ DialButton.Enabled = True QuitButton.Enabled = True End Sub ``` 3. **MSComm1_OnComm() 函数**:处理 `OnComm` 事件,监测接收到的数据并作出响应。 ```vb Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent Case comEvReceive COMBUF = COMBUF & MSComm1.Input lc = InStr(1, COMBUF, "OK") If lc = 0 Then Exit Sub Lblmessage.Caption = "摘机成功,等待接通" Case comEvSend ' 处理发送事件 End Select End Sub ``` 4. **CancelButton_Click() 函数**:处理取消按钮点击事件,用于挂断正在进行的通话。 ```vb Private Sub CancelButton_Click() MSComm1.Output = "ATH" & vbCrLf End Sub ``` #### 总结 通过以上分析,我们可以看到该示例程序不仅提供了如何使用MSComm 控件来实现电话通信的完整流程,还涉及到了串口通信中的一些基本概念和技术细节。对于初学者而言,这是一个非常好的学习资源,可以帮助他们快速掌握VB中串口通信的基本原理和实际应用技巧。
在一些实际应用中经常需要使用计算机拨号。下面这个例子利用MSComm控件操作Modem进行拨号,实现串口通信。
实现步骤:
1.建窗体
添加一个MSComm控件,用来建立与串口的连接;
添加一个Text控件,Name属性为Txttel,用来输入电话号码;
添加3个CommandButton控件,Name属性分别为DialButton、CancellButton、QuitButton,分别用来实现拨号、中止拨号、中止程序;
添加一个Label控件,用来显示所有与拨号有关的信息。窗体见图1。
2.设置MSComm控件属性
InBufferSize=1024; ’ InBufferSize 是指整个接收缓冲区的大小。缺省值是 1024 字节。
Inputlen=0; ’ InputLen 属性的缺省值是 0。设置 InputLen 为 0 时,使用 Input 将使 MSComm 控件读取接收缓冲区中全部的内容。
InputMode=0; ’0---(缺省)数据通过 Input 属性以文本形式取回。
1--数据通过 Input 属性以二进制形式取回
Rthreshold=2; ’ 当接收字符后,若 Rthreshold 属性设置为 0(缺省值)则不产生 OnComm 事件。
RTSEnable=True; ’ 当 RTSEnable 设置为 True,端口打开时,Request To Send 线设置为高电平,端口关闭时,设置为低电平。
Settings=“9600,N,8,1”;
Sthreshold=0。 ’ 若设置 Sthreshold 属性为 0(缺省值),数据传输事件不会产生 OnComm 事件。若设置 Sthreshold 属性为 1,当传输缓冲区完全空时,MSComm 控件产生 OnComm 事件。
因为每一台计算机的串口使用状态都不会一样。为使程序具有通用性,在窗体的Load方法中首先进行串口测试,找到第一个可用串口后再进行设置。
3.程序功能
程序根据输入的电话号码进行拨号,Modem正常拨号后,提示用户摘机,准备通话。
4.主要方法与事件代码
'设置可用串口
Private Sub Form_Load()
On Error GoTo error_open
For i = 1 To 4
MSComm1.CommPort = 1
MSComm1.PortOpen = True
'设置可用的第一个串口
On Error GoTo 0
Exit Sub
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
- 1
- 2
前往页