找回密码
 立即注册
收起左侧

串口收取数据

4
回复
6404
查看
[复制链接]
累计签到:29 天
连续签到:1 天
来源: 2018-3-17 09:04:46 显示全部楼层 |阅读模式
2Qter豆
串口通信,发命令给设备,设备回相应的数据,这里就是想读取串口回来的数据,但是从发命令到接受完毕,需要300ms左右,不想使用connect的信号与槽机制,而是通过serialport->readAll()读取,需要加一个延时,请问怎么处理?

回复

使用道具 举报

累计签到:15 天
连续签到:1 天
2018-3-18 16:05:03 显示全部楼层
在C#中使用过  serialport,并没有用异步接收的方式。
而是 system.sleep 200ms,
然后再校验readall的结果是不是自己想要的。
回复

使用道具 举报

累计签到:15 天
连续签到:1 天
2018-3-18 16:11:32 显示全部楼层
QTime delayTime = QTime::currentTime().addMSecs(3000);  //在当前时间上增加3S  
/* lyh delete -> 避免有拉拽小票冲突 */  
while( QTime::currentTime() < delayTime)  
    QCoreApplication::processEvents(QEventLoop::AllEvents, 100);


这个实现好逗。
回复

使用道具 举报

累计签到:29 天
连续签到:1 天
2018-3-20 10:22:55 显示全部楼层
memorysevencat 发表于 2018-3-18 16:11
QTime delayTime = QTime::currentTime().addMSecs(3000);  //在当前时间上增加3S  
/* lyh delete -> 避免 ...

用了这个方法,但是读不到数据
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2018-3-23 10:55:19 显示全部楼层
有个简单方法,亲测有效;接收成功率 99.99%   1.串口有数据触发定时器,定时器初值设置300ms,建议是350ms左右,2connect 定时与 readall;读取出数据就可以了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了