9

我刚刚从 Ubuntu 10.04 升级到一个项目,该项目通过USB串行端口以 115,200 波特连接嵌入式设备。升级后,它不起作用,但我重新启动并能够连接。自从关闭并重新启动我的系统后,我一直无法连接。串行线看起来像是以错误的波特率连接(快速字符串,如下所示:

"'''''''''''''''''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(回声、回声等)更改其他值,但不能更改波特率。

我在网上看到一条评论说有人可以用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 回答