,
碰到了诡异的问题,受尽折磨的他告诉我:
数据被"吃掉"了,还有人"调包"
"案情"分析
通过大量分析发送和接收的数据对比,看出了些端倪
数据被"吃掉"
程序在接收数据时
0x13,0x11总是收不到...数据被"调包"
串口发送方发0x0D,接收方收到0x0A
串口发送方发0x0A,接收方收到0x0D
找证据
从termios结构中找到有几个关键位设置对其有影响
c_iflag 中的INLCR,ICRNL...(非POSIX)
IMAXBEL Echo BEL on input line too long 当输入队列满的时候开始响铃
c_oflag用于设置如何处理输出数据,包含如下内容:
宏 英文说明 中文说明...垂直制表符输出延迟,可以取VT0或VT1
FFDLY Mask for delay time needed after FFs 换页延迟,可以取FF0或FF1
c_lflag用于设置本地模式,控制终端编辑功能,决定串口驱动如何处理输入字符...(非POSIX)
TOSTOP Send SIGTTOU for background output 向后台输出发送SIGTTOU信号
破案实战总结
结合上面的宏定义说明,对应修改配置如下,问题解决: