VB6.0串口助手精简版

一、实验目的

练习VB程序设计,学以致用,与专业内容相结合,使用VB设计实用工具。

二、实验内容及原理

1.实验内容
查阅VB程序设计书籍,学习Visual Basic6.0程序开发。查阅串口通讯原理,学习VB6.0串口控件的使用,然后使用VB6.0设计一款串口调试助手。
2.实验原理
通过串口控件MSComm与标准串行通讯协议,实现电脑与其他电子设备间的串口通讯。

三、实验步骤或程序流程

1.实验步骤
(1)添加MSComm控件,由于使用的是VB6.0精简版,电脑上并没有串口许可证,需要自百度添加控件许可。
在这里插入图片描述

(2)学习标准串口通讯协议格式,百度学习MSComm控件的基本使用方法

(3)设计人机交互界面:根据需求摆放控件,在属性窗口初始化赋值,如DTREnable=True使能串口接收触发事件。
在这里插入图片描述

(4)根据标准串口通讯协议,编写代码逻辑,实现端口动态刷新,波特率、停止位、校验位等可调,数据收发等功能。

(5)优化代码,排除可能出现的BUG。
2.程序流程
(1)打开程序后,先加载窗体,初始化控件,串口初始化

(2)若串口选择框发生列表下拉事件则更新端口,若发送选项点击事件则更新参数,其他combo控件同理。

(3)点击打开串口则可打开串口,往文本输入框输入想要发送的数据点击发送即可发送,点击清除数据即可清除数据。若有数据上传,则触发接收事件,程序先判断事件类型,若为接收事件,则将数据显示在文本输入框内,点击清除程序清除文本内容。

(4)若在没有任何端口情况下打开串口,则程序运行提示框没有任何可以端口。

四、实验数据及程序代码

Private Sub Uart_Init()
Dim a
Dim temp%
temp = 0
For a = 1 To 16   '循环检查可能存在的16个串口
      MSComm1.CommPort = a
      On Error Resume Next  '出现错误时,不会被打断
      MSComm1.PortOpen = True   '打开串口
      If MSComm1.PortOpen = True Then
            Combo1.AddItem ("COM" & a), temp  '将检测可用的端口添加到组合框中
            temp = temp + 1
            MSComm1.PortOpen = False
      End If
Next
'显示默认初始化
Combo1.Text = Combo1.List(0) '默认端口为第一个可用端口
Command1.Caption = "打开串口"
Command1.BackColor = vbRed

'串口默认初始化
MSComm1.CommPort = Val(Mid(Combo1.List(0), 4))  'Mid用于删除字符串COMX前三个字符,Val把字符数字转化为数字
MSComm1.Settings = Combo2.Text & "," & Combo5.Text & "," & Combo4.Text & "," & Combo3.Text    '设置通讯参数
MSComm1.RThreshold = 1 'comEvReceive事件有效
MSComm1.PortOpen = False  '关闭串口
End Sub

Private Sub Combo1_Click() '改变端口
If MSComm1.PortOpen = False Then  '在未打开串口时改变端口
    MSComm1.CommPort = Val(Mid(Combo1.Text, 4))
Else    '若串口已打开,则先关闭,改变端口号之后再打开
    MSComm1.PortOpen = False
    MSComm1.CommPort = Val(Mid(Combo1.Text, 4))
    MSComm1.PortOpen = True
End If
End Sub

Private Sub Combo1_DropDown() '当显示 ComboBox 的下拉部分时发生。
Combo1.Clear '删除所有List项
If MSComm1.PortOpen = False Then  '在未打开串口时扫描串口
    Call Uart_Init
Else    '若串口已打开,则先关闭再扫描串口
    MSComm1.PortOpen = False
    Call Uart_Init
End If
End Sub

Private Sub Combo2_Click()  '改变波特率
MSComm1.Settings = Combo2.Text & "," & Combo5.Text & "," & Combo4.Text & "," & Combo3.Text
End Sub

Private Sub Combo3_Click() '改变停止位
MSComm1.Settings = Combo2.Text & "," & Combo5.Text & "," & Combo4.Text & "," & Combo3.Text
End Sub

Private Sub Combo4_Click() '改变数据位
MSComm1.Settings = Combo2.Text & "," & Combo5.Text & "," & Combo4.Text & "," & Combo3.Text
End Sub

Private Sub Combo5_Click() '改变校验位
MSComm1.Settings = Combo2.Text & "," & Combo5.Text & "," & Combo4.Text & "," & Combo3.Text
End Sub

Private Sub Command1_Click() '打开/关闭串口
If Combo1.List(0) Like "" Then  '如果没有搜索到任何串口,即Combo1.List(0)=""
    MsgBox "未搜索到任何串口!", vbCritical, "提示"
Else                            '否则执行开关串口操作
    If MSComm1.PortOpen = True Then
        MSComm1.PortOpen = False
        Command1.Caption = "打开串口"
        Command1.BackColor = vbRed
    Else
        MSComm1.PortOpen = True
        Command1.Caption = "关闭串口"
        Command1.BackColor = vbGreen
    End If
End If
End Sub

Private Sub Command2_Click()   '串口发送数据
If MSComm1.PortOpen = True Then
    If Text2.Text Like "" Then '发送区空则不加换行符
        MSComm1.Output = Text2.Text
    Else
        MSComm1.Output = Text2.Text & vbCrLf '文本附带vbcrlf,即结尾加上换行符,标准串口通讯文本格式
    End If
Else
    MsgBox "请先打开串口!", vbCritical, "提示"
End If
End Sub

Private Sub Command3_Click()   '清空发送区
Text2.Text = ""
End Sub

Private Sub Command4_Click()   '清空收区
Text1.Text = ""
End Sub

Private Sub Form_Load()
Call Uart_Init

End Sub

Private Sub MSComm1_OnComm()

'...通讯事件发生

Select Case MSComm1.CommEvent

    Case comEvReceive '...有接受事件发生

        Text1.Text = Text1.Text & MSComm1.Input  '...接受显示数据

        MSComm1.InBufferCount = 0 '...清空输入寄存器

End Select

End Sub

五、实验数据分析及处理

1.串口初始化函数:串口初始化封装成通用函数,在form_load时运行一遍,此后若ComboBox发生下拉事件,则可再次根据条件调用此函数,以实现端口的动态刷新。其余细节注释已给出。
在这里插入图片描述

2.端口切换与刷新:在Combo1下拉列表项点击事件发生时,进行端口的切换,此处使用了一个if else语句判断串口是否已打开,如果打开了需要先关掉才能切换,否则报错。
用combo1列表下拉事件来进行端口刷新的操作,正好符合行为逻辑。此处的if else同上述。
在这里插入图片描述

3.通讯参数可调:预先在属性框填入默认值,在列表框LIST里面填入固定的通讯可调参数,比如停止位只能1、1.5、2这三项。然后经百度Setting用法如MSComm1.Settings = " 9600 ,n,8,1" 字符串形式,所以使用&来拼接。
在这里插入图片描述

4.打开/关闭串口:如果没有当前电脑上没有任何串口设备,则弹出提示框,否则就打开或者关闭串口。
在这里插入图片描述

5.串口收/发:注释即分析!
在这里插入图片描述

六、实验结论与感悟

学会了使用VB6.0设计简单实用小工具,与专业内容相结合,学以致用,举一反三。学会查阅相关资料,遇到问题学会优先百度解决。

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值