2012-04-12 40 views
4

我试图与使用相同协议的设备进行通信,无论您是通过TCP套接字还是串行端口与它通信。无论哪种方式,它都是一个基于ASCII命令的界面,您可以在提示符下输入命令,然后输入换行符,用换行符得到响应,然后出现新提示。Python对串行/以太网的漠视

> IDENTIFY 
DEVICE_TYPE_RESPONSE 
> TEST POWER 
OK 
> 

该程序可以和应该阻止,直到它得到新的提示,但需要有一个超时,所以你不会在突然装置死亡的情况下永远等待下去。该超时应该是秒,以免在网络故障中错误地标记,但是不应该强制我在获得我的提示字符后等待秒数。

我喜欢某种方式来抽象接口,以便不关心底层通信层是什么。只要通过一个开放的套接字或一个开放的串行端口,让一切都发生。有没有一些好方法可以做到这一点?最好能够在Python 2.6下运行。

回答

2

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