我正在尝试与使用相同协议的设备通信,无论您是通过TCP套接字还是串行端口与之通信。无论哪种方式,它都是一个基于ASCII命令的界面,您可以在提示符下键入命令,然后输入换行符,使用换行符获得响应,然后是新提示符。
> IDENTIFY
DEVICE_TYPE_RESPONSE
> TEST POWER
OK
>
该程序可以而且应该阻止,直到它获得新的提示,但是需要超时,以便在设备突然死亡时不要永远等待。该超时应该是几秒钟,以免错误地标记网络故障,但是一旦我得到我的提示字符,不应该强迫我等待几秒钟。
我喜欢某种方式来抽象接口,以便不关心底层通信层是什么。只需将它传递给一个打开的套接字或一个开放的串口,让一切都发生。有一些好方法可以做到这一点吗?最好能够在Python 2.6下运行。
答案 0 :(得分:2)
您可以在Twisted中实现协议,该协议允许您在不更改协议实现的情况下将TCP或串行端口用作传输。 Twisted还允许您设置超时/延迟回调。
答案 1 :(得分:0)
Python的串行包提供了许多有用的东西,包括一些serial over TCP/IP bridges。如果你想使用ASCII / Telnet与它通信,那么你可能希望在简单串口到网络(TCP / IP)重定向器中使用'--convert'选项。
您也可以在Converting serial port data to TCP/IP in a linux environment
上查看其他相关问题