近日项目使用Qt用到串口,使用了第三方库qextserialport,开始进行一切顺利,后来调试时出现问题,发送串口数据时,大于127的数接收会发生错误。
例如:发送0xe1,接收到的却是0x61,接收值和发送值之间正好相差了127.发送的方法是按照第三方库例程里的方式使用了QByteArray。
在网上查找资料,发现众多网友都碰到了这种问题,而回答基本有三种:
①无解,求解中……
②将发送数据转换成字符串进行发送。
③原因是数据类型的问题,既signed 和 unsigned 的问题。这点说得很模糊,没有给出具体的操作方法。按照此种说法,尝试了各

本文描述了在使用Qt的qextserialport库进行串口通信时遇到的问题,即发送大于127的数据时接收错误。经过排查,发现可能的原因是qextserialport库本身存在缺陷,而非数据类型转换问题。解决方案是更换串口库,如使用Qt5.1中的QSerialPort类,该类在qextserialport基础上改进,能有效解决问题。
最低0.47元/天 解锁文章





