VB是可视化的编程,就是把一些图标控件拖到编程板上,然后用代码编写每个按钮的实现功能,(如:按下按钮会发生什么事)
vb在零几年的时候非常流行,近年来逐渐淡出人们的视野,但是用其来编写一些简单的上位机还是很方便的,可搭配单片机使用。如编写个串口助手,单片机检测到温湿度在上位机上显示等
言归正传,我就是编写了一个串口助手的简单上位机,来给大家分享一下。
程序中含有超多注释,用最直观的大白话解释清楚代码的意思,极利于学习。
首先看一下界面:

内容比较丰富,基本上和我们日常所用串口助手差不多。
介绍一下本程序重要的几部分,也是较难的几部分
一、串口连接部分
可自动识别电脑上的可用端口
我查了很多资料,发现其他人写的程序大多是将串口一一罗列,很不好,如下所示:

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

'函数功能:查询电脑可用的串口号,将其显示在组合框中 For a = 1 To 16 '循环检查可能存在的16个串口 On Error Resume Next '出现错误时,不会被打断(假如电脑上可用端口为COM1、COM2、COM4,若没有这行代码 当a=3时会报错) MSComm1.PortOpen = True '打开串口 If MSComm1.PortOpen = True Then Combo1_select.AddItem ('COM' & a), temp '将检测可用的端口添加到组合框中
二、发送数据
采用定时器控件,可连续发送也可手动调用发送
'如何实现:1、通过开启定时器连续发送; 2、直接调用该函数单词发送 Private Sub Timer1_Timer() If Option3.Value = True Then MSComm1.Output = strSendText longth = strHexToByteArray(strSendText, bytSendByte()) '只要勾选了十六进制发送,Text2中的数据都是十六进制的ASCII码(文本形式)(如1的十六进制ASCII码为 31) MSComm1.Output = bytSendByte
三、接受数据
用MSComm控件的OnComm事件。当接收到数据时,就会触发OnComm事件,从而接收到数据。
'只要有通讯错误或事件发生时都会产生 OnComm 事件 Private Sub MSComm1_OnComm() Dim intInputLen As Integer Select Case MSComm1.CommEvent Case comEvReceive '接受事件中断 If Option1.Value = True Then MSComm1.InputMode = 1 '1:十六进制显示 MSComm1.InputMode = 0 '0:文本方式显示 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 Text1.Text = Text1.Text + teststring Text1.SelStart = Len(Text1.Text) '光标移到最后,每次显示最后一行
在这里重点强调一下MSComm控件。
该控件就时串口通讯最主要的控件,串口连接、串口通讯都是该控件。
当新加载工程时,在左侧控件窗口中是没有该控件的,如下图:

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

完整开源工程:https://download.csdn.net/download/m0_59113542/76680304
下面这个也是用vb6.0做的温度采集控制系统,单片机测数据经过串口传输给上位机显示。
开源工程:https://download.csdn.net/download/m0_59113542/77294120
欢迎大家提出宝贵的意见。
有机会一起讨论代码,嘿嘿嘿!
|