我們正在開發一個項目,要求我們與一組特定的硬件進行接口;一組可以很容易地使用C#控制,另一組使用Python本地編程。部分項目涉及讓運行在Python上的硬件與通過C#運行的硬件進行通信,不幸的是,由於時間限制,我們無法創建一組C#或Python軟件來控制另一組硬件。在同一臺機器上託管的C#和Python應用程序之間的通信
在Python上運行的一組硬件完全基於事件,因爲我們可以編程在硬件滿足某些條件時調用的函數。我們的想法是修改控制另一組硬件的C#應用程序來承載Python應用程序(使用類似Application.Run()
的東西),然後編程Python函數,以便在硬件發生事件時將相關數據傳播到C#應用程序。
我們正在考慮使用套接字連接來處理兩者之間的通信,因爲C#和Python都很容易以這種方式工作(或者我們的Python傢伙聲稱)。我們最擔心的是如果兩個程序都將託管在同一臺機器上,那麼是否會有任何問題。如果這不會是一個問題,我們可能會最終使用的共享庫如0MQ
我們也做了一些研究分爲以下幾個方面:
- 管道/命名管道
- 消息隊列
- 共享內存
基本上,我們想知道這些(或任何其他人)的方法是最容易與這些語言來實現,並會給我們最好的表現。我們只關心速度和準確性的數據(即,如果使用網絡數據包,一個會降低最少)。安全不是一個問題。
理想情況下,應該有一個數據流從Python應用程序轉到C#應用程序,以及兩個數據流從C#應用程序轉到Python應用程序。主機將運行Windows 7.我可以根據需要提供其他信息。