当前位置: 技术问答>linux和unix
Linux 串口读取信息出现丢码为什么?
来源: 互联网 发布时间:2016-11-19
本文导语: 串口读写用字符串能够正确的通信。 但是用帧来通信要出现丢码的现象问问各位大虾怎么办了? Send:0x68 0x71 0x17 0x03 0x01 0x00 0x00 0x68 0x01 0x02 0x43 0xC3 0x65 0x16 Recive: 正确: 0x68 0x71 0x17 0x03 0x01 0x00 0x00 0x68 ...
串口读写用字符串能够正确的通信。
但是用帧来通信要出现丢码的现象问问各位大虾怎么办了?
Send:0x68 0x71 0x17 0x03 0x01 0x00 0x00 0x68 0x01 0x02 0x43 0xC3 0x65 0x16
Recive:
正确: 0x68 0x71 0x17 0x03 0x01 0x00 0x00 0x68 0x81 0x06 0x43 0xC3 0x58 0x46 0x33 0x33 0xED 0x16
而现在返回:
0x68 0x71 0x17 0x03 0x01 0x00 0x00 0x68 0x01 0x06 0x43 0x43 0x58 0x46 0x33 0x33 0x6d 0x16
我这里看来一下
(0x81) = 1000 0001
(0x01) = 0000 0001
(0xC3) = 1100 0011
(0x43) = 0100 0011
(0xED) = 1110 1101
(0x6d) = 0110 1101
返回的长度也是齐的,但是不是全部都是正确的,这3个就是丢码的数据..但是其他的又没有丢,我不知道为什么,各位大虾能给我说一说吗?
再次强调,发送字符串是能够正常接收的
eg:
Send : "HELLO"
Recive: "HELLO"
但是用帧来通信要出现丢码的现象问问各位大虾怎么办了?
Send:0x68 0x71 0x17 0x03 0x01 0x00 0x00 0x68 0x01 0x02 0x43 0xC3 0x65 0x16
Recive:
正确: 0x68 0x71 0x17 0x03 0x01 0x00 0x00 0x68 0x81 0x06 0x43 0xC3 0x58 0x46 0x33 0x33 0xED 0x16
而现在返回:
0x68 0x71 0x17 0x03 0x01 0x00 0x00 0x68 0x01 0x06 0x43 0x43 0x58 0x46 0x33 0x33 0x6d 0x16
我这里看来一下
(0x81) = 1000 0001
(0x01) = 0000 0001
(0xC3) = 1100 0011
(0x43) = 0100 0011
(0xED) = 1110 1101
(0x6d) = 0110 1101
返回的长度也是齐的,但是不是全部都是正确的,这3个就是丢码的数据..但是其他的又没有丢,我不知道为什么,各位大虾能给我说一说吗?
再次强调,发送字符串是能够正常接收的
eg:
Send : "HELLO"
Recive: "HELLO"
|
接收端或发送端的串口的DataBits设置成了7bit,所以会出现这种情况,字符串的ascii码值用不到最高位