vb6.0开发的上位机串口助手(自动识别电脑端口号、支持文本、十六进制发送)

VB是可视化的编程,就是把一些图标控件拖到编程板上,然后用代码编写每个按钮的实现功能,(如:按下按钮会发生什么事)

vb在零几年的时候非常流行,近年来逐渐淡出人们的视野,但是用其来编写一些简单的上位机还是很方便的,可搭配单片机使用。如编写个串口助手,单片机检测到温湿度在上位机上显示等

言归正传,我就是编写了一个串口助手的简单上位机,来给大家分享一下。

程序中含有超多注释,用最直观的大白话解释清楚代码的意思,极利于学习。

首先看一下界面:

内容比较丰富,基本上和我们日常所用串口助手差不多。

介绍一下本程序重要的几部分,也是较难的几部分

一、串口连接部分

可自动识别电脑上的可用端口

我查了很多资料,发现其他人写的程序大多是将串口一一罗列,很不好,如下所示:

                                      

而本次介绍的程序和设备管理器中的端口号一一对应而不是单纯的罗列出来。

'函数功能:查询电脑可用的串口号,将其显示在组合框中
Private Sub Uart_Init()
Dim a
Dim temp%
temp = 0
For a = 1 To 16                                              '循环检查可能存在的16个串口
      MSComm1.CommPort = a
      On Error Resume Next                                   '出现错误时,不会被打断(假如电脑上可用端口为COM1、COM2、COM4,若没有这行代码 当a=3时会报错)
      MSComm1.PortOpen = True                                '打开串口
      If MSComm1.PortOpen = True Then
            Combo1_select.AddItem ("COM" & a), temp          '将检测可用的端口添加到组合框中
            temp = temp + 1
            MSComm1.PortOpen = False
      End If
Next

二、发送数据

采用定时器控件,可连续发送也可手动调用发送


'函数功能:发送数据(判断数据格式)
'如何实现:1、通过开启定时器连续发送; 2、直接调用该函数单词发送
Private Sub Timer1_Timer()
    Dim longth As Integer
    
    If Option3.Value = True Then
    intOutMode = 1
    Else
    intOutMode = 0
    End If

    strSendText = Text2.Text
    If intOutMode = 0 Then
        MSComm1.Output = strSendText
    Else
        longth = strHexToByteArray(strSendText, bytSendByte())      '只要勾选了十六进制发送,Text2中的数据都是十六进制的ASCII码(文本形式)(如1的十六进制ASCII码为 31)
        
        If longth > 0 Then
            MSComm1.Output = bytSendByte
        End If
        
    End If

End Sub

三、接受数据

用MSComm控件的OnComm事件。当接收到数据时,就会触发OnComm事件,从而接收到数据。


'只要有通讯错误或事件发生时都会产生 OnComm 事件
Private Sub MSComm1_OnComm()
    
    Dim bytInput() As Byte
    Dim intInputLen As Integer
    Dim n As Integer
    Dim teststring As String
    
    Select Case MSComm1.CommEvent
        
        
        Case comEvReceive                            '接受事件中断
            If Option1.Value = True Then
            MSComm1.InputMode = 1                    '1:十六进制显示
            Else
            MSComm1.InputMode = 0                    '0:文本方式显示
            End If
            
            intInputLen = MSComm1.InBufferCount
            bytInput = MSComm1.Input                 '提取接收缓冲区中的数据(数据格式:十进制的ascii码)
            
            If Option1.Value = True Then
            For n = 0 To intInputLen - 1
               Text1.Text = Trim(Text1.Text) & " " & IIf(Len(Hex$(bytInput(n))) > 1, Hex$(bytInput(n)), "0" & Hex$(bytInput(n)))    'hex函数:用十进制的ASCII码 返回十六进制的String
            Next n
            Else
            teststring = bytInput
            Text1.Text = Text1.Text + teststring
            End If
            
    End Select
    Text1.SelStart = Len(Text1.Text) '光标移到最后,每次显示最后一行
End Sub

在这里重点强调一下MSComm控件。

该控件就时串口通讯最主要的控件,串口连接、串口通讯都是该控件。

当新加载工程时,在左侧控件窗口中是没有该控件的,如下图:

需要手动去添加:工程——>部件——>Microsoft Comm Control 6.0前面勾选上

完整开源工程:https://download.csdn.net/download/m0_59113542/76680304

下面这个也是用vb6.0做的温度采集控制系统,单片机测数据经过串口传输给上位机显示。

开源工程:https://download.csdn.net/download/m0_59113542/77294120

欢迎大家提出宝贵的意见。

有机会一起讨论代码,嘿嘿嘿!

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值