|
VB是可視化的編程,就是把一些圖標(biāo)控件拖到編程板上,然后用代碼編寫每個(gè)按鈕的實(shí)現(xiàn)功能,(如:按下按鈕會(huì)發(fā)生什么事)
vb在零幾年的時(shí)候非常流行,近年來逐漸淡出人們的視野,但是用其來編寫一些簡(jiǎn)單的上位機(jī)還是很方便的,可搭配單片機(jī)使用。如編寫個(gè)串口助手,單片機(jī)檢測(cè)到溫濕度在上位機(jī)上顯示等
言歸正傳,我就是編寫了一個(gè)串口助手的簡(jiǎn)單上位機(jī),來給大家分享一下。
程序中含有超多注釋,用最直觀的大白話解釋清楚代碼的意思,極利于學(xué)習(xí)。
首先看一下界面:

內(nèi)容比較豐富,基本上和我們?nèi)粘K么谥植畈欢唷?/p>
介紹一下本程序重要的幾部分,也是較難的幾部分
一、串口連接部分
可自動(dòng)識(shí)別電腦上的可用端口
我查了很多資料,發(fā)現(xiàn)其他人寫的程序大多是將串口一一羅列,很不好,如下所示:

而本次介紹的程序和設(shè)備管理器中的端口號(hào)一一對(duì)應(yīng)而不是單純的羅列出來。

'函數(shù)功能:查詢電腦可用的串口號(hào),將其顯示在組合框中 For a = 1 To 16 '循環(huán)檢查可能存在的16個(gè)串口 On Error Resume Next '出現(xiàn)錯(cuò)誤時(shí),不會(huì)被打斷(假如電腦上可用端口為COM1、COM2、COM4,若沒有這行代碼 當(dāng)a=3時(shí)會(huì)報(bào)錯(cuò)) MSComm1.PortOpen = True '打開串口 If MSComm1.PortOpen = True Then Combo1_select.AddItem ('COM' & a), temp '將檢測(cè)可用的端口添加到組合框中
二、發(fā)送數(shù)據(jù)
采用定時(shí)器控件,可連續(xù)發(fā)送也可手動(dòng)調(diào)用發(fā)送
'函數(shù)功能:發(fā)送數(shù)據(jù)(判斷數(shù)據(jù)格式) '如何實(shí)現(xiàn):1、通過開啟定時(shí)器連續(xù)發(fā)送; 2、直接調(diào)用該函數(shù)單詞發(fā)送 Private Sub Timer1_Timer() If Option3.Value = True Then MSComm1.Output = strSendText longth = strHexToByteArray(strSendText, bytSendByte()) '只要勾選了十六進(jìn)制發(fā)送,Text2中的數(shù)據(jù)都是十六進(jìn)制的ASCII碼(文本形式)(如1的十六進(jìn)制ASCII碼為 31) MSComm1.Output = bytSendByte
三、接受數(shù)據(jù)
用MSComm控件的OnComm事件。當(dāng)接收到數(shù)據(jù)時(shí),就會(huì)觸發(fā)OnComm事件,從而接收到數(shù)據(jù)。
'只要有通訊錯(cuò)誤或事件發(fā)生時(shí)都會(huì)產(chǎn)生 OnComm 事件 Private Sub MSComm1_OnComm() Dim intInputLen As Integer Select Case MSComm1.CommEvent Case comEvReceive '接受事件中斷 If Option1.Value = True Then MSComm1.InputMode = 1 '1:十六進(jìn)制顯示 MSComm1.InputMode = 0 '0:文本方式顯示 intInputLen = MSComm1.InBufferCount bytInput = MSComm1.Input '提取接收緩沖區(qū)中的數(shù)據(jù)(數(shù)據(jù)格式:十進(jìn)制的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函數(shù):用十進(jìn)制的ASCII碼 返回十六進(jìn)制的String Text1.Text = Text1.Text + teststring Text1.SelStart = Len(Text1.Text) '光標(biāo)移到最后,每次顯示最后一行
在這里重點(diǎn)強(qiáng)調(diào)一下MSComm控件。
該控件就時(shí)串口通訊最主要的控件,串口連接、串口通訊都是該控件。
當(dāng)新加載工程時(shí),在左側(cè)控件窗口中是沒有該控件的,如下圖:
?
需要手動(dòng)去添加:工程——>部件——>Microsoft Comm Control 6.0前面勾選上

完整開源工程:https://download.csdn.net/download/m0_59113542/76680304
下面這個(gè)也是用vb6.0做的溫度采集控制系統(tǒng),單片機(jī)測(cè)數(shù)據(jù)經(jīng)過串口傳輸給上位機(jī)顯示。
開源工程:https://download.csdn.net/download/m0_59113542/77294120
歡迎大家提出寶貴的意見。
有機(jī)會(huì)一起討論代碼,嘿嘿嘿!
|