我收到的数据为 5 3 A 0 7C 0 75 0 76 0 77 0 79 86 4 而我只要0 7C 0 75 0 76 0 77 0 79这几个数据
例如:0 7c 先合并成一个数07c 然后转换成十进制温度值为 12.4°C Private Sub MSComm1_OnComm()
Dim i As Long
Dim inData() As ByteMSComm1.InputMode = comInputModeBinary
If MSComm1.InBufferCount > 0 Then
inData = MSComm1.Input
For i = 0 To UBound(inData)
*************** 此处转化不会了,该怎么写,请各位帮帮忙。
Next i
End If
End Sub
例如:0 7c 先合并成一个数07c 然后转换成十进制温度值为 12.4°C Private Sub MSComm1_OnComm()
Dim i As Long
Dim inData() As ByteMSComm1.InputMode = comInputModeBinary
If MSComm1.InBufferCount > 0 Then
inData = MSComm1.Input
For i = 0 To UBound(inData)
*************** 此处转化不会了,该怎么写,请各位帮帮忙。
Next i
End If
End Sub
'建议你改成这个样子
Dim ReadByte(0 To 99) As Byte '接收字节数组
Private Sub Form_Load()
With MSComm1
.CommPort = 1
.InputLen = 1
.Settings = "9600,N,8,1"
.RThreshold = 1
.InputMode = comInputModeBinary
End With
End SubPrivate Sub MSComm1_OnComm()
Dim intP As Integer
Dim varP As Variant
MSComm1.RThreshold = 0 '屏蔽OnComm事件的发生
intP = 0
Do
varP = MSComm1.Input
If Not IsNull(varP) Then ReadByte(intP) = varP(0)
Loop Until MSComm1.InBufferCount = 0
'完成通信,处理数据
'取出ReadByte的第3、4个元素即可(起始是第0个)
End Sub
If Not IsNull(varP) Then ReadByte(intP) = varP(0)
Loop Until MSComm1.InBufferCount = 0
这段代码是什么意思,我有点看不懂,能解释一下吗? 就是我上面说得,解析成我要的那种格式后,每个温度值要放入一个textbox中。。 就是这个地方,我不会了。不知道该怎么解析,我解析过,但是出来的数据都和以前的不对应了
53 A0 7C....
还是:
5 3 A 0 7C 0 75
也就是说5到底是05 还是53?
比如说我上面代码中* 号处的 Text1.Text = Text1.Text & Hex(inData(i)) & " " 出来的数据就是
5 3 A 0 7C 0 75 0 76 0 77 0 79 86 4 但是不能把这个数据放入文本框叫用户看吧?人家看不懂呀? 咱们要解析成我说的那种格式 比如 12.4°C 用户才能看懂啊。 我现在就是这里不会,我不知道该如何把这一串数据解析成我要的格式。。
不就是怎么讲00 7C转换?
就拿7C来说吧,Val("&H" & "7C")
转换出来是124 你自己再变换一下就OK了
Private Sub MSComm1_OnComm() '接收数据
Dim strBuff As String
Select Case MSComm1.CommEvent
Case 2
MSComm1.InputLen = 0
strBuff = MSComm1.Input
BytReceived() = strBuff
jieshou
lenInput = Len(strData)
Text2 = lenInput \ 2
'数据处理代码
End Select
End SubPublic Function jieshou() '接收数据处理为16进制
Dim i As Integer
For i = 0 To UBound(BytReceived)
If Len(Hex(BytReceived(i))) = 1 Then
strData = strData & "0" & Hex(BytReceived(i))
Else
strData = strData & Hex(BytReceived(i))
End If
Next
txtReceive = strData
End Function详细可参阅:http://www.vbgood.com/thread-83700-1-1.html