admin管理员组文章数量:1640593
编写Qt中串口读写的程序,想当然的用了多线程,实际运行起来发现有警告信息:
QSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread
然后经过若干次串口读写之后,程序就报错退出了。
尝试了多种修改方式,还是如此。
后来网上查询,突然发现原来串口读写也可以和界面控件事件一样使用signal和slot的,于是暂时放弃多线程,改用signal和slot, 代码大致如下:
//绑定signal:QSerialPort::readyRead, G::sp1是一个QSerialPort对象
qApp->connect(G::sp1, &QSerialPort::readyRead, qApp, SPHandler::dataReceived);
//slot
void SPHandler::dataReceived(){
QByteArray data = G::sp1->readAll();
QString resp = QString::fromUtf8(data);
qDebug() << "返回:" << resp;
//...
}
修改成功,串口读写过程再也没有奇怪的log提示了:
C#/WinForm中也有类似的串口事件绑定。
版权声明:本文标题:Qt程序报错:Socket notifiers cannot be enabled or disabled from another thread 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1729318492a1195589.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论