首页 > 慧问 > 频道

使用Qt编程时,子线程中要如何使用串口读写数据?

发表于2019-05-10 回复:0 查看:2474  |  
希望在主线程中创建多个子线程,在各个子线程中进行串口数据收发及解析,发现在子线程中创建串口对象,总是不响应串口消息,readData()中打断点怎么都进不去,跪求大侠指点! 代码如下: 主线程中创建子线程: <pre class='brush: cpp'>QMyThread *MyThread = new QMyThread; MyThread->start();</pre> 子线程中创建串口对象: <pre class='brush: cpp'>void QMyThread::run() { m_MyConn = new MyConnect(this,&(pRtuObj->m_strCommType),&(pRtuObj->m_sListSerialPara),&(pRtuObj->m_sListNetPara)); m_MyConn->openCommu(); m_MyConn->moveToThread(this); } 打开串口: //通信连接 void MyConnect::openCommu() { if(m_Serial != NULL) { delete m_Serial; m_Serial = NULL; } m_Serial = new QSerialPort; connect(m_Serial, SIGNAL(readyRead()), this, SLOT(readData())); m_Serial->setPortName(m_CommSettings.name); m_Serial->setBaudRate(m_CommSettings.baudRate); m_Serial->setDataBits(m_CommSettings.dataBits); m_Serial->setParity(m_CommSettings.parity); m_Serial->setStopBits(m_CommSettings.stopBits); if (m_Serial>open(QIODevice::ReadWrite)) { SendEvent(tr("Connected to %1").arg(m_CommSettings.m_sListSerialPara.join(","))); m_chCommuStatus = 1; } else { SendEvent(tr("Open Serial Error, %1").arg(m_CommSettings.m_sListSerialPara.join(","))); m_chCommuStatus = 0; } } 串口读数据: //串口读数据 void MyConnect::readData() { QByteArray buffer = m_Serial->readAll(); displayRxTxData(buffer); }</pre>
0个回答

打破零回复...

回复

登录 慧都网发表评论

扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP