希望在主线程中创建多个子线程,在各个子线程中进行串口数据收发及解析,发现在子线程中创建串口对象,总是不响应串口消息,readData()中打断点怎么都进不去,跪求大侠指点!
代码如下:
主线程中创建子线程:
QMyThread *MyThread = new QMyThread;
MyThread->start();
子线程中创建串口对象:
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);
}