VB串口通讯求助

来源:百度知道 编辑:UC知道 时间:2024/06/03 15:06:17
pc机与单片机8051通讯,pc及向8051发一个字节的命令(例如一个回车符:0x0d),8051则向pc发送32个字节的二进制数例如:
1111 1111 1010 1010 1101 0010 .......1111 1111共256位bit,第1个和最后1个无用,请教使用vb如何将第2-3、4-5、5-6、....、30-31共15个数据(每2个字节为1个数据)按照十进制显示出来?例如第2-3:1010 1010 1101 0010显示为43730?
万分感谢高手!
这3位的办法我试验后都不行,但我还是感谢他们!

编了一个小函数,希望能帮你,下面是一个测试程序
Function Bin2Dec(ByVal Bin As String) As Long
Bin = Trim(Bin)
BitNum = Len(Bin)
For i = BitNum To 1 Step -1
Bin2Dec = Bin2Dec + 2 ^ (BitNum - i) * Val(Mid(Bin, i, 1))
Next
End Function
Sub test()
MsgBox Bin2Dec("1010101011010010")
End Sub

加入MSComm控件
在MSComm1_OnComm()里面 写:
Dim bufcount as Integer
Dim v As Variant
Dim buf() As Byte
bufcount = MSComm1.InBufferCount
v = MSComm1.Input
buf() = v

有了buf()这个数组以及它的大小 你就可以直接处理了

以下代码将2个byte相连接后转为十进制显示数据,并去掉Buf(0)和Buf(31)首尾两个数不要:
dim i as integer
for i=1 to 30
print buf(i) + buf(i+1) * &HFF
i=i+1
next i