久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 9698|回復(fù): 16
收起左側(cè)

VB6.0制作串口調(diào)試軟件代碼設(shè)計(jì)詳解

  [復(fù)制鏈接]
ID:445926 發(fā)表于 2019-3-14 20:47 | 顯示全部樓層 |閱讀模式
這是我第一次發(fā)帖子,發(fā)的不好多多擔(dān)待!這學(xué)期學(xué)校開(kāi)了單片機(jī)的課程,我從小就喜歡搗鼓一些小玩意,家里的電器設(shè)備基本上都拆過(guò),有些能裝上去,有些則裝不上去。上了大學(xué),經(jīng)濟(jì)條件寬裕了,加上網(wǎng)絡(luò)資源日漸豐富,更加喜歡玩電子了。沒(méi)有單片機(jī)課之前,玩的是Arduino.但是Arduino 根本學(xué)不到什么東西,里面用的函數(shù)庫(kù)文件都是別人封裝好的,直接拿來(lái)用罷了。而51單片機(jī)是從零基礎(chǔ)開(kāi)始的,相當(dāng)于造輪子,雖然也是別人研究出來(lái)的,但更接近于底層原理,學(xué)起來(lái)更加系統(tǒng)。由于有基礎(chǔ),所以并不是太難。調(diào)試單片機(jī)時(shí)用到串口調(diào)試軟件,發(fā)現(xiàn)網(wǎng)上有好多。就想著自己能不能也寫一個(gè)軟件。然后就自學(xué)了vb.雖然這個(gè)開(kāi)發(fā)環(huán)境是98年出版的。但是不得不說(shuō),微軟的東西確實(shí)很強(qiáng)大,兼容性沒(méi)話說(shuō)。于是就開(kāi)始了我的編程之路。
1.開(kāi)發(fā)環(huán)境搭建
網(wǎng)上下載VB6.0的安裝包,建議企業(yè)版!安裝軟件應(yīng)該沒(méi)啥問(wèn)題,裝完打開(kāi)我們的VB6.0
軟件界面.png

2.軟件界面設(shè)計(jì)

其實(shí)很簡(jiǎn)單,直接把左邊的控件拖放到主窗體里就行了,加一些組框可以使界面更整潔
軟件界面2.png

