QIODevice インターフェイスには、コンパイラに依存する可能性がある送信用のデフォルトの文字があります。詳細については、ドキュメントを参照してください。
qint64 QIODevice::write(const char * data, qint64 maxSize)
最大 maxSize バイトのデータを data からデバイスに書き込みます。実際に書き込まれたバイト数を返します。エラーが発生した場合は -1 を返します。
ただし、一方でデータをきちんと取っていれば、あまり気にする必要はありません。128 を超える値を符号付きで送信することはできますが、それらは負の値として表示されます。たとえば、0xFF は -1 になります。
受信側で同じロジックを逆の順序で実行しても、問題はないはずです。
ただし、130 に対応する負の値が得られず、7 ビットで切り刻まれるため、これは問題に関連していないようです。接続が8データビットであることを確認してください。
次のコードでポートを開いた後、明示的に設定できます。
QSerialPort serialPort;
QString serialPortName = "foo";
serialPort.setPortName(serialPortName);
if (!serialPort.open(QIODevice::WriteOnly)) {
standardOutput << QObject::tr("Failed to open port %1, error: %2").arg(serialPortName).arg(serialPort.errorString()) << endl;
return 1;
}
if (!serialPort.setDataBits(QSerialPort::Data8)) {
standardOutput << QObject::tr("Failed to set 8 data bits for port %1, error: %2").arg(serialPortName).arg(serialPort.errorString()) << endl;
return 1;
}
// Other setup code here
char foo[] = {130,50,'\0'};
serialPort.write(foo);