使用qextserial写一个
串口程序,在接收到
数据后,进入到readyread信号连接的槽函数进行数据解析,并在此弹出一个QDialog提示
窗口。
在我的电脑运行
没有任何
问题,放到另一台电脑运行,接收到串口数据并弹出窗口,再关闭弹出窗口后就导致cpu占用率超过50%,软件也变得非常卡,ui界面切换时,
界面不刷新,这时通过串口随便发送一个数据给软件,又恢复正常。请问大家这是什么原因?
初始化程序
- void SerialProtocol::initSerial()
- {
- mPort = new QextSerialPort(mComName,QextSerialPort::EventDriven);
- mPort->setBaudRate((BaudRateType)BAUD19200);
- mPort->setDataBits(DATA_8);
- mPort->setParity(PAR_NONE);
- mPort->setStopBits(STOP_1);
- mPort->setFlowControl(FLOW_OFF);
- mIsOpen = mPort->open(QIODevice::ReadWrite);
- if(!mIsOpen){
- return;
- }
- qDebug() << __FILE__ << __LINE__;
- qDebug() << QString("%1 is open!").arg(mComName);
- connect(mPort, SIGNAL(readyRead()), this, SLOT(onFrameAvailable()));
- }
接收槽函数:
- void SerialProtocol::onFrameAvailable()
- {
- QByteArray ba = mPort->readAll();
- emit sigRec(ba);
- QDialog *dl = new QDialog;
- dl->resize(300,200);
- dl->exec();
- delete dl;
- }