Interface 使用TCP/UDP上的串行通信

Interface 使用TCP/UDP上的串行通信,interface,serial-port,Interface,Serial Port,我有几个应用程序可以通过串行通信(RS-232和RS-422)进行通信,我希望它们可以通过TCP或UDP进行通信,而无需更改它们。另一点是,一些应用程序必须在linux上运行。 我想知道是否有用于此目的的现有工具 非常感谢! Tal如果您对串行端口所做的只是读写字节,并且如果不考虑精确的定时,那么您可以用TCP套接字替换串行端口对象,并通过套接字发送与通过端口发送的数据完全相同的数据。最大的复杂性是TCP套接字上的定时比串行端口上的定时宽松得多,并且TCP套接字发送“带外”数据的机制与串行端口的

我有几个应用程序可以通过串行通信(RS-232和RS-422)进行通信,我希望它们可以通过TCP或UDP进行通信,而无需更改它们。另一点是,一些应用程序必须在linux上运行。 我想知道是否有用于此目的的现有工具

非常感谢!
Tal

如果您对串行端口所做的只是读写字节,并且如果不考虑精确的定时,那么您可以用TCP套接字替换串行端口对象,并通过套接字发送与通过端口发送的数据完全相同的数据。最大的复杂性是TCP套接字上的定时比串行端口上的定时宽松得多,并且TCP套接字发送“带外”数据的机制与串行端口的机制不同


我不知道通过UDP发送串行数据的任何标准。从概念上讲,这似乎是一件有用的事情,因为有许多基于串行端口协议的协议,在这些协议中,丢弃在特定时间范围内无法传递的数据比延迟传递更有用。例如,如果串行端口数据的预期接收者是一个嵌入式控制器,该控制器有时会非常繁忙,以至于丢弃一些传入数据,但它会在几毫秒内对它确实接收到的所有数据做出响应,则TCP连接上会出现一秒钟的故障[这并不罕见]可能导致预期直接与控制器对话的软件重新传输一个命令十几次。即使设备能够检测并拒绝接收到的重传,放弃较早的传输请求也比延迟发送要好。请注意,为了有用,基于UDP的方案必须包含足够的包装逻辑,以确保数据包不会无序交付;一旦数据包的数据被发送到串行端口,任何UDP数据包都必须被丢弃,尽管这些数据包之前已经发送过,但之后接收到;接收者可能应该包含逻辑,这样,如果接收到许多顺序错误的数据包,它将在接收到任何序列号不紧跟最后一个的数据包后等待一段时间,以查看丢失的数据包是否出现,然后再承诺丢弃这些数据包。

没有标准工具可以做到这一点。我正在考虑开发一个。UDP在这种情况下是理想的,因为它100%保证在短LAN上不会像您的情况那样出现无序数据包传递。

在几个项目中,我使用了免费工具Hercules()进行原型和测试阶段。没有广告宣传,只是推荐。

@HaiBi嗨,我在寻找一些开箱即用的东西,应用程序没有变化。例如-硬件解决方案可以是,而windows的软件解决方案可以是。@Tal:如果时间不关键,则用于TCP/IP的现成解决方案模块。其中许多只是将TCP套接字流桥接到串行端口。如前所述,对于这些事情,时间安排往往非常草率,但如果您的协议能够容忍,它们可能会起作用。