#include "mythread.h" MyThread::MyThread(QObject *parent) : QThread(parent) { connectStateMain = 0; quitSignal = 0; maxSize = 0; } MyThread::~MyThread() { if(this->isFinished()) qDebug() << "MyThread quit!"; this->wait(); } void MyThread::run() { //qDebug() << "MyThread-001::Run: Pid="< /dev/ttymxc" + QString(currentTtyPort+48); QByteArray sstr = str.toLatin1(); const char *ptr = sstr.data(); system(ptr); // lenSend = write(fd, bufSend, str.length()); //Write string for UART // qDebug() << lenSend << fd << sizeof(bufSend) << str.length() << bufSend << ptr << sstr << str; // if (lenSend < 0) // { // qDebug() << "Write data error!"; // emit sendStr("Write data error!"); // return -1; // } return 0; } int MyThread::uartGet() { if(!quitSignal) { lenRead = read(fd, bufRead, 1024); //Read string from UART QString bufReadStr = QString(bufRead); if (lenRead < 0) { //qDebug() << "Read data error!"; return -1; } else if(lenRead > 1) { //if(lenRead > maxSize) // maxSize = lenRead; qDebug() << maxSize << sizeof(bufRead) << lenRead << connectStateMain; memset(bufRead,0,maxSize); qDebug() << bufReadStr; //Print string after read emit sendStr(bufReadStr); } } return 0; } void MyThread::openPortThread(int portIndex) { TTY_NAME_Char = 0; if(!connectStateMain) { switch(portIndex) { case 0: TTY_NAME_Char = TTY0_NAME; break; case 1: TTY_NAME_Char = TTY1_NAME; break; case 2: TTY_NAME_Char = TTY2_NAME; break; case 3: TTY_NAME_Char = TTY3_NAME; break; case 4: TTY_NAME_Char = TTY4_NAME; break; case 5: TTY_NAME_Char = TTY5_NAME; break; case 6: TTY_NAME_Char = TTY6_NAME; break; case 7: TTY_NAME_Char = TTY7_NAME; break; } fd = -1; lenRead = -1; fd = open(TTY_NAME_Char, O_RDWR | O_NOCTTY | O_NDELAY | O_NONBLOCK); if(fd < 0) { qDebug() << "No such file or directory!"; emit sendStr("No such file or directory!"); } else { qDebug() << "Open tty success!"; emit sendStr("Open tty success!"); connectStateMain = 1; } } else { int closeState = ::close(fd); //Use C's close instead of Qt's if(closeState < 0) { qDebug() << "Cannot close tty!"; emit sendStr("Cannot close tty!"); } else { qDebug() << "Close tty success!"; emit sendStr("Close tty success!"); connectStateMain = 0; } } }