2011-08-20 68 views
2

我目前的Arduino的類型設備控制系統的工作使用扭曲,並有一點設計問題自定義Python Twisted協議:最佳實踐和複雜性?

這是怎麼回事兒目前:(提前對不起,可能是有點長)

  1. 來處理不同類型的器件(各自具有不同的固件&通信協議)我有一個設計「驅動器」系統:
    • 每個驅動器是由:
      • 一個「硬件漢dler類」:圍繞Twsited的串行類的包裝與一些添加輔助方法
      • 一個自定義的串行協議

2 - 儘管的RepRap 3D打印機實現驅動程序(也可根據arduino,也使用串行連接)與相當特定的協議(即入隊點,設置溫度等),我開始懷疑我是否將處理這些功能的方法(每個都有特定的I2C命令)在正確的地方..

這一切都使我對我的問題:

我不太肯定的良好做法儘可能扭曲協議去,而是通過的文件/代碼已經看其中不少人似乎傾向於使用相對較少的方法

  • 這種情況總是如此嗎?協議只有用於非常低級別的功能和輸入/輸出格式和通信?
  • 我想要管理的某些設備有非常明確的協議(Makerbot等),我應該考慮一般協議規範是一個不同的事情,然後我創建的實際Twisted協議類?

任何意見,提示和指針都是值得歡迎的! 在此先感謝。

回答

3

我會盡我所能來回答一個很好,相當普遍的問題。

1)組成一個扭曲的協議端口只有4種方法: http://twistedmatrix.com/documents/11.0.0/api/twisted.internet.interfaces.IProtocol.html 因此,這將是您所有的協議實現和扭曲之間的相互作用發生。 2)除了協議實例外,當然還有工廠生成協議實例(對於每個新連接)。例如,所有連接都可以使用的東西(比如當前連接的客戶端的數量等等)自然就在那裏。

3)當然,建立一個小的類層次結構是有意義的,你可以從協議派生出來,實現所有子協議共享的東西,然後再在派生類中再次實現子協議細節。

+0

感謝您的迴應,oberstet,它實際上幫助了很多!因爲你提到的鏈接中的_websocket.WebSocketProtocol_似乎走到了一條類似於我正在採用的路線(大量特定於域的協議,協議層次結構),所以我會看看進入高速公路協議的更多信息。 - 2)僅在我的情況下部分適用:我寫的協議是**串行**連接,在扭曲處理方式不同(無工廠等) 扭曲websockets的加分點我將需要取代長歌! 謝謝! –