本文主要是介绍QT中使用串口发送数据没有发出或者判断waite检测不到,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
错误代码
//发送
for(int i = 0; i < ABUTMENT_DATA_NUM; i++)
{if(myserialport.write("A") <= 0)qDebug() << "发送失败";
}
在发送数据时,一直检测不到数据,判断waite函数发送的字节也是正确的,但是就是接收不到发送的数据。
修改后代码
//发送
for(int i = 0; i < ABUTMENT_DATA_NUM; i++)
{ if(myserialport.write("A") > 0) { // 等待数据被写入完毕(阻塞) if(!myserialport.waitForBytesWritten(1000))qDebug() << "发送数据超时!"; } else { qDebug() << "发送失败"; }
}
接收完成,查看逻辑分析仪
已经有数据了,重点是
waitForBytesWritten()填入的参数是毫秒
如果调用QSeriaPort::waitForBytesWritten()
函数的返回值为false
,并不能简单地判断为数据发送超时。这个函数返回false
的原因有多种可能,其中包括:
- 超时等待时间已经耗尽;
- 发送数据至缓冲区时发生错误;
- 系统调用被中断或信号处理程序被调用。
这篇关于QT中使用串口发送数据没有发出或者判断waite检测不到的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!