与设备通信中,每次收到的数据包长度不固定,
关键的是,数据中会有一些不需要的数据,需要的只是以帧头开始,获取帧长的一串数据
有效数据格式规则:
帧头EE 帧长 00 0A (就是不含帧头10个字节) XX XX XX XX XX XX XX XX我现在在初始化的时候 comLocal.RThreshold = 1但是在oncomm事件里
Select Case comLocal.CommEvent
Case comEvReceive '接受字符事件 //事件值为2表示接收缓冲区内有字符
If comLocal.InBufferCount > 0 Then
Label1.Caption = comLocal.InBufferCount
comLocal.RThreshold = 0 '关闭接收
SCOM_FirstRev = comLocal.Input
sBuffstring = ParaDecode(SCOM_FirstRev, True) ‘转换16进制
Text1.Text = Text1.Text & "—>(" & Label1.Caption & ")" & sBuffstring & vbCrLf
comLocal.RThreshold = 1 '开启接收这个时候我会收到长度不一的字符串,都不固定
可能是
—>(1)00
—>(16)00 00 22 8B 99 D9 AD C4 11 CA 33 C6 66 67 B6 F4
—>(8)43 4F 4E 46 49 47 20 46
—>(13)50 47 41 20 53 55 43 43 45 53 53 20 20
—>(8)EE 00 09 0A FF 01 04 01
—>(4)01 00 12 48
也可能是—>(1)00
—>(16)00 00 22 8B 99 D9 AD C4 11 CA 33 C6 66 67 B6 F4
—>(8)43 4F 4E 46 49 47 20 46
—>(12)50 47 41 20 53 55 43 43 45 53 53 20
—>(9)20 EE 00 09 0A FF 01 04 01
—>(4)01 00 12 48 请问如何解决这个读取问题啊,还要考虑在高速运行的情况下不出问题,现在焦头烂额。
关键的是,数据中会有一些不需要的数据,需要的只是以帧头开始,获取帧长的一串数据
有效数据格式规则:
帧头EE 帧长 00 0A (就是不含帧头10个字节) XX XX XX XX XX XX XX XX我现在在初始化的时候 comLocal.RThreshold = 1但是在oncomm事件里
Select Case comLocal.CommEvent
Case comEvReceive '接受字符事件 //事件值为2表示接收缓冲区内有字符
If comLocal.InBufferCount > 0 Then
Label1.Caption = comLocal.InBufferCount
comLocal.RThreshold = 0 '关闭接收
SCOM_FirstRev = comLocal.Input
sBuffstring = ParaDecode(SCOM_FirstRev, True) ‘转换16进制
Text1.Text = Text1.Text & "—>(" & Label1.Caption & ")" & sBuffstring & vbCrLf
comLocal.RThreshold = 1 '开启接收这个时候我会收到长度不一的字符串,都不固定
可能是
—>(1)00
—>(16)00 00 22 8B 99 D9 AD C4 11 CA 33 C6 66 67 B6 F4
—>(8)43 4F 4E 46 49 47 20 46
—>(13)50 47 41 20 53 55 43 43 45 53 53 20 20
—>(8)EE 00 09 0A FF 01 04 01
—>(4)01 00 12 48
也可能是—>(1)00
—>(16)00 00 22 8B 99 D9 AD C4 11 CA 33 C6 66 67 B6 F4
—>(8)43 4F 4E 46 49 47 20 46
—>(12)50 47 41 20 53 55 43 43 45 53 53 20
—>(9)20 EE 00 09 0A FF 01 04 01
—>(4)01 00 12 48 请问如何解决这个读取问题啊,还要考虑在高速运行的情况下不出问题,现在焦头烂额。
if Ubound(SCOM_FirstRev)-Lbound(SCOM_FirstRev)<>16 then
exit sub
end if
不知道对不对