分享

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

 昵称40538106 2022-09-25 发布于上海

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

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

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

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

首先看一下界面:

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

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

一、串口连接部分

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

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

                                      

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

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

二、发送数据

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

  1. '函数功能:发送数据(判断数据格式)
  2. '如何实现:1、通过开启定时器连续发送; 2、直接调用该函数单词发送
  3. Private Sub Timer1_Timer()
  4. Dim longth As Integer
  5. If Option3.Value = True Then
  6. intOutMode = 1
  7. Else
  8. intOutMode = 0
  9. End If
  10. strSendText = Text2.Text
  11. If intOutMode = 0 Then
  12. MSComm1.Output = strSendText
  13. Else
  14. longth = strHexToByteArray(strSendText, bytSendByte()) '只要勾选了十六进制发送,Text2中的数据都是十六进制的ASCII码(文本形式)(如1的十六进制ASCII码为 31)
  15. If longth > 0 Then
  16. MSComm1.Output = bytSendByte
  17. End If
  18. End If
  19. End Sub

三、接受数据

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

  1. '只要有通讯错误或事件发生时都会产生 OnComm 事件
  2. Private Sub MSComm1_OnComm()
  3. Dim bytInput() As Byte
  4. Dim intInputLen As Integer
  5. Dim n As Integer
  6. Dim teststring As String
  7. Select Case MSComm1.CommEvent
  8. Case comEvReceive '接受事件中断
  9. If Option1.Value = True Then
  10. MSComm1.InputMode = 1 '1:十六进制显示
  11. Else
  12. MSComm1.InputMode = 0 '0:文本方式显示
  13. End If
  14. intInputLen = MSComm1.InBufferCount
  15. bytInput = MSComm1.Input '提取接收缓冲区中的数据(数据格式:十进制的ascii码)
  16. If Option1.Value = True Then
  17. For n = 0 To intInputLen - 1
  18. Text1.Text = Trim(Text1.Text) & ' ' & IIf(Len(Hex$(bytInput(n))) > 1, Hex$(bytInput(n)), '0' & Hex$(bytInput(n))) 'hex函数:用十进制的ASCII码 返回十六进制的String
  19. Next n
  20. Else
  21. teststring = bytInput
  22. Text1.Text = Text1.Text + teststring
  23. End If
  24. End Select
  25. Text1.SelStart = Len(Text1.Text) '光标移到最后,每次显示最后一行
  26. 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

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

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多