标签:输入输出 字符转换 pre ocr 一个 输入 ascii 字节 异常问题
对于串口并不陌生,使用了N遍,总以为理解很深刻,实际上还有很多细节未知。
近期在处理新的板子发现串口收发很不正常,经常少一些数据、莫名其妙数据被串改了,导致校验通不过,现象很诡异
例如存在以下几种现象,可能就是这个问题:
这样当然不行
主要原因串口在默认情况下,会进行自动字符转换或一些特殊处理:
这些处理,感觉很智能(可能在一些特殊场合下,比较方便),实际上会给我们带来一些麻烦(我们大部分是传输二进制数据),如果不知道原因的话,往往需要花费很大精力去找原因
主要涉及到几个参数:
opt.c_iflag &= ~(ICRNL | INLCR); opt.c_iflag &= ~(IXON |IXOFF | IXANY); opt.c_oflag &= ~(ONLCR |OCRNL);
也可以参考如下代码:也可以
opt.c_oflag = 0; ///< 输出模式 opt.c_lflag = 0; ///< 本地模式 opt.c_iflag = IGNBRK; ///< 输入模式 opt.c_iflag &= ~(IXON|IXOFF|IXANY); opt.c_cc[VMIN] = 1; ///< 最少1字节 opt.c_cc[VTIME] = 1; ///< Wait time
其实还有很多参数,有兴趣的可以详细了解下。
标签:输入输出 字符转换 pre ocr 一个 输入 ascii 字节 异常问题
原文地址:https://www.cnblogs.com/winafa/p/11888635.html