#include #include #include #include #include "serialui.h" SerialUi::SerialUi(QObject *parent) : QObject(parent) { static QThread* thread = new QThread; mSerialPort = new SerialPort(); mSerialPort->moveToThread(thread); //connect(this,&SerialUi::sendConnect,mSerialPort,&SerialPort::receiveConnect); connect(this,&SerialUi::sendWrite,mSerialPort,&SerialPort::receiveWrite); connect(this,&SerialUi::sendOnlyWrite,mSerialPort,&SerialPort::receiveOnlyWrite); connect(this,&SerialUi::sendClose,mSerialPort,&SerialPort::reveiveClose); connect(this,&SerialUi::sendInit,mSerialPort,&SerialPort::receiveInit); connect(mSerialPort,&SerialPort::sendPortStatus,this,&SerialUi::receivePortStatus); connect(mSerialPort,&SerialPort::sendCrcError,this,&SerialUi::receiveCrcError); connect(mSerialPort,&SerialPort::sendTimeout,this,&SerialUi::receiveTimeout); thread->start(); emit sendInit(); } void SerialUi::serialWrite(QByteArray sendData) { //qDebug() << QThread::currentThreadId() << "SerialUi"; if(mSerialPort->getOpenStatus() == true) emit sendWrite(sendData); // QString s; // s += QString::number(0x10,16)+" "; // s += QString::number(0x11,16)+" "; // s += QString::number(0x12,16)+" "; // qDebug()<closeConnect(); } QByteArray SerialUi::serialWriteReponse(QByteArray sendData) { QMutexLocker locker(&mutex); //qDebug() << __TIME__; //qDebug("serialWriteReponse enter addr:0x%x ", sendData.at(0)); QByteArray data; if(mSerialPort->getOpenStatus() == false) return data; emit sendWrite(sendData); QSignalSpy spy(mSerialPort, SIGNAL(sendReceiveData())); bool ret = spy.wait(500); if(ret == true) data = mSerialPort->serialRead(); else{ for(int i = 0; i rawData; rawData.clear(); for(int i=0; iserialConnect(port, baudrate, databits, parity, stopbits); // qDebug()<