USB 経由でプロペラと通信できる QT アプリケーションを作成しようとしています。ドキュメントQSerialPortを読むと、まさに私が必要としているもののようです。簡単なテストとして、番号「2」をプロペラ プロジェクトに送信しようとしています。プロジェクト自体には、結果を読み取ることができる独自の OLED 画面があります。QTコード自体は次のとおりです。
this->Serial=new QSerialPort(this);
this->Serial->setPortName("/dev/ttyUSB0");
this->Serial->setBaudRate(QSerialPort::Baud9600);
connect(this->Serial,SIGNAL(error(QSerialPort::SerialPortError)),this,SLOT(errorReport(QSerialPort::SerialPortError)));
if(this->Serial->open(QIODevice::ReadWrite))
{
QByteArray dayArray;
QDataStream stream(&dayArray, QIODevice::WriteOnly);
stream << 2;
qDebug()<< dayArray.toHex();
qDebug()<< this->Serial->portName();
if(this->Serial->setDataBits(QSerialPort::Data8))
{
qDebug()<<"bits set to 8";
}
this->Serial->write(dayArray.toHex());
this->Serial->waitForBytesWritten(-1);
this->Serial->close();
}
エラーレポートスロットは次のとおりです。
void serial::errorReport(QSerialPort::SerialPortError error)
{
if(error!=0)
qDebug()<<"ERROR:"<<endl<<error;
}
コンソールのデバッグ ステートメントは、次のように出力します。
"00000002"
"ttyUSB0"
bits set to 8
しかし、プロペラが受け取る値を読み取ると、期待していた 0x02 ではなく、0xD0、0xF0、または 0xE0 の範囲です。コードのボー レートはチップのボー レートと一致しており、何が問題なのかよくわかりません。誰でも欠点を指摘できますか?
編集: Arduino の IDE シリアル コンソールで問題なく動作するため、プロペラ コードが問題ではないことはわかっています。