2016-04-06 26 views
1

我試圖用CANalyzer的COM接口強制CAN信號給定值。由於沒有COM方法發送CAN消息,我使用CAPL實現一種變通方法:如何在CAPL中動態(按字符串)訪問CAN信號?

void SendMySignal(int value) { 
    message MyMessage msg; 
    msg.MySignal = value; 
    output(msg); 
} 

這工作得很好,但是因爲MyMessageMySignal靜態引用(按名稱)在這裏,我得實現N個功能以發送N個信號(或N路開關語句等)。有沒有辦法避免字符串消息中的麻煩和訪問信號?這樣的事情:

void SendSignal(int MessageID, char SignalName, int value) 

我也開放的替代解決方案,以防萬一我錯過了COM接口的東西。如果有一個解決方案只適用於CANoe,我可以向我的老闆索要許可證,但我當然寧願不要。

回答

1

有這樣的功能,但它僅限於測試節點使用

long setSignal(char signalName[], double aValue); 

你可以找到具體爲:

CAPL功能概述»測試功能集/信號訪問»SetSignal 特殊用途:信號在測量前不知道開始

並注意不要爲每個信號發送一條新消息以避免總線過度氾濫。在我看來,設置全部信息的全部信號並且僅當其不是循環的時才發送。循環消息中的信號更新主要是必須在下一個週期發送。