电竞比分网-中国电竞赛事及体育赛事平台

分享

vb6.0開發(fā)的上位機(jī)串口助手(自動(dòng)識(shí)別電腦端口號(hào)、支持文本、十六進(jìn)制發(fā)送)

 昵稱40538106 2022-09-25 發(fā)布于上海

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)而不是單純的羅列出來。

  1. '函數(shù)功能:查詢電腦可用的串口號(hào),將其顯示在組合框中
  2. Private Sub Uart_Init()
  3. Dim a
  4. Dim temp%
  5. temp = 0
  6. For a = 1 To 16 '循環(huán)檢查可能存在的16個(gè)串口
  7. MSComm1.CommPort = a
  8. On Error Resume Next '出現(xiàn)錯(cuò)誤時(shí),不會(huì)被打斷(假如電腦上可用端口為COM1、COM2、COM4,若沒有這行代碼 當(dāng)a=3時(shí)會(huì)報(bào)錯(cuò))
  9. MSComm1.PortOpen = True '打開串口
  10. If MSComm1.PortOpen = True Then
  11. Combo1_select.AddItem ('COM' & a), temp '將檢測(cè)可用的端口添加到組合框中
  12. temp = temp + 1
  13. MSComm1.PortOpen = False
  14. End If
  15. Next

二、發(fā)送數(shù)據(jù)

采用定時(shí)器控件,可連續(xù)發(fā)送也可手動(dòng)調(diào)用發(fā)送

  1. '函數(shù)功能:發(fā)送數(shù)據(jù)(判斷數(shù)據(jù)格式)
  2. '如何實(shí)現(xiàn):1、通過開啟定時(shí)器連續(xù)發(fā)送; 2、直接調(diào)用該函數(shù)單詞發(fā)送
  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()) '只要勾選了十六進(jìn)制發(fā)送,Text2中的數(shù)據(jù)都是十六進(jìn)制的ASCII碼(文本形式)(如1的十六進(jìn)制ASCII碼為 31)
  15. If longth > 0 Then
  16. MSComm1.Output = bytSendByte
  17. End If
  18. End If
  19. End Sub

三、接受數(shù)據(jù)

用MSComm控件的OnComm事件。當(dāng)接收到數(shù)據(jù)時(shí),就會(huì)觸發(fā)OnComm事件,從而接收到數(shù)據(jù)。

  1. '只要有通訊錯(cuò)誤或事件發(fā)生時(shí)都會(huì)產(chǎn)生 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:十六進(jìn)制顯示
  11. Else
  12. MSComm1.InputMode = 0 '0:文本方式顯示
  13. End If
  14. intInputLen = MSComm1.InBufferCount
  15. bytInput = MSComm1.Input '提取接收緩沖區(qū)中的數(shù)據(jù)(數(shù)據(jù)格式:十進(jìn)制的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函數(shù):用十進(jìn)制的ASCII碼 返回十六進(jìn)制的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) '光標(biāo)移到最后,每次顯示最后一行
  26. End Sub

在這里重點(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ì)一起討論代碼,嘿嘿嘿!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多