我正在尝试编写一个简单的程序来测试串口,但是无法让QSerialPort工作。我从未接收过QSerialPort对象的信号。我得到3个运行时警告/错误,我认为可能与它有关。
错误是:
QApplication::qAppName: Please instantiate the Qapplication object first
QSocketNotifier: Can only be used with threads started with QThread
QSocketNotifier: Can only be used with threads started with QThread
下面的代码片段是我可以重新创建错误的最小样本,它没有显示连接信号,但我认为这些错误是我没有看到它们的原因。如果我不调用open函数,则不会发生任何错误。
#include <QtGui/QApplication>
#include <QSerialPort>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
PowerBoardGUI w;
w.show();
QSerialPort* serial = new QSerialPort();
serial->setPortName("/dev/ttyS1");
serial->setBaudRate(QSerialPort::Baud9600);
bool isOpen = serial->open(QIODevice::ReadWrite);
serial->close();
delete serial;
return a.exec();
}
测试系统是Redhat 5.6。 QT 4.7.4的静态版本。最新版本的QSerialPort(今天由GIT构建)。