- 主题:请教一个qt串口读取的问题
待读取内容是unsigned char 十六进制 一个完整数据大约30个字节
有头有尾 尾前边有一个校验字节
读的过程中发现ready情况下 readall不一定读多长 这种怎么处理好些
网上有用contains判断是否包含某个字符的方式 对十六进制的有什么好办法呢
还是只能从接收的里边先找到头再按数据长度去定位尾和校验 不够长再去等
但是感觉这种办法还是不太靠谱 如果信号处理的时候中间下位机发上来又有数据
会不会发生错过丢失的情况
请指点一二
--
FROM 120.244.24.*
感谢回复 这个contains能直接里边接一个十六进制数吗 比如0xee
【 在 hgoldfish 的大作中提到: 】
: 异步编程就是这么麻烦。qt modbus 或者 asio http 库都是帮你封装好了,才会显得好用。
: 麻烦是麻烦了点。但思路还是很清晰的,就是把一个协议封装成一个类,不断地尝试条件,条件满足调用处理器。
: struct ParseSerial {
: ...................
--
FROM 120.244.24.*
是的 是在子线程里 通过ready这个槽来处理串口接收 不ready的时候不去接收
【 在 jesce 的大作中提到: 】
: 理论上开个线程是好点, 实际用的话可能也没什么关系. 如果115200波特率30个字节, 也就3ms的时间, 一些的IDE输入字符差不多也要延时这个级别.
:
--
FROM 120.244.24.*
哈哈哈哈
【 在 hgoldfish 的大作中提到: 】
: "\xee"
: 这个是 c/cpp 的知识了。
: 所以我经常说 qt 一点都不难,难的是 cpp
: ...................
--
FROM 106.39.0.*