こんにちは、私は Qt のシリアル通信に qextserialport を使用しています。何が起こるかというと、コントローラー ボードからデータを送信するとデータが読み取られますが、ボードの電源をオフにしてもデータの読み取りが続行されます。つまり、読み取りが非常に遅く、ボードの電源をオフにしても、端末で読み取るバイトがまだ残っています。この問題を解決するにはどうすればよいですか??
ボードの電源を切ると、バイトの読み取りが停止するはずです。
こんにちは、私は Qt のシリアル通信に qextserialport を使用しています。何が起こるかというと、コントローラー ボードからデータを送信するとデータが読み取られますが、ボードの電源をオフにしてもデータの読み取りが続行されます。つまり、読み取りが非常に遅く、ボードの電源をオフにしても、端末で読み取るバイトがまだ残っています。この問題を解決するにはどうすればよいですか??
ボードの電源を切ると、バイトの読み取りが停止するはずです。
シリアル ポートのパリティ チェックが正しく構成されていません。
このタイプの初期化に従う必要があります。
...
bool uart_openPort(QString name, PortSettings *setting) {
static bool port_created = false;
if (port_created == false) {
port = new QextSerialPort();
port->setQueryMode(QextSerialPort::Polling);
port_created = true;
}
if (connection_ready) {
uart_closePort();
connection_ready = false;
}
port->setPortName(name);
port->setBaudRate (setting->BaudRate);
port->setDataBits(setting->DataBits);
port->setStopBits(setting->StopBits);
port->setParity(setting->Parity);
port->setFlowControl(setting->FlowControl);
port->setTimeout(1);
if (port->open(QextSerialPort::ReadWrite)) {
connection_ready = true;
qDebug("INFORMATION (UART OPEN PORT): Port open Successful!");
} else {
connection_ready = false;
qDebug("CRITICAL (UART OPEN PORT): Error open Port!");
}
return(connection_ready);
}
...
または、このモードでいくつかの固定パラメーターを使用できます
...
port->setPortName("/dev/ttyUSB0");
port->setBaudRate(BAUD9600);
port->setDataBits(DATA_8);
port->setStopBits(STOP_1);
port->setParity(PAR_NONE);
port->setFlowControl(FLOW_OFF);
port->setTimeout(1);
...
どのソフトウェアでも適切に機能しない場合は、ボードのコントロール パリティ設定を確認する必要があります。
ソフトウェアによって生成された UART フローを使用している場合は、シリアル シーケンスで、スタート ビットが適切に配置され、送信の最後に 1 バイトが 1 つのストップ ビットに十分なスペースであることを確認します。