• 13052阅读
  • 5回复

[提问]求助QSerialPort 等待信号问题 [复制链接]

上一主题 下一主题
离线琉璃螃蟹
 

只看楼主 倒序阅读 楼主  发表于: 2014-06-10
初来乍到,QT菜鸟先问个安
请问版上先进关於QSerialPort 的问题
我现在手上要作的东西是以QT作为GUI,透过RS232丢一个8 bytes到另一张板子上
然後等待那张板子回传特定值後再执行下一动作
傻方法是write(指令) 後一直用回圈去read...
我想QT应该有工具可以用吧...但是小弟我资质驽钝找不到切确的作法

另外,目标装置可能会有error,会主动丢error message
我该怎麽设定一直等待这个讯号呢?

这两个问题貌似是同一个

还请各路先进,不吝赐教
离线realfan

只看该作者 1楼 发表于: 2014-06-10
connect(pCom, SIGNAL(readyRead()), this, SLOT(readMyCom()));
4条评分好评度+1贡献值+1金钱+1威望+1
琉璃螃蟹 好评度 +1 感谢!人间自有真情在阿! 2014-06-10
琉璃螃蟹 贡献值 +1 感谢!人间自有真情在阿! 2014-06-10
琉璃螃蟹 威望 +1 感谢!人间自有真情在阿! 2014-06-10
琉璃螃蟹 金钱 +1 感谢!人间自有真情在阿! 2014-06-10
离线琉璃螃蟹

只看该作者 2楼 发表于: 2014-06-10
回 realfan 的帖子
realfan:connect(pCom, SIGNAL(readyRead()), this, SLOT(readMyCom())); (2014-06-10 17:23) 

感谢神速回复

pCom是 QSerialPort 物件
readMyCom() 的内容是以 pCom->readAll(); 的方式来判断我要等待的对象吗?
离线realfan

只看该作者 3楼 发表于: 2014-06-10
回 琉璃螃蟹 的帖子
琉璃螃蟹:感谢神速回复
pCom是 QSerialPort 物件
readMyCom() 的内容是以 pCom->readAll(); 的方式来判断我要等待的对象吗? (2014-06-10 18:12) 

pCom是QSerialPort对象指针
readMyCom是自己写个槽函数
当串口有数据来时,会发射readyRead信号,在readMyCom中,pCom->readAll()读取内容。
以上是非阻塞方式
如果你的程序需要阻塞,可以用waitForReadyRead(int msecs),在有数据前,阻塞在这里,等一定毫秒数直至超时。
离线琉璃螃蟹

只看该作者 4楼 发表于: 2014-06-12
回 realfan 的帖子
realfan:pCom是QSerialPort对象指针
readMyCom是自己写个槽函数
当串口有数据来时,会发射readyRead信号,在readMyCom中,pCom->readAll()读取内容。
以上是非阻塞方式
....... (2014-06-10 20:57) 

也就是说,如果我要用堵塞模式的话
那个毫秒是我自己要设定的Timeout时间?
这样大致上了解了,感谢版大的鼎力相助
离线realfan

只看该作者 5楼 发表于: 2014-06-12
回 琉璃螃蟹 的帖子
琉璃螃蟹:也就是说,如果我要用堵塞模式的话
那个毫秒是我自己要设定的Timeout时间?
这样大致上了解了,感谢版大的鼎力相助 (2014-06-12 09:16) 

是的。
如果在这个Timout时间内收到收据,waitForReadyRead返回true,否则返回false
可以根据返回酌情处理
4条评分好评度+1贡献值+1金钱+3威望+1
琉璃螃蟹 好评度 +1 - 2014-06-13
琉璃螃蟹 贡献值 +1 - 2014-06-13
琉璃螃蟹 威望 +1 - 2014-06-13
琉璃螃蟹 金钱 +3 - 2014-06-13
快速回复
限100 字节
 
上一个 下一个