QSerialPort为什么读取不到数据

qq_35670533 2017-07-25 06:35:52
这个是手动调用read读取串口通讯数据,m_port->waitForReadyRead(450);这个注释掉就一直读不到数据,这是为什么啊?????
QByteArray by = 0;
char c[10] = { 0 };
int pos = 0;
//bool isWrite = m_port->waitForReadyRead(450);

while (pos < count)
{
by = m_port->readAll();
//pos += m_port->read(c,count-pos);
qDebug() << " pos === " << by << " count ==== " << count;
}
by.append(c);
...全文
1094 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35670533 2017-07-26
  • 打赏
  • 举报
回复
我现在遇到的问题是 在联想win10 oem系统下 write到硬件通讯协议, 硬件做出回应,但 readyRead 不触发, 在win10其他系统上不存在该问题.程序是c++写的, 但是用c#写的程序就不存在这个问题 , 发送协议,接收协议 所有指令做的都是一样的, 只有端口read事件,和write 串口类是直接用底层的,
rayw0ng 2017-07-25
  • 打赏
  • 举报
回复
waitForReadyRead 阻塞进程执行,直到有数据准备好为止。所以,如果不调用,读的时候很可能没有数据到达。 如果想提高速度,使用异步模式,参考http://doc.qt.io/qt-5/qtserialport-creaderasync-example.html,核心是这里http://doc.qt.io/qt-5/qtserialport-creaderasync-serialportreader-cpp.html构造函数里的信号槽。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