VB在做上位机监控时串口通信数据的接收发送细节很不懂
求助VB问题,做老师的上位机监控
这是串口通信中的一段
If MSComm1.CommEvent = comEvReceive Then '接收事件- -- - -- --
'Sleep (80) '可能的最大的长度是64+6=70,波特率为9600 延时至少 需要59ms
MSComm1.InputLen = 4 '一次从input读取4个字节数据
If MSComm1.InBufferCount >= 4 Then '如果当前缓冲区数据超过4个字节
ReDim bytInput2(0 To 3) As Byte
bytInput2 = MSComm1.Input '读数据
'ReDim Preserve bytInput2(0 To 4) As Byte '扩容
If bytInput2(0) = &HAA And bytInput2(1) = &H10 Then '判断块头 aa 十进制为170 且次数据为 读的意思
'If bytInput2(0) = 97 Then '判断块头 小写a
DataValid = True
DataLen = bytInput2(3) '数据长度??????????????????????????
DataLen怎么能这样赋值 那不直接等于1了么?
[解决办法]
串口通信,说白了就是协议的研究
[解决办法]
DataLen = bytInput2(3) '数据长度
bytInput2的第4个字节表示长度,怎么一定是1??
[解决办法]
If bytInput2(0) = &HAA And bytInput2(1) = &H10 Then '判断块头 aa 十进制为170 且次数据为 读的意思
'If bytInput2(0) = 97 Then '判断块头 小写a
DataValid = True
DataLen = bytInput2(3) '数据长度??????????????????????????
从这里看可能第一字节为帧头0xaa,第二字节为“R/W”,第四字节为数据长度。你在问问清楚。
[解决办法]
http://download.csdn.net/detail/veron_04/3601715
[解决办法]
这是一段不定长通讯协议获取包头的部分。包头长度 4 字节。
包头标志是 0xAA,第四字节是长度。
纳闷 3 楼如何看出第二字节是 R/W?
[解决办法]
我也没看出来,为什么楼主觉得这样赋值就一定是1呢?
前面不是通过
bytInput2 = MSComm1.Input
给bytInput2(3)赋过值了吗