這是關於一個需要通過軟件控制的機電系統。目前還不清楚它將被寫入哪種語言,但由於它並不重要,所以讓我們用Java來說。控制軟件中的層從真正的機電系統和仿真程序中提取
1.問題是我們需要通過CAN發送消息。所以我們有控制軟件,發生了一些事件,我們通過CAN發送消息。機電系統將作出反應。
現在的第2件事情是,顯然它能夠在沒有真正的機電系統的情況下測試軟件,因爲它減少了工作量。所以我想寫另一個程序,一個模擬程序。
所以我想象一下,仿真程序會通知CAN消息何時發送並作出反應。
如何實現這一目標?
我指的是真正的機電一體化系統,控制軟件需要在總線上直接發送CAN信息(也許通過一些本地代碼)。對於仿真程序,需要某種進程間通信。控制軟件的設計必須如何設計:它不在意是否有一些正在偵聽的仿真程序或真正的機械系統獲取CAN消息?
我首先想到的是控制軟件總是通過進程間通信方式發送「CAN消息」。讓我們說,爲了簡單起見,它是RMI。然後通過總線發送真正的CAN消息,同一控制軟件中有一些模塊通過RMI獲取「CAN消息」,並將它們轉發給真正的CAN總線。 現在仿真程序也可以通過RMI接收「CAN消息」,並且可以對其做出反應。
這是一個很好的方法嗎?因爲我發現控制軟件中存在一些開銷,通過進程間通信與自己進行通信,這在原則上並不是必需的。但是我看不出有其他可能性有抽象層,這樣我就沒有特殊的代碼用於控制軟件中的模擬程序。
謝謝您的反饋!