3.代碼編寫
  1. Dim fasongcishu, jieshoucishu As Integer
  2. Dim fasongzijie, jieshouzijie, jieshouzijie1, fasongzijie1 As Byte

  3. Private Sub Command5_Click()
  4. List1.Clear
  5. StatusBar1.Panels(4).Text = "接收次數(shù):"
  6. StatusBar1.Panels(3).Text = "接收字節(jié):"
  7. StatusBar1.Panels(2).Text = "發(fā)送次數(shù):"
  8. StatusBar1.Panels(1).Text = "發(fā)送字節(jié):"
  9. End Sub

  10. Private Sub Form_Load()
  11. If Option1.Value = True Then
  12. MSComm1.InputMode = comInputModeText
  13. End If
  14. If Option2.Value = True Then
  15. MSComm1.InputMode = comInputModeBinary
  16. End If
  17. GetAvailablePorts
  18. Combo1.Text = "COM1"
  19. End Sub
  20. Private Sub Command1_Click()
  21. If MSComm1.PortOpen = True Then
  22. MsgBox "串口已經(jīng)打開(kāi)"
  23. Else

  24. Dim bote, shuju, tingzhi, jiaoyan, Seting As String
  25. bote = Combo2.Text
  26. shuju = Combo3.Text
  27. tingzhi = Combo4.Text
  28. jiaoyan = Combo5.Text
  29. Seting = bote & "," & jiaoyan & "," & shuju & "," & tingzhi
  30. MSComm1.CommPort = Split(Combo1.Text, "COM")(1)
  31. MSComm1.Settings = Seting
  32. MSComm1.OutBufferCount = 0
  33. MSComm1.InBufferCount = 0

  34. MSComm1.InputMode = 0
  35. MSComm1.InputLen = 0

  36. MSComm1.PortOpen = True
  37. Label6.Caption = "串口已經(jīng)連接"
  38. Shape1.BackColor = RGB(0, 200, 0)
  39. End If
  40. End Sub

  41. Private Sub Command2_Click()
  42. If MSComm1.PortOpen = False Then
  43. MsgBox "串口尚未打開(kāi)"
  44. Else
  45. MSComm1.PortOpen = False
  46. Label6.Caption = "串口已經(jīng)斷開(kāi)"
  47. Shape1.BackColor = RGB(200, 0, 0)
  48. End If
  49. End Sub

  50. Private Sub Command3_Click()
  51. If MSComm1.PortOpen = True Then
  52. MsgBox "串口已經(jīng)打開(kāi),請(qǐng)斷開(kāi)連接再刷新"
  53. Else
  54. GetAvailablePorts
  55. Combo1.Text = "COM1"
  56. End If
  57. End Sub



  58. Private Sub Command4_Click()
  59. If MSComm1.PortOpen = False Then
  60. MsgBox "串口尚未連接"
  61. Else

  62.   If Option1.Value = True Then
  63.   MSComm1.InputMode = comInputModeText
  64.   End If
  65.   If Option2.Value = True Then
  66.   MSComm1.InputMode = comInputModeBinary
  67.   End If
  68. Me.MSComm1.Output = Text1.Text
  69. List1.AddItem ("來(lái)自計(jì)算機(jī):" & Text1.Text)
  70. fasongzijie1 = LenB(StrConv(Text1.Text, vbFromUnicode))
  71. fasongzijie = fasongzijie + fasongzijie1
  72. StatusBar1.Panels(1).Text = "發(fā)送字節(jié):" & fasongzijie
  73. fasongcishu = fasongcishu + 1
  74. StatusBar1.Panels(2).Text = "發(fā)送次數(shù):" & fasongcishu
  75. Text1.Text = ""
  76. StatusBar1.Panels(5).Text = "發(fā)送成功!"
  77. End If
  78. MSComm1.OutBufferCount = 0
  79. MSComm1.InBufferCount = 0
  80. MSComm1.InputMode = 1
  81. MSComm1.InputLen = 0
  82. End Sub

  83. Private Sub GetAvailablePorts()
  84.     Dim i As Integer
  85.     Dim blnNoPort As Boolean
  86.     With Combo1
  87.         .Clear
  88.         '嘗試打開(kāi)COM1到COM16
  89.         For i = 1 To 16
  90.             MSComm1.CommPort = i
  91.             '打開(kāi)錯(cuò)誤陷阱
  92.             On Error Resume Next
  93.             MSComm1.PortOpen = True
  94.             '如果串口被成功打開(kāi),則這個(gè)串口存在
  95.             If Err.Number = 0 Then
  96.                 .AddItem "COM" & i
  97.                 .ItemData(.NewIndex) = i
  98.             End If
  99.             Err.Clear
  100.             ' 關(guān)閉已打開(kāi)的串口
  101.             If MSComm1.PortOpen Then MSComm1.PortOpen = False
  102.             ' 關(guān)閉錯(cuò)誤陷阱
  103.             On Error GoTo 0
  104.         Next
  105.         blnNoPort = .ListCount = 0
  106.     End With
  107.     If blnNoPort Then
  108.         MsgBox "計(jì)算機(jī)上沒(méi)有串行通信接口"
  109.     End If
  110. End Sub

  111.   


  112. Private Sub MSComm1_OnComm()

  113. Dim CommData As String
  114. Dim BytReceived() As Byte
  115.      Dim strBuff As String
  116.      Dim i As Integer
  117.      Select Case MSComm1.CommEvent    '事件發(fā)生
  118.         Case 2
  119.              Cls
  120.              MSComm1.InputLen = 0     '讀入緩沖區(qū)全部?jī)?nèi)容
  121.             strBuff = MSComm1.Input '讀入到緩沖區(qū)
  122. If strBuff = "" Then
  123.             Else
  124.          If MSComm1.InputMode = comInputModeBinary Then
  125.              BytReceived() = strBuff '如果是二進(jìn)制接收模式則進(jìn)行數(shù)據(jù)處理,否則直接顯示字符串
  126.             For i = 0 To UBound(BytReceived)
  127.                  If Len(Hex(BytReceived(i))) = 1 Then
  128.                      strData = strData & "0" & Hex(BytReceived(i)) & " " '如果只有一個(gè)字符,則前補(bǔ)0,如F顯示0F,最后補(bǔ)空格
  129.                 Else                                                    '方便顯示觀察如: 00 0F FE
  130.                     strData = strData & Hex(BytReceived(i)) & " "
  131.                  End If
  132.             Next
  133.              CommData = strData
  134.              strData = ""
  135.          Else
  136.              CommData = strBuff
  137.          End If
  138.      

  139. List1.AddItem ("來(lái)自單片機(jī):" & CommData)
  140. jieshoucishu = jieshoucishu + 1
  141. StatusBar1.Panels(4).Text = "接收次數(shù):" & jieshoucishu
  142. jieshouzijie1 = LenB(StrConv(CommData, vbFromUnicode))
  143. jieshouzijie = jieshouzijie + jieshouzijie1
  144. StatusBar1.Panels(3).Text = "接收字節(jié):" & jieshouzijie
  145. End If
  146. End Select
  147. End Sub
復(fù)制代碼

4.和另外一個(gè)串口調(diào)試軟件進(jìn)行連接通訊
調(diào)試.png

窗體小一點(diǎn)的是我的軟件,后面的是某國(guó)產(chǎn)軟件。對(duì)了,在同一臺(tái)電腦上調(diào)試時(shí)需要虛擬串口軟件
虛擬串口.png
COM2和COM3就是虛擬串口生成的端口。
分別對(duì)應(yīng)我們軟件里的串口COM2和COM3

差不多就是這些了,單片機(jī)里設(shè)置好了串口通訊的參數(shù),連接電腦,用我的軟件就可以調(diào)試了。最簡(jiǎn)單的可以控制LED 的亮滅。上位機(jī)軟件就是這樣開(kāi)發(fā)出來(lái)的,怎么樣,你Get到了嗎?

評(píng)分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:190832 發(fā)表于 2019-3-14 22:33 | 顯示全部樓層
建議試試C#的winform
回復(fù)

使用道具 舉報(bào)

ID:445926 發(fā)表于 2019-3-14 22:56 | 顯示全部樓層

VB.NET我也會(huì)和C#.NET 差不多。不過(guò)我不喜歡C#的對(duì)括號(hào){}
回復(fù)

使用道具 舉報(bào)

ID:193628 發(fā)表于 2019-3-16 16:48 | 顯示全部樓層
玩的不錯(cuò)啊,好~~~~~~~~~~
回復(fù)

使用道具 舉報(bào)

ID:333807 發(fā)表于 2019-4-5 17:30 | 顯示全部樓層
好厲害啊
回復(fù)

使用道具 舉報(bào)

ID:240545 發(fā)表于 2019-4-5 23:14 | 顯示全部樓層
mark,贊一個(gè)!
回復(fù)

使用道具 舉報(bào)

ID:476871 發(fā)表于 2019-4-6 11:09 | 顯示全部樓層
很好,樓主贊一個(gè)
回復(fù)

使用道具 舉報(bào)

ID:633458 發(fā)表于 2019-10-31 19:32 | 顯示全部樓層
大佬幫幫我QAQ,我這邊直接接收是正常的,但是只要往外發(fā)送數(shù)據(jù)之后,再接收到的就全是16進(jìn)制了QAQ
回復(fù)

使用道具 舉報(bào)

ID:637553 發(fā)表于 2019-11-7 16:47 | 顯示全部樓層
幸福假小子 發(fā)表于 2019-3-14 22:56
VB.NET我也會(huì)和C#.NET 差不多。不過(guò)我不喜歡C#的對(duì)括號(hào){}

Private Sub Form_Load()
MSComm1.CommPort = 4 '設(shè)定 Com1 用來(lái)進(jìn)行串口通訊
MSComm1.PortOpen = True
MSComm1.Settings = "9600,n,8,1"  '9600 波特率,無(wú)校驗(yàn),8 位數(shù)據(jù)位,1 位停止位


MSComm1.Output = Text1.Text '將 Text1 中的字符串寫入傳輸寄存器
'Text2.Text = MSComm1.Input
End Sub

Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = flse
End Sub

Private Sub Timer1_Timer()

Dim buffer As String '定義 buffer 為字符串
buffer = MSComm1.Input '將接收寄存器中的字符賦值給 buffer
List1.AddItem buffer '將 buffer 的值加入到列表框中顯示出來(lái)
End Sub
回復(fù)

使用道具 舉報(bào)

ID:637553 發(fā)表于 2019-11-7 16:47 | 顯示全部樓層
幸福假小子 發(fā)表于 2019-3-14 22:56
VB.NET我也會(huì)和C#.NET 差不多。不過(guò)我不喜歡C#的對(duì)括號(hào){}

CY:
求指點(diǎn)一下,VB做一個(gè)通訊,讀多功能儀表數(shù)據(jù)

CY:
讀不出來(lái),

CY:
問(wèn)題出在哪里

CY:
串口2.3腳短接,文本框能顯示出發(fā)送的指令碼。
回復(fù)

使用道具 舉報(bào)

ID:609560 發(fā)表于 2019-11-8 09:37 | 顯示全部樓層
CYY8530 發(fā)表于 2019-11-7 16:47
CY:
求指點(diǎn)一下,VB做一個(gè)通訊,讀多功能儀表數(shù)據(jù)

先用下位機(jī)返回?cái)?shù)據(jù)接收結(jié)果,確保數(shù)據(jù)被正確接收。然後再檢查下位機(jī)接收數(shù)據(jù)處理方法及返回?cái)?shù)據(jù)
回復(fù)

使用道具 舉報(bào)

ID:298008 發(fā)表于 2020-3-29 11:18 | 顯示全部樓層
謝謝樓主分享!!!
回復(fù)

使用道具 舉報(bào)

ID:323651 發(fā)表于 2020-10-21 21:34 | 顯示全部樓層
謝謝分享,做些簡(jiǎn)單應(yīng)用,不錯(cuò)的
回復(fù)

使用道具 舉報(bào)

ID:848824 發(fā)表于 2021-2-17 13:21 | 顯示全部樓層
怎么控制小燈亮滅
回復(fù)

使用道具 舉報(bào)

ID:1016815 發(fā)表于 2022-4-8 18:16 | 顯示全部樓層
朋友能發(fā)源文件不,比較菜,困難多,謝謝!
回復(fù)

使用道具 舉報(bào)

ID:1010435 發(fā)表于 2022-4-9 22:39 | 顯示全部樓層
我只會(huì)用VB做計(jì)算器
回復(fù)

使用道具 舉報(bào)

ID:1011216 發(fā)表于 2022-4-10 09:52 來(lái)自手機(jī) | 顯示全部樓層
串口簡(jiǎn)單收發(fā)不難,難再于多次收發(fā)還能穩(wěn)定實(shí)現(xiàn)功能
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 操操操av | 欧美亚洲另类丝袜综合网动图 | 国产视频一区二区 | 国产成人精品免高潮在线观看 | 91免费在线看 | 欧美一级二级视频 | 成人午夜影院 | 九九热精品视频 | 特黄毛片 | 成人免费观看男女羞羞视频 | 国产日韩在线观看一区 | 国产精品久久久久久亚洲调教 | 亚洲欧美综合 | 亚洲精选一区二区 | a黄视频| 亚洲精品 在线播放 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 视频一区二区在线观看 | 91久久精品日日躁夜夜躁国产 | 91九色porny首页最多播放 | 亚洲人人舔人人 | 精品九九久久 | 一级做a爰片性色毛片16 | 日韩在线小视频 | 亚洲精品一区二区在线 | 三级av网址 | 日韩在线三级 | 激情伊人网 | 国产专区视频 | 日操操| 精品日韩在线 | 精品国产一区二区三区成人影院 | 久久网一区二区 | 日本超碰 | 日韩欧美在线不卡 | 亚洲天堂影院 | 日韩精品一区在线观看 | 91久久精品国产91久久性色tv | 久久国产欧美一区二区三区精品 | 狠狠久| 免费一级大片 |