シリアル ポートをテストする簡単なプログラムを作成しようとしていますが、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 から構築されています)。