今天做USB的Gsensor程序发现读到的数据总是校验不过,无法进一步解析数据,而在Windows下通过工具读出来的数据均是正常的。
于是做出了串口读上来的数据有加过工的可能,因为该Sensor是以二进制形式进行数据上报的,通常串口配置是以ASCII码为准,猜测有可能是将读到的回车和换行之类的做了处理,因为便于ASCII码的字串的显示。
于是通过屏蔽这些标志后 , 后解决串口读二进制数据校验错误问题, 也证明了猜想是正确的 。
new.c_iflag &= ~(ICRNL | IXON | INLCR | IGNCR | IXOFF | IUCLC | ISTRIP );
c_iflag:输入模式标志,控制终端输入方式,具体参数如下所示。
c_iflag参数表
键值说明
IGNBRK 忽略BREAK键输入
文章来源: Linux读二进制串口数据异常,数据校验出错.