如何用vb把一段字符以十六进制形式通过pc串口传给单片机,然后再返回到pc上,显示在文本框里?

2025-03-18 21:08:39
推荐回答(4个)
回答1:

....首先,串口所发的数据是有码制变化的。。分为2种情况,字符串和16进制发送。

两种方式的发送和接受方法是不同的。

先说16进制的

Dim sData() As Byte
Dim bData(1 To 6) As Byte
Dim strBuff As String

MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True

bData(1) = &HE0
bData(2) = &H0
bData(3) = &H3F
bData(4) = &H0
bData(5) = &H0
bData(6) = &H1F

MSComm1.InputMode = comInputModeBinary

必须把数据先存进一个字符数组中。

下面是接收的代码
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = 2 Then

MSComm1.InputLen = 0
strBuff = MSComm1.Input
sData() = strBuff

For i = 0 To UBound(sData)
If Len(Hex(sData(i))) = 1 Then
strdata = strdata & "0" & Hex(sData(i))
Else
strdata = strdata & Hex(sData(i))
End If
Next

Text1.Text = strdata

If Text1.Text <> Text2.Text Then
Text2.Text = Text1.Text

List1.AddItem (Text2.Text)

End If

End If
End Sub

下面是发送的代码
MSComm1.Output = bData

好了16进制就是这样。
如果是字符串发送方式就简单了。。直接发送,不用存到数组中。MSComm1.Output = "abcd" 接收只需要把strBuff = MSComm1.Input放在循环中判断就行了。

说明。。一般设备控制多用字符串方法就可以了。。如投影机的控制等。而单片机的控制多用于16进制传输的方法。先要搞清楚用的什么方式。

再说编码的问题。。一般都是 明码转成ascII码再转成16进制码。然后再发送。

再解释一下用数组的理由:
单片机接受数据一般的都是一串16进制值的组合。如1f 00 00 1e ff 2c等等。。要一次发送出一个组合的数据,必须用数组存这些数据后发送这个数组!

回答2:

VB 不难的

多看 MSDN

建议 看书 Visual_Basic与_RS-232_串行通信控制

清华出版,很经典

回答3:

太阳雨多年积攒极其珍贵的原创VB串口通信技术资料V3.0(800M)

1.VB串口通信编程源码200个,多种行业多种应用...
2.VB串口通信技术文章160篇,详尽地对VB串口通信的诠释...
3.VB串口通信电子书籍16部,工业通信名家著作,经典细致...
4.VB串口通信控件16个,简化串口通信编码,提高开发效率...
5.VB串口视频教程46个,两套完整视频教程,讲解直观,更快掌握...
6.OSI网络模型教程48M,帮助你学习网络通讯基础...
7.串口硬件层知识资料包24M,对RS232,RS422,RS485等串行接口的完美解释...
8.串口调试工具80个,应用于各种串口调试与校验计算...
9.程序员发展类文章和书籍12部,帮助您的成长,健康和发展....
10.更送虚拟串口调试软件, 帮助你在没有串口的电脑上也能正常调试...

你在淘宝搜索“太阳雨串口资料”就可以找到,希望可以帮助到你。

回答4:

没有具体的问题?