今年真减肥 2023-03-30 22:27 采纳率: 35.7%
浏览 44

Linux系统下RS485串口读取数据乱序

环境:基于Linux系统,一个网关作为上位机进行周期读取数据操作,下位机设备进行周期性响应,两者通过485串口连接进行通信(波特率等设置是一致的)
问题:开始通信后,前几个小时(大概6小时左右)通信是正常的,之后通信开始持续出现异常,且异常频率逐渐增高,通过重启上位机进程可以恢复通信
定位:日志打印和并联一根额外串口线通过串口工具监听发现,下位机响应的报文是正确的,但上位机通过read函数读取到的数据出现了乱序、缺失,导致了通信出现错误

请问有相关经验的朋友为什么会出现这样的情况呢?

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-03-31 18:14
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/745073
    • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:论文笔记-理解和解决图卷积网络的性能退化问题
    • 除此之外, 这篇博客: 【数据结构与算法】->数据结构->哈夫曼树->哈夫曼编码&解码中的 Ⅱ 什么是哈夫曼树 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      在前面我们说了,哈夫曼树是二叉树的一种,那到底是什么是哈夫曼树呢?这里我给出一个定义:给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。

      完全不知道这个定义在说什么。

      不要急,我们慢慢来。

      首先来看几个概念。

      • 路径:在一棵树中,一个结点到另一个结点之间的通路,称为路径。比如从根节点到 a ,就是一条路径。
      • 路径长度:在一条路径中,每经过一个结点,路径长度都要加 1 。例如在一棵树中,规定根结点所在层数为1层,那么从根结点到第 i 层结点的路径长度为 i - 1 。比如根节点到 c 和 d 都是 3。
      • 结点的权:给每一个结点赋予一个新的数值,被称为这个结点的权。比如 b 的权是 5。
      • 结点的带权路径长度:指的是从根结点到该结点之间的路径长度与该结点的权的乘积。比如 b 带权路径长度 = 2 * 5 = 10
      • 树的带权路径长度:指树中所有叶子结点的带权路径长度之和。通常记作 “WPL”。比如下图中的树的带权路径长度 WPL = 7 * 1 + 5 * 2 + 2 * 3 + 4 * 3 = 36。

      在这里插入图片描述
      所以,当用 n 个结点(都做叶子结点且都有各自的权值)试图构建一棵树时,如果构建的这棵树的带权路径长度最小,称这棵树为“最优二叉树”,也叫“哈夫曼树”。

      在构建哈夫曼树时,要使树的带权路径长度最小,只需要遵循一个原则,那就是:权重越大的结点离树根越近。在图 1 中,因为结点 a 的权值最大,所以理应直接作为根结点的孩子结点。

      有了这个概念,我们就可以开始构建哈夫曼树了。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 3月30日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 易优eyoucms关于二级栏目调用的问题
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题