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 IntegerIf Option3.Value = https://www.it610.com/article/True Then
intOutMode = 1
Else
intOutMode = 0
End IfstrSendText = 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 IfEnd IfEnd Sub
三、接受数据 用MSComm控件的OnComm事件。当接收到数据时,就会触发OnComm事件,从而接收到数据。
'只要有通讯错误或事件发生时都会产生 OnComm 事件
Private Sub MSComm1_OnComm()Dim bytInput() As Byte
Dim intInputLen As Integer
Dim n As Integer
Dim teststring As StringSelect Case MSComm1.CommEventCase comEvReceive'接受事件中断
If Option1.Value = https://www.it610.com/article/True Then
MSComm1.InputMode = 1'1:十六进制显示
Else
MSComm1.InputMode = 0'0:文本方式显示
End IfintInputLen = MSComm1.InBufferCount
bytInput = MSComm1.Input'提取接收缓冲区中的数据(数据格式:十进制的ascii码)If Option1.Value = https://www.it610.com/article/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 IfEnd 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
欢迎大家提出宝贵的意见。
【单片机|vb6.0开发的上位机串口助手(自动识别电脑端口号、支持文本、十六进制发送)】有机会一起讨论代码,嘿嘿嘿!
推荐阅读
- 单片机|51单片机I/O口灌电流、拉电流、上拉电阻的联系
- 课设及大学课程学习|【电子系统综合实践】--2021电赛F题智能送药小车
- 单片机|L298N 驱动电机与单片机的线路连接图
- 单片机|stm32单片机驱动L298N模块
- 单片机|K210识别数字(0~9)并与单片机通信通过数字来控制小车移动
- 单片机|直流电机与PID——编码器电机使用(一)
- 电子设计大赛|2021年全国大学生电子设计大赛F题——智能送药小车,全方位解决方案+程序代码(详细注释)山东赛区国奖
- 单片机|L298N、电机、单片机的线路连接
- 单片机设计|毕业设计 - 题目(基于stm32的智能扫地机器人设计与实现)