Libserial を使用して USB-uart モジュールと通信しようとしています。
以下は、最初の部分の私のコードです。
serial_port.Open("/dev/ttyUSB0");
if ( ! serial_port.good() )
{
std::cerr << "[" << __FILE__ << ":" << __LINE__ << "] "
<< "Error: Could not open serial port."
<< std::endl ;
exit(1) ;
}
serial_port.SetBaudRate( SerialStreamBuf::BAUD_115200 ) ;
if ( ! serial_port.good() )
{
std::cerr << "Error: Could not set the baud rate." <<
std::endl ;
exit(1) ;
}
同じUSBモジュールを使用してUbuntu 12.04および13.04で実行すると、すべて
エラー: ボーレートを設定できませんでした。
いくつかのテストを行った結果、ボー レートを 115200 以上に設定すると、このエラーが発生することが最終的にわかりました。57600 および 19200 で問題なく動作します。
しかし、ボーレートを 115200 に設定する方法はあるのでしょうか? シリアル テスト ツールをダウンロードしました。これは 115200 として機能します (ただし、メッセージの内容は確認していません。送信 LED が点滅していることに気付きました)。
それともハードウェアの制限なので、ボーレートを上げたい場合は別のモジュールを購入する必要がありますか?
ありがとう
===========
アップデート:
ハードウェアに問題はありません。115200 を使用して Windows VS でテストしたところ、問題なく動作しました。しかし、2 つの Ubuntu デスクトップ (12.04 と 13.04) では失敗しました。
設定後にボーレートを出力します
serial_port.SetBaudRate(SerialStreamBuf::BAUD_115200);
int レート = serial_port.BaudRate();
cout << SerialStreamBuf::BAUD_115200 << endl;
cout << レート << endl;
結果は、それらの値が同じであることを示しています。両方とも です4098
。
.good()
次に、すべての部分にコメントを付けようとしましたが、そのSetBaudRate
部分の後、プログラムは正常に開始されましたが、送信 LED が点滅しません。したがって、ボーレートの設定に実際には何か問題があると思うので、シリアルの初期化は失敗しましたが、返されるボーレートは正しいです。
今、私は次に何をすべきか分かりません...
私のコードをすべて見る必要がある場合