Python SerialException:设备报告已准备好读取但未返回任何数据

时间:2017-02-09 18:53:22

标签: raspberry-pi raspbian arduino-uno pyserial usbserial

我使用以前是UNO的Arduino Nano从传感器收集数据,然后通过USB连接将数据通过有源集线器发送回运行Jessie 4.1.19+ Mar的Raspberry Pi模型B, 2016年6月和Python 2.7。 python代码使用pyserial readline来获取数据。

一般来说,它工作正常但偶尔(通常一天几次)它会因上述消息而失败。似乎修复它的唯一方法是拔掉USB连接,重新连接并重新启动程序。我修改了代码以捕获异常但它不会重新打开连接,给出错误:

  

serial.serialutil.SerialException:无法打开端口/ dev / ttyUSB0:[Errno 2]没有这样的文件或目录:' / dev / ttyUSB0'

UNO(在/ dev / ttyAMA0上)和NANO(在/ dev / ttyUSB0上)都会出现此问题。

就在最近,我发现在发生这个错误之后,Nano已经转移到了/ dev / ttyUSB1。然后python代码将针对/ dev / ttyUSB1成功运行,但是当问题再次发生时,它会切换回/ dev / ttyUSB0。

结果,我更改了代码以拦截异常并打开备用设备并继续。到目前为止,这工作正常,但显然不对。

任何人都可以建议问题所在的位置以及如何进行诊断吗?我不是超级技术!另外,我已经看过关于这个主题的其他一些帖子,但在这种情况下,恢复到以前的内核级别并不实际。

更新以包含下面的日志输出。有两种设备:NANO(1a86:7523)和OWL功率监视器(0fde:ca05)。

  

$ dmesg -T
  [2017年2月11日星期四14:53:02] usb 1-1.3-port2:由集线器(EMI?)禁用,重新启用...
  [2017年2月11日星期四14:53:02] usb 1-1.3.2:USB断开,设备编号71
  [2017年2月11日星期四14:53:03] dwc_otg_hcd_handle_hc_fsm:173次回调受到抑制   [2017年2月11日星期四14:53:03]转移到设备72端点0x1帧1649失败 - FIQ报告NYET。数据可能已丢失   [2017年2月11日星期四14:53:03]转移到设备72端点0x1帧1650失败 - FIQ报告NYET。数据可能已丢失   [2017年2月11日星期四14:53:03] ch341-uart ttyUSB1:usb_serial_generic_read_bulk_callback - urb停止:-32
  [2017年2月11日星期四14:53:03]转移到设备72端点0x1帧1651失败 - FIQ报告NYET。数据可能已丢失   [2017年2月11日星期四14:53:03]转移到设备72端点0x1帧1652失败 - FIQ报告NYET。数据可能已丢失   [2017年2月11日星期四14:53:03]转移到设备72端点0x1帧1653失败 - FIQ报告NYET。数据可能已丢失   [2017年2月11日星期四14:53:03] ch341-uart ttyUSB1:usb_serial_generic_read_bulk_callback - urb停止:-32
  [2017年2月11日星期四14:53:03]转移到设备72端点0x1帧1654失败 - FIQ报告NYET。数据可能已丢失   [2017年2月11日星期四14:53:03]转移到设备72端点0x1帧1655失败 - FIQ报告NYET。数据可能已丢失   [2017年2月11日星期四14:53:03]转移到设备72端点0x1帧1656失败 - FIQ报告NYET。数据可能已丢失   [2017年2月11日星期四14:53:03]转移到设备72端点0x1帧1657失败 - FIQ报告NYET。数据可能已丢失   [2017年2月11日星期四14:53:03]转移到设备72端点0x1帧1658失败 - FIQ报告NYET。数据可能已丢失   [2017年2月11日星期四14:53:03] usb 1-1.3.2:使用dwc_otg新的全速USB设备编号73   [星期六2月11日14:53:03] usb 1-1.3.2:找到新的USB设备,idVendor = 0fde,idProduct = ca05
  [Sat Feb 11 14:53:03 2017] usb 1-1.3.2:新的USB设备字符串:Mfr = 1,Product = 2,SerialNumber = 3
  [2017年2月11日星期四14:53:03] usb 1-1.3.2:产品:OWL无线电力监控器USB版本已连接
  [2017年2月11日星期四14:53:03] usb 1-1.3.2:制造商:Silicon Labs
  [2017年2月11日星期四14:53:03] usb 1-1.3.2:SerialNumber:001A3C26
  [星期六2月11日14:53:03] cp210x 1-1.3.2:1.0:检测到cp210x转换器
  [2017年2月11日星期四14:53:03] usb 1-1.3.2:cp210x转换器现已连接到ttyUSB0
  [星期六2月11日14:53:03] usb 1-1.3-port3:由集线器(EMI?)禁用,重新启用...
  [2017年2月11日星期四14:53:03] usb 1-1.3.3:USB断开,设备号72
  [2017年2月11日星期四14:53:03] ch341-uart ttyUSB1:ch341-uart转换器现在与ttyUSB1断开连接
  [2017年2月11日星期四14:53:03] ch341 1-1.3.3:1.0:设备断开连接
  [2017年2月11日星期四14:53:03] usb 1-1.3.3:使用dwc_otg的新型全速USB设备编号74   [星期六2月11日14:53:03] usb 1-1.3.3:找到新的USB设备,idVendor = 1a86,idProduct = 7523
  [Sat Feb 11 14:53:03 2017] usb 1-1.3.3:新的USB设备字符串:Mfr = 0,Product = 2,SerialNumber = 0
  [2017年2月11日星期四14:53:03] usb 1-1.3.3:产品:USB2.0-Serial
  [2017年2月11日星期四14:53:03] ch341 1-1.3.3:1.0:检测到ch341-uart转换器
  [星期六2月11日14:53:03] usb 1-1.3.3:ch341-uart转换器现在连接到ttyUSB2
  [2017年2月11日星期四14:53:05] cp210x ttyUSB0:cp210x转换器现在与ttyUSB0断开连接
  [2017年2月11日星期四14:53:05] cp210x 1-1.3.2:1.0:设备已断开连接

1 个答案:

答案 0 :(得分:0)

我知道这是一个旧线程,但是最近我用 Raspberry Pi 3 Model B Rev 1.2 遇到了这个问题,它在连接的同时运行股票Debian内核5.4.0-3-arm64 3018 CNC Pro控制器板。当我lsusb时,木板显示为

Bus 001 Device 011: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

每当我打开串行端口时,usb设备都会重置。我进行了广泛搜索,在不同论坛上应用了一堆配置参数,但对我来说,这个问题与电源相关。

尽管3018 CNC Pro主板具有独立的电源,但是主板上的usb串行芯片由总线供电(在lsusb -v中已注意到)。我的Raspberry Pi具有足够的可用功率,但我正在将1m usb电缆穿过金属夹并沿着金属通道运行,该通道必须具有足够的电感量,以抵抗通过usb电缆所需的电涌。取下夹子即可解决问题。

希望此注释对某人有所帮助!