1
我试图从单独的线程读取/写入数据。打开串口时不显示错误,但我无法读取或写入任何内容。在单独的线程上使用QSerialPort
这是我SerialThread.h代码:
#include <QThread>
class SerialThread : public QThread
{
Q_OBJECT
public:
explicit SerialThread(QObject *parent = 0);
~SerialThread();
protected:
void run();
private:
bool _threadRunning;
};
而且我SerialThread :: run()的实现:
void SerialThread::run()
{
QSerialPort *_serial = NULL;
foreach(QSerialPortInfo info, QSerialPortInfo::availablePorts())
{
QString name = info.portName();
if(name.startsWith("usbserial-"))
{
_serial = new QSerialPort(info, this);
qDebug() << "Opening " << name;
if(_serial->open(QSerialPort::ReadWrite))
{
qDebug() << "ok";
_threadRunning = true;
}
}
}
while(_threadRunning)
{
QByteArray array = _serial->read(10);
for (int i = 0; i< array.length(); i++)
qDebug() << QString::number(array[i], 16);
msleep(1000);
}
if(_serial)
{
_serial->close();
delete _serial;
}
}
相同的代码工作无螺纹(连接readyReady()信号)。
有什么想法?我可能会滥用QThread对象吗?