【问题标题】:high speed character detection rs232高速字符检测rs232
【发布时间】:2017-09-26 12:46:51
【问题描述】:

我必须在 C 中编写代码来检测 linux 上 rs232 行中的字符间时间。字符间检测时间可以是 1ms。所以我需要一些东西来快速标记一个传入的字符。当我说非常快时不到 1 毫秒。

我不要求编码解决方案,我只是想要初步帮助以了解我必须采取的路径:是否可以在 linux 上执行此操作?我必须修改驱动程序才能达到这种时间?或者用户空间上的某些东西可以做到(我不这么认为)。

【问题讨论】:

  • 你为什么要测量字符间时间?这个时间通常可以为零。如果您实际上是在尝试检测消息间的间隙,例如Modbus,那么你就走错了可行的解决方案。

标签: c linux serial-port


【解决方案1】:

没有机会在用户空间实现这一点,据我所知,没有串行端口配置允许您指定精确的字符间超时。也许编写自定义驱动程序可以让您更接近 UART 中断,因为这正是您所需要的。

然而,每次我必须解决类似的任务时,我最终都会创建一个微型硬件模块,它可以非常精确地执行我的时间关键任务,并且只将结果报告给 linux 机器。这完全取决于您需要什么以及您的沟通差距检测应该有多精确。

【讨论】:

  • 感谢您的回答。不幸的是,在我的情况下,编写自定义驱动程序比更改硬件更容易。实际上 UART 直接连接到微控制器,所以也许这足以获得预期的精度。
  • @romariccrailox 好的,您可以试一试,但是我认为您的驱动程序在测量
  • 我明白,这也是我的恐惧……我需要这样的精度来满足一些家庭协议的需要。之前的解决方案做到了(但在实时操作系统上),所以一些家庭协议使用它,现在我们尝试限制回归......
  • 一些家庭协议?我已经在 x86 和 ARM 微控制器中实现了其中的许多,并且它们都不需要传入数据间隙检测。如果我们谈论的是一些标准协议(例如 BACnet、KNX、Modbus,...),那么只有标准的缓冲设施才能为您完成这项工作。
  • @romariccrailox 这意味着您不必知道两个字节之间是否存在间隙(这是您最初的问题)。您只需要在合理的时间内收到您的完整数据包,而不管其字节之间的间隙如何。这就是操作系统缓冲到位的时候。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 1970-01-01
  • 2014-09-16
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
相关资源
最近更新 更多