1

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 が点滅していることに気付きました)。

それともハードウェアの制限なので、ボーレートを上げたい場合は別のモジュールを購入する必要がありますか?

ありがとう

===========

アップデート:

  1. ハードウェアに問題はありません。115200 を使用して Windows VS でテストしたところ、問題なく動作しました。しかし、2 つの Ubuntu デスクトップ (12.04 と 13.04) では失敗しました。

  2. 設定後にボーレートを出力します

    serial_port.SetBaudRate(SerialStreamBuf::BAUD_115200);

    int レート = serial_port.BaudRate();

    cout << SerialStreamBuf::BAUD_115200 << endl;

    cout << レート << endl;

結果は、それらの値が同じであることを示しています。両方とも です4098

.good()次に、すべての部分にコメントを付けようとしましたが、そのSetBaudRate部分の後、プログラムは正常に開始されましたが、送信 LED が点滅しません。したがって、ボーレートの設定に実際には何か問題があると思うので、シリアルの初期化は失敗しましたが、返されるボーレートは正しいです。

今、私は次に何をすべきか分かりません...

私のコードをすべて見る必要がある場合

4

2 に答える 2