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

2024-02-14

我正在使用 Arduino Nano(以前是 UNO)从传感器收集数据,然后通过供电集线器通过 USB 连接将数据发送回运行 Jessie 4.1.19+ 2016 年 3 月 15 日和 Python 2.7 的 Raspberry Pi model B 。 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。数据可能已丢失。
[Sat Feb 11 14:53:03 2017] usb 1-1.3.2:使用 dwc_otg 的新全速 USB 设备编号 73
[2017 年 2 月 11 日星期六 14:53:03] usb 1-1.3.2:找到新 USB 设备,idVendor=0fde,idProduct=ca05
[2017 年 2 月 11 日星期六 14:53:03] usb 1-1.3.2:新 USB 设备字符串:Mfr=1、Product=2、SerialNumber=3
[Sat Feb 11 14:53:03 2017] 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:序列号:001A3C26
[2017 年 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
[2017 年 2 月 11 日星期六 14:53:03] USB 1-1.3-port3:被集线器禁用(EMI?),重新启用...
[2017 年 2 月 11 日星期六 14:53:03] USB 1-1.3.3:USB 断开连接,设备编号 72
[Sat Feb 11 14:53:03 2017] ch341-uart ttyUSB1:ch341-uart 转换器现已与 ttyUSB1 断开连接
[2017 年 2 月 11 日星期六 14:53:03] ch341 1-1.3.3:1.0:设备已断开连接
[Sat Feb 11 14:53:03 2017] USB 1-1.3.3:使用 dwc_otg 的新全速 USB 设备编号 74
[2017 年 2 月 11 日星期六 14:53:03] usb 1-1.3.3:找到新 USB 设备,idVendor=1a86,idProduct=7523
[2017 年 2 月 11 日星期六 14:53:03] 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-串行
[2017 年 2 月 11 日星期六 14:53:03] ch341 1-1.3.3:1.0:检测到 ch341-uart 转换器
[2017 年 2 月 11 日星期六 14:53:03] USB 1-1.3.3:ch341-uart 转换器现已连接到 ttyUSB2
[Sat Feb 11 14:53:05 2017] cp210x ttyUSB0:cp210x 转换器现已与 ttyUSB0 断开连接
[2017 年 2 月 11 日星期六 14:53:05] cp210x 1-1.3.2:1.0:设备已断开连接


我知道这是一个旧线程,但我最近遇到了这个问题树莓派 3 B 型修订版 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 电缆所需的电源浪涌。取下夹子就解决了这个问题。

希望这篇笔记对某人有所帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 使用串口通过 Arduino 将多个值发送到 Raspberry

    我有一个关于 Arduino 和 Raspberry Pi 之间串行通信的问题 事实上 我想使用 Arduino 将 2 个变量发送到 Raspberry Pi 并以不同的方式使用它们 这是我的 Arduino 草图 int one 1 i
  • 在 Linux 上使用 PyAudio 列出设备

    在 Linux 上列出音频设备时 我尝试使用 Raspbian RaspberryPi import pyaudio p pyaudio PyAudio for i in range p get device count print p g
  • 无法挂载内存cgroup

    我尝试使用以下命令挂载内存 cgroup sudo mount t cgroup none sys fs cgroup memory o memory 我收到错误 mount sys fs cgroup memory wrong fs ty
  • Raspberry Pi 上的 Sqlite4java

    我想在 Raspberry Pi 上使用我的 java 项目 此代码依赖于 sqlite4java 它使用许多平台 包括 Arm 处理器 的本机实现link http code google com p sqlite4java downlo
  • Python VLC 实例全屏不起作用

    我对 Python 有点陌生 正在为连接运动传感器的 Raspberry Pi 开发一个应用程序 这个想法是把这个 Raspberry 放在一个房间里 在运动检测时 视频开始全屏播放 视频播放完毕后 我想让设备休眠 10 分钟 然后再次激活
  • Linux 上共享串口

    我正在使用 Raspberry Pi 进行一个项目 该项目需要能够写入和读取串行端口 但来自不同的程序 程序 A 需要能够从外围设备 A 正在发送数据的串行端口读取数据 程序B需要向串口写入数据 外设B正在监听串口 供参考 本例中程序A是G
  • 从 PyQt GUI 连接到串行

    我编写了一个程序来从串行发送和接收数据 但是我有一个问题 我想创建一个函数 connect 或一个类 当我按下按钮时 该函数就会被执行 但是如果我创建 MainWindow 类中的这个函数 TestThread 类中的变量 ser 未初始化
  • 使用 Ardulink 命令 Arduino Uno

    我试图在我的 JAVA 应用程序中使用 Ardulink 库来命令我的 Arduino Uno 但没有成功 我不知道我错过了什么 这是我的代码 Link link Link getDefaultInstance boolean connec
  • 使用 libx264 为 Raspberry pi 编译 Xuggler 时的问题 #2

    我正在尝试编译Xuggler http www xuggle com xuggler 对于 Raspberry Pi 在 Debian 操作系统上运行 又名 Raspbian 我遵循了可用的 基本构建说明 here http www xug
  • Raspberry Pi 无延迟(<10ms)视频流

    我正在基于 Raspberry Pi 构建四轴飞行器 我想通过蜂窝连接将网络摄像头的视频流式传输到我的计算机 我尝试了 ffmpeg 和 mjpg 但它必须有很大的延迟才能仅通过观看视频来控制 Quad 我的问题是是否可以以非常小的延迟 如
  • python:发送邮件,在“with”块内时失败

    我想知道为什么这段代码 test smtplib SMTP smtp gmail com 587 test ehlo test starttls test ehlo test login address passw test sendmai
  • 如何删除树莓派的相机预览

    我在我的 raspberryPi 上安装了 SimpleCv 并安装了用于使用相机板的驱动程序 uv4l 驱动程序 现在我想使用它 当我在 simpleCV shell Camera 0 getImage save foo jpg 上键入时
  • 如何从 Linux 的 shell 中删除所有以 ._ 开头的文件?

    确实如标题所示 我已将许多文件从 Mac 复制到 Raspberry Pi 这导致了许多以前缀开头的多余文件 我想删除以以下开头的文件夹中的每个文件 我该怎么做 尝试类似的方法 cd path to directory rm rf 或者 如
  • VideoCapture.read() 返回过去的图像

    我在跑python3 6 with openCV on the Raspberry pi OS is Raspbian 代码的大致结构如下 The image以时间间隔 3 5 分钟 捕获 被捕获image在函数中处理并返回度量 精度的种类
  • 带 Flask 的 RPI dht22:无法将第 4 行设置为输入 - 等待 PulseIn 消息超时

    我正在尝试制作一个 Raspberry Pi 3 REST API 使用 DHT22 提供温度和湿度 整个代码 from flask import Flask jsonify request from sds011 import SDS01
  • Raspberry 交叉编译 - 执行程序以“分段错误”结束

    我有一个自己编写的程序 我想从我的 x86 机器上为 Raspberry Pi 构建它 我正在使用 eclipse 生成的 makefile 并且无法更改此内容 我已经阅读了 CC for raspi 的教程 Hackaday 链接 htt
  • “gi.repository.Gtk”对象没有属性“gdk”

    我正在尝试使用 GTK 创建多线程 需要 Gtk gdk 但我收到有关没有 gdk 属性的错误 我正在使用带有 Raspbian 的 Raspberry Pi 这就是我导入 GTK 库的方式 try import pygtk pygtk r
  • 如何从c++调用python

    我是Python新手 我尝试像这样从 C 调用 python 脚本 在 Raspberry Pi 中 std string pythonCommand python Callee py a b int res system pythonCo
  • 处理两个传入的数据流并将它们组合在 python 中?

    我一直在研究Python中线程 多处理异步等的各种选项 作为处理两个传入流并将它们组合起来的方法 有关的信息很多 但示例往往令人费解且复杂 更常见的是将单个任务拆分为多个线程或进程 以加快任务的最终结果 我有一个通过套接字传入的数据流 当前
  • Python Pocketsphinx:使用 Decoder 类时无法识别关键字

    我正在尝试使用 Pocketsphinx 从 wav 文件中检测关键字 特别是使用解码器类 当我给它的时候this https www filedropper com clientaudio wav 文件并打印它检测到的内容甚至不接近 这是

随机推荐