4

我正在尝试与使用相同协议的设备进行通信,无论您是通过 TCP 套接字还是串行端口与之通信。无论哪种方式,它都是一个基于 ASCII 命令的界面,您可以在提示符处键入命令,然后输入一个换行符,您会得到一个换行符的响应,然后是一个新的提示符。

> IDENTIFY
DEVICE_TYPE_RESPONSE
> TEST POWER
OK
>

该程序可以并且应该阻塞,直到它得到新的提示,但需要有一个超时,这样你就不会永远等待,以防设备突然死亡。该超时应该是几秒钟,以免错误地标记网络故障,但不应该强迫我在获得提示字符后等待几秒钟。

我喜欢某种抽象接口的方法,以便不关心底层通信层是什么。只需将一个打开的套接字或一个打开的串行端口传递给它,让一切发生。有什么好的方法可以做到这一点吗?最好能够在 Python 2.6 下运行。

4

2 回答 2

2

您可以在 Twisted 中实现该协议,它允许您使用 TCP 或串行端口作为传输而不更改您的协议实现。Twisted 还允许您设置超时/延迟回调。

于 2012-04-12T17:08:15.960 回答
0

Python 的串行包提供了很多有用的东西,包括一些基于 TCP/IP 桥接的串行。如果您想使用 ASCII/Telnet 与它交谈,那么您可能希望将“--convert”选项与简单串行到网络 (TCP/IP) 重定向器一起使用。

此外,您可能想看看在Linux 环境中将串行端口数据转换为 TCP/IP 的其他相关问题

于 2013-01-31T11:24:51.750 回答