MSComm通信 接收显示问题
我的下位机给上位机发送十六进制的2在oncomm事件的comEvReceive中,
1、应当如何对所接收到的数据进行处理,使之能够在text控件中显示。
2、应当如何处理,使之能够跟integer数据类型的数进行比较。
希望懂的人给我讲解一下,有程序的话,会更好。
谢谢了。 --------------------编程问答-------------------- 2进制方式接收,将字节(Byte)数据转换为16进制字符串。
数据处理按通信协议要求做。
参阅:http://www.vbgood.com/thread-83700-1-1.html --------------------编程问答-------------------- http://download.csdn.net/detail/veron_04/1262066 --------------------编程问答-------------------- 1、将16进制Ascii转换成字符,好像是chr()asc()之类的,,,有了字符串就能够在文本中显示
2、将16进制转换成10进制,即可
我认为不用外部控件,类或者vs自带控件均可 --------------------编程问答-------------------- 你说的到底是发送“2”,还是oncomm返回了“2”?
--------------------编程问答-------------------- 实际上,无论是存储,还是设备之间传输,只有一种基于 2 进制的逐比特的高低电平串。
所谓 16 进制还是 10 进制、8 进制,都是给人看的时候,转换出的字符显示格式。有些时候,是系统自动转换的,有时候,需要通过代码转换。
因此,有一个如何解释接收到的数据的问题。
Text 方式还是二进制方式接收,实际上就是如何解释接收到的数据。例如,48 这个数,传输时是 00110000 (&H30),按 Text 方式解释则是字符 "0" 的 ASCII 码,因此会自动显示成字符 "0";反之,你得到的就是数字 48,显示方式要看你定义的格式:
十进制,转换成 &H34, &H38 两个字符;
二进制,转换成 &H30, &H30, &H31, &H31, &H30, &H30, &H30, &H30 八个字符;
八进制,转换成 &H36, &H30 两个字符……
十六进制,转换成 &H33, &H30 两个字符……
当然,缺省的是按 10 进制显示,其他格式有些是通过函数来转换的。
所以,除非你传的是十六进制字符串,例如在发送 48 时实际发送 &H33, &H30 两个字符,就不要说是按 16 进制发送的。
--------------------编程问答-------------------- ' On Error Resume Next
' Dim ReadMsg As Variant
Dim ReadMsg As String
Dim BytReceived() As Byte
Dim strBuff As String
Dim i As Integer
Select Case MSComm.CommEvent
Case comEvReceive
strBuff = MSComm.Input
BytReceived() = strBuff
For i = 0 To UBound(BytReceived)
If Len(Hex(BytReceived(i))) = 1 Then
ReadMsg = ReadMsg & "0" & Hex(BytReceived(i))
Else
ReadMsg = " " & ReadMsg & Hex(BytReceived(i))
End If
Next
CurrPressure = Val(Mid(ReadMsg, 3, 3))
CurrVolume = Val(Mid(ReadMsg, 6, 6)),
为什么接收到十六进制显示在文本中?还不停改变 --------------------编程问答-------------------- 请问哪有串行端口通信 的教程呀,我想学习
--------------------编程问答-------------------- 大家好,我也想学习!
补充:VB , COM/DCOM/COM+