2016-02-05 32 views
1

我剛剛學習使用上的CAPL,我需要創建一個網關來過濾2個CAN總線之間的消息。獲取CAN總線中所有活動消息的列表

對於第一部分,我需要創建一種方法來切換從總線1到總線2的傳輸,反之亦然(已完成)。

然後,我必須能夠從任何總線中選擇一條特定消息,將它發送到另一條總線。所有這些都必須以圖形方式顯示,並且我使用複選框來切換第1部分,並使用郵件過濾器的下拉列表。

你知道一種方法可以從最後一個例如10​​秒鐘內獲得總線上的活動(Rx/Tx)消息列表嗎? (我知道我必須使用定時器來調用更新功能)

回答

1

您可以通過定義on message事件處理程序來訂閱來自總線的所有消息。它會針對每條消息進行調用(取決於您指定的過濾條件)。您可以通過使用output重新傳輸消息來創建網關。

例如,你的圖形面板可以設置一個變量my_id到想要從總線1向中繼到總線2的消息的ID你可以然後寫:

on message CAN1.* 
{ 
    message CAN2.* msg; 
    if((this.dir == rx) && (this.id == my_id)) { 
     msg = this; 
     output(msg); 
    } 
} 

附加條件this.dir == rx是必要如果你想從總線1向總線2傳遞相同的消息,反之亦然。它會阻止你無限期地重發相同的消息。