raspberry-pi - 串口停止接收数据,发送任何数据暂时修复它
问题描述
我有一个运行 raspbian 的 Raspberry Pi 3,连接了两个 USB 2.0 到 RS485 适配器。操作系统将这些适配器映射到 /dev/ttyUSB* 地址。在 RPi 上运行的程序使用 NMEA 0183 协议从传感器接收数据。以前,开源程序“kplex”从两个传感器接收数据,并且无限期地运行没有问题。
最近,我更改了设置,直接使用我自己的一个程序读取其中一个以 4800 波特运行的串行端口。我现在有一个问题,在运行“长时间”后,通常是一天左右,串行端口停止接收来自传感器的数据。以下是我的一些诊断:
- 重新启动从传感器读取数据的程序不会重新开始接收数据。
- 停止我的程序后,其他尝试读取端口上的数据,例如使用“cat”或“screen”也显示没有数据进入。
- 重新启动 Raspberry Pi 也不能解决问题。
- 调整串行端口配置设置以匹配 kplex 使用的设置并不能解决问题
- 例如,我发现可靠解决问题的唯一方法是将任何数据发送到串行端口
echo abc >/dev/ttyUSB1
- 将数据回显到端口后,传入数据的接收立即恢复并继续另一天左右,之后停止
- 使用程序“stty”我监控了配置选项,这些选项似乎在重新启动时仍然存在。
- 有一次,修改了其中一些标志,我以为我已经解决了这个问题。然后,在 RPi 和传感器完全断电/重新供电后,它再次工作了一段时间,然后问题再次出现。
- 我没有发现对我的代码或端口配置的更改已经可靠地解决了这个问题。
- 它使用“kplex”可靠地工作的事实让我认为这是一个软件配置问题,但仍然不确定。
- 将数据发送到端口解决了问题的事实使我认为它可能是适配器驱动程序中的一些挂起,但同样,它正在使用“kplex”工作。
什么样的问题可能导致这些症状?
解决方案
推荐阅读
- pega - 如何在 pega 中为计划报告任务设置分钟
- sql - MAC OS - 错误:找不到模块 postgres 驱动程序
- javascript - 如何用 django 渲染 html?
- javascript - 在 React 项目中配置 ESLint 后在箭头函数中抛出错误
- .htaccess - 在查询中输入双引号时页面没有正确重定向
- haskell - Graham Hutton 的“在 Haskell 中编程”中的 Haskell 中的简单求和函数不起作用
- sap-cloud-sdk - 使用 SAP Cloud SDK (NodeJS) 的并行 SuccessFactors 扩展的复杂查询
- php - .php 扩展名未通过 .htaccess 在某些页面上删除
- python - 出现错误“异常消息是:400 错误请求:浏览器(或代理)发送了此服务器无法理解的请求”
- algorithm - 基于相似度的好友推荐算法