• 4962阅读
  • 4回复

[提问]关于Qt访问串口的一个问题 [复制链接]

上一主题 下一主题
离线greensky10
 

只看楼主 倒序阅读 楼主  发表于: 2013-07-17
    各位前辈好,Qt在XP下访问串口大多数做法都是使用第三方类,如win_qextserialport。我现在XP系统中使用定时轮训方式访问串口,发现定时时间小于100ms之后轮询速率就没有明显提升了,例如串口每隔50ms发送数据时采集到的结果就不是单帧的了,请问这个是XP系统问题还是QTimer定时的问题???
    还有如何防止通过定时器方式采到半帧数据,就是串口正在收数据的时候,上位机程序调用了readALL函数,将当前还未发完的一帧数据取走了,剩下的部分被下次readALL读到???
离线realfan

只看该作者 1楼 发表于: 2013-07-17
win_qextserialport考虑用EventDriven方式,实时性会好一些。
至于取到的结果是不是单帧,我认为应该是取决于你应用场景
串口通讯只是提供数据传输,以字节流读取,怎么解析取决于应用。

建议你用Qt5.1的串口通讯,用信号和槽的方式读取数据。可以参考示例程序,很简单。
离线greensky10

只看该作者 2楼 发表于: 2013-07-18
回 1楼(realfan) 的帖子
谢谢版主回复哈!
主要是我还有个任务是要在ARM9的板子上读串口,那个板子跑的Linux操作系统,所以我得研究下如何使用定时轮询的方式不丢帧,好像win_qextserialport生成的串口实例有一个成员是isReadable,我先试试这个行不行。
我用的Qt是4.8.1,最近想整个5.1试试android的效果咋样,不过好像不好下载。。。
离线f267267
只看该作者 3楼 发表于: 2013-10-30
回 2楼(greensky10) 的帖子
想问下您现在做的怎么样了?我现在也是遇到了这个问题。。。求解决方案
离线greensky10

只看该作者 4楼 发表于: 2013-11-01
回 3楼(f267267) 的帖子
        后来解决的不好,主要是通过软件,接收不足一个完整帧的话就再接一次,直到拼出完整帧为止。或者就是多接几次,完了通过软件和协议把里面的完整帧挑出来。
快速回复
限100 字节
 
上一个 下一个