AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 978974
Accepted
Mike
Mike
Asked: 2017-11-22 18:39:46 +0800 CST2017-11-22 18:39:46 +0800 CST 2017-11-22 18:39:46 +0800 CST

两个串行端口(RS232 和 RS422)相互冲突。/dev/ttyUSB 崩溃

  • 772

问题:当连接到串行端口的串行设备上电时,我的 Ubuntu 操作系统无法处理两个串行端口。如何克服这个问题并防止我的端口崩溃?我该如何解决它?

症状概要:当两个串口转USB转换器连接到PC时(没有连接任何串口设备)一切正常;它们显示为 ttyUSB0 和 ttyUSB1。但是,一旦我将串行设备连接到它们并打开串行设备的电源,其中一个串行端口就会崩溃(它从 /dev 目录中消失)。这不是硬件问题或接线问题。操作系统中发生了一些事情,使我的头上出现了白发……您能帮忙吗?请继续阅读以了解详细信息。

我在联想笔记本电脑上运行 Ubuntu 14.04.3。

我现在可以用最少的硬件和软件重新创建错误。以下步骤重现问题:

  1. 我启动电脑。

  2. PC 启动后,我运行dmesg并将输出保存到文件中。见https://pastebin.com/4fXxK1hV

  3. 我插入了一个名为“Labjack U3”的 2.0 USB 设备。这是一个我不认为与此事非常相关的事实,但必须注意。

  4. 我将 RS422 插入 USB 设备,没有任何连接。我跑lsusb。它是Bus 003 Device 003: ID 0856:ac11 B&B Electronics设备。输出是:

    Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
    Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
    Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 004: ID 04f2:b44d Chicony Electronics Co., Ltd 
    Bus 001 Device 003: ID 0a5c:21e6 Broadcom Corp. BCM20702 Bluetooth 4.0 [ThinkPad]
    Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 003 Device 003: ID 0856:ac11 B&B Electronics 
    Bus 003 Device 002: ID 0cd5:0003 LabJack Corporation U3
    Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub`
    
  5. 我又跑dmesg了。输出在这里: https ://pastebin.com/uTGra1h7

  6. 我跑/dev过去ls -l | grep USB。串口出现:

    constructor@constructor-pc:~$ cd /dev
    constructor@constructor-pc:/dev$ ls -l | grep USB
    crw-rw-rw-  1 root dialout 188,   0 Nov 21 16:36 ttyUSB0
    
  7. 我打开连接到 RS422 端口的设备。/devorls -l | grep USB和的输出没有变化lsusb

  8. 我将 RS232 连接到 USB 转换器。串行设备尚未连接到转换器。我跑了lsusb。它是Bus 001 Device 018: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port设备。输出是:

    constructor@constructor-pc:/dev$ lsusb
    Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
    Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 004: ID 04f2:b44d Chicony Electronics Co., Ltd 
    Bus 001 Device 003: ID 0a5c:21e6 Broadcom Corp. BCM20702 Bluetooth 4.0 [ThinkPad]
    
    Bus 001 Device 018: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
    Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 003 Device 003: ID 0856:ac11 B&B Electronics 
    Bus 003 Device 002: ID 0cd5:0003 LabJack Corporation U3
    Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    
  9. 接下来我在目录中运行ls -l | grep USB命令。/dev这是输出:

    constructor@constructor-pc:/dev$ ls -l | grep USB
    crw-rw-rw-  1 root dialout 188,   0 Nov 21 16:36 ttyUSB0
    crw-rw----  1 root dialout 188,   1 Nov 21 18:47 ttyUSB1
    
  10. 到目前为止一切正常。我运行dmesg命令来捕获所有内容以进行故障排除。见:https ://pastebin.com/3kZNLtr6

  11. 这时问题就出现了。我将串行设备连接到 RS232 到 USB 转换器。到现在一切都还可以。我打开串行设备的电源(通常这是控制我的原型的软件崩溃的地方)。我立即ls -l | grep USB多次运行该命令。这是输出:

    constructor@constructor-pc:/dev$ ls -l | grep USB
    crw-rw-rw-  1 root dialout 188,   0 Nov 21 16:36 ttyUSB0
    constructor@constructor-pc:/dev$ ls -l | grep USB
    crw-rw-rw-  1 root dialout 188,   0 Nov 21 16:36 ttyUSB0
    constructor@constructor-pc:/dev$ ls -l | grep USB
    crw-rw-rw-  1 root dialout 188,   0 Nov 21 16:36 ttyUSB0
    constructor@constructor-pc:/dev$ ls -l | grep USB
    crw-rw-rw-  1 root dialout 188,   0 Nov 21 16:36 ttyUSB0
    constructor@constructor-pc:/dev$ ls -l | grep USB
    crw-rw-rw-  1 root dialout 188,   0 Nov 21 16:36 ttyUSB0
    constructor@constructor-pc:/dev$ ls -l | grep USB
    crw-rw-rw-  1 root dialout 188,   0 Nov 21 16:36 ttyUSB0
    constructor@constructor-pc:/dev$ ls -l | grep USB
    crw-rw-rw-  1 root dialout 188,   0 Nov 21 16:36 ttyUSB0
    constructor@constructor-pc:/dev$ ls -l | grep USB
    crw-rw-rw-  1 root dialout 188,   0 Nov 21 16:36 ttyUSB0
    constructor@constructor-pc:/dev$ ls -l | grep USB
    crw-rw-rw-  1 root dialout 188,   0 Nov 21 16:36 ttyUSB0`
    

    您可以看到我丢失了一个串行端口!

  12. 现在我要找dmesg一个更有知识的人来做诊断。请参阅:https ://pastebin.com/sCYXeKa9

我在过去 5 天中得出的测试结论:

  • 当一次只插入一个设备时,连接到 RS232 和 RS422 的串行设备的工作方式与制造商在手册中的描述完全相同。串行设备没有以任何方式发生故障或损坏。如果一次只插入一个设备,我可以与它通信并控制它,它运行正常。
  • 所有设备的接线良好(使用图纸和仪表进行双重和三重检查)
  • 我已经卸下了我正在使用的 USB 集线器,并且花了很长时间才弄清楚这不是集线器的错。
  • 我已经排除了我用来读取串行数据的各种软件包(我觉得这篇文章中概述的步骤证明了这一点)。
  • 有趣的是,我什至没有向串行设备发送或接收命令就发生了这个问题!当我打开连接到 RS232 到 USB 转换器的设备时,串行设备尚未发送消息(或者至少我不相信它是),但串行端口立即被操作系统丢弃。

附加信息:在提出这个问题后的上周,我购买了更多的串行到 USB 端口,以防其中一个出现故障,并且行为没有改变。我还用备用单元替换了导致端口在打开时崩溃的串行组件,并且行为没有改变。我还尝试了另一台 PC,但行为没有改变。

您能否提供解决此问题的答案?或者如何解决这个问题?

同样,如果我可以提供任何信息或运行任何命令,请不要犹豫让我知道!

14.04
  • 1 1 个回答
  • 1016 Views

1 个回答

  • Voted
  1. Best Answer
    Mike
    2017-12-02T14:15:21+08:002017-12-02T14:15:21+08:00

    这是一个电气问题,而不是 O/S 问题。我按照制造商的文档将设备的串行端口连接到 USB 到 RS485 转换器的串行端,方式如下:

    Tx-    to       Rx-
    Tx+    to       Rx+
    Rx-    to       Tx-
    Rx+    to       Tx+
    gnd    to      gnd
    

    最终解决此问题的是断开 gnd 到 gnd 的连接。一定有接地回路。

    • 1

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve