2

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 シリアル コンソールで問題なく動作するため、プロペラ コードが問題ではないことはわかっています。

4

1 に答える 1