Qt4 用の qtserialport をビルドし、9600 ボー、8 データ ビット、1 ストップ ビット、パリティなしで情報を送信するデバイスからのデータをログに記録するコンソール アプリケーションを作成しました。これはシリアル通信のデフォルトだと思います。ポートを正しく開き、期待どおりにデータをログに記録しましたが、アプリケーションを閉じるか、コンピューターの電源を切ってアプリケーションを再起動しようとすると、ポートは開きますが、「framingError」が表示されます。アプリケーションを閉じて、ハイパーターミナルを使用してポートを開くと、ポートが正しく開き、コンソール アプリケーションをエラーなしで開くことができます。フレーミング エラーはパリティを使用して解決できると読みましたが、どの設定を使用すればよいか、それが私の問題の解決策であるかさえわかりません。
//constructor
MyApp::MyApp()
{
QSerialPort *serialPort = new QSerialPort(this);
connect(serialPort,
SIGNAL(error(QSerialPort::SerialPortError)),
this,SLOT(serialError(QSerialPort::SerialPortError)));
serialPort->setPortName("COM1");
serialPort->setBaudRate(9600,QSerialPort::Input);
serialPort->setStopBits(QSerialPort::OneStop);
serialPort->setParity(QSerialPort::NoParity);
serialPort->setDataBits(QSerialPort::Data8);
serialPort->setFlowControl(QSerialPort::NoFlowControl);
if(serialPort->open(QIODevice::ReadOnly))
{
qDebug() << "Serial port opened at serialPort->portName();
}
}
...
void myApp::serialError(QSerialPort::SerialPortError error)
{
if(error != QSerialPort::NoError)
{
QMetaEnum metaEnum = QSerialPort::staticMetaObject.enumerator(
QSerialPort::staticMetaObject.indexOfEnumerator("SerialPortError"));
QString errStr(metaEnum.valueToKey(error));
qDebug() << errStr;
}
}