9

USBシリアルポートを介して115,200ボーで組み込みデバイスを接続するプロジェクトで、Ubuntu 10.04からアップグレードしました。これをアップグレードしたら動かなくなったのですが、再起動したら接続できました。システムをシャットダウンして再起動してから、接続できませんでした。シリアル回線が間違ったボーレートで接続されているようです (次のような高速な文字列:

"'''''''''''''''''ppppp'''''''''''''''pppppp'''''''''''"...

USB デバイスは として認識され、セットアップされてい/dev/ttyUSB0ます。ボーレートを設定しようとすると、次のsttyようになります。

$ sudo stty -F /dev/ttyUSB0 115200
stty: /dev/ttyUSB0: unable to perform all requested operations

設定しようと9600すると、うまくいくようです:

$ sudo stty -F /dev/ttyUSB0 9600

しかし、それ以外は失敗します:

$ sudo stty -F /dev/ttyUSB0 4800
stty: /dev/ttyUSB0: unable to perform all requested operations

stty が見るものは次のとおりです。

$ stty -F /dev/ttyUSB0
speed 9600 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost -onlcr
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke

stty (echo、echoe など) を使用して他の値を変更できますが、ボーレートは変更できません。

誰かがMinicomでボーを設定できるが、コマンドラインからは設定できないというコメントをオンラインで見たので、Minicom を入手して試しましたが、同じ結果が得られました (ボーレートが間違っているようです)。

私もsetserialを試しましたが、それも/dev/ttyUSBデバイスの受け入れを拒否しています:

$ sudo setserial  /dev/ttyUSB0 -a
Cannot get serial info: Invalid argument
$ sudo setserial  /dev/ttyS0 -a
/dev/ttyS0, Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4
    Baud_base: 115200, close_delay: 50, divisor: 0
    closing_wait: 3000
    Flags: spd_normal skip_test

最後に、デバイスと dmesg からのセットアップを次に示します。

$ ls -l /dev/ttyUSB*
crw-rw-rw- 1 root dialout 188, 0 Nov 19 15:53 /dev/ttyUSB0
crw-rw-rw- 1 root dialout 188, 1 Nov 19 16:00 /dev/ttyUSB1
$ dmesg | grep ttyUSB
[   32.444445] usb 4-1: generic converter now attached to ttyUSB0
[   32.444549] usb 8-2: generic converter now attached to ttyUSB1

私はこのデバイスを Ubuntu 10.04 で数か月間使用しており、先週は使用できましたが、シャットダウンして再起動してから使用できませんでした。オンラインで調べたところ、同様の問題を抱えている人が何人か見つかりましたが、解決策はありませんでした。この問題を解決するにはどうすればよいですか?

4

2 に答える 2

4

何が起こったのかはまだわかりませんが、現在は機能しています。同じ問題に遭遇した人のために、私は「modprobe -r usbserial」を試して (古いドライバーが modprobe -f でロードできるかどうかを確認することを考えていましたが、できませんでした)、モジュール「modprobe usbserial」をリロードしました。 . 今回はシリアルが正しく機能しました - 理由はわかりません。

stty を実行すると、次のように報告されます。

~$ stty -F /dev/ttyUSB0
speed 115200 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost
-isig -icanon -iexten -echo

ボーレートを変更できます (9600 に変更してから 115200 に戻しました)。

したがって、満足のいく答えはありませんが、再起動後に初めて機能し始めたのと同じように、それをいじって機能させることができるようです。

于 2012-11-20T00:38:07.010 に答える
0

設定変更にはデバイスファイルへの書き込み権限が必要です。簡単なリストで制御できます。例えば。

$ ls -l
crw-rw-r-T 1 root dialout 188, 0 jan    9 16:16 /dev/ttyUSB0

上記の例では、全員が読み取り権限を持っています ( )。rスーパーユーザーrootdialoutグループも書き込み権限を持っています ( rw)。

あなたがグループのメンバーである場合dialout、上記のstty -F /dev/ttyUSB0 115200 コマンドで余分なことをせずに速度を変更できます。それ以外の場合は、を使用する必要がありますsudo

コマンドを使用して、メンバーシップのステータスを制御できますid

于 2014-01-09T15:39:12.280 に答える