0

QtCreatorを使用してQt/C++で開発されたアプリケーションをデバッグしています。私のアプリケーションは、シリアルポートがRhinoMarkIVコントローラーに接続されているQextSerialPortを使用してシリアルポートから読み取ります。

int  bytesRead;
char buffer[BUFFER_SIZE];
if (_serialPort->bytesAvailable() > 0
    && (bytesRead = _serialPort->read(buffer, BUFFER_SIZE)) > 0)
{
    _comBuffer.append(buffer, bytesRead);
    buffer[bytesRead+1] = 0; // for debugging purposes
    qDebug(buffer);          // for debugging purposes
}

ASCIIデータを読み取ろうとしているため、これに問題がありますが、バッファに入るのは奇妙な文字です。たとえば、数値ゼロ( '0')のASCIIコードは、デバッガーによって表示されqDebug、'°'として出力される別のコードに置き換えられます。

さらに、[アプリケーションの出力]タブに次のメッセージが表示されますwhile parsing target library list: not well-formed (invalid token)

QextSerialPortで適切なASCIIコードを取得できないのはなぜだろうか。QextSerialPortまたはRhinoMarkIVコントローラーの問題ですか?2台のモニターでシリアルポートを介したトラフィックを表示していますが、ASCII文字がモニターに正しく表示されています。したがって、コントローラや通信チャネルの問題ではないと結論付けました。

メッセージは何をwhile parsing target library list: not well-formed (invalid token)意味し、なぜそれが引き起こされるのですか?

4

1 に答える 1

1

アプリケーションでシリアルポートを正しく構成しましたか(つまり、ボーレート、ストップビットなど)?

また、bytesReadバッファをゼロで終了するときに1を追加しないでください。これにより、文字列の最後に1つの不要なバイトが許可されます。

このエラーメッセージは、Qtではなくgdbによって生成されます。これは、latin1でエンコードされていない名前のファイル/フォルダーの使用に関連している可能性があります。

于 2011-03-25T14:42:13.067 に答える