2012-04-12 43 views
4

我試圖與使用相同協議的設備進行通信,無論您是通過TCP套接字還是串行端口與它通信。無論哪種方式,它都是一個基於ASCII命令的界面,您可以在提示符下輸入命令,然後輸入換行符,用換行符得到響應,然後出現新提示。Python對串行/以太網的漠視

> IDENTIFY 
DEVICE_TYPE_RESPONSE 
> TEST POWER 
OK 
> 

該程序可以和應該阻止,直到它得到新的提示,但需要有一個超時,所以你不會在突然裝置死亡的情況下永遠等待下去。該超時應該是秒,以免在網絡故障中錯誤地標記,但是不應該強制我在獲得我的提示字符後等待秒數。

我喜歡某種方式來抽象接口,以便不關心底層通信層是什麼。只要通過一個開放的套接字或一個開放的串行端口,讓一切都發生。有沒有一些好方法可以做到這一點?最好能夠在Python 2.6下運行。

回答

2

您可以在Twisted中實現該協議,該協議允許您在不改變協議實現的情況下使用TCP或串行端口作爲傳輸。 Twisted還允許您設置超時/延遲迴調。