1

CANalyzer の COM インターフェイスを使用して、CAN 信号を特定の値に強制しようとしています。CAN メッセージを送信する COM メソッドがないため、CAPL を使用して回避策を実装しています。

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

これは問題なく動作しますが、ここではMyMessageMySignalが静的に (名前で) 参照されているため、N 個のシグナル (または N-way switch ステートメントなど) を送信できるように N 個の関数を実装する必要があります。メッセージ内のシグナルに文字列でアクセスする手間を省く方法はありますか? このようなもの:

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

また、COM インターフェイスで何かを見逃した場合に備えて、代替ソリューションを受け入れます。CANoe でのみ機能するソリューションがあれば、上司にライセンスを依頼することもできますが、もちろん、ライセンスを取得しない方がよいと思います。

4

1 に答える 1

2

そのような機能はありますが、テストノードでのみ使用するように制限されています

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

詳細は次の場所にあります。

CAPL 関数の概要 » テスト機能セット / シグナル アクセス » SetSignal 特別な使用例: 測定開始前にシグナルが不明

バスのオーバーフラッディングを避けるために、シグナルごとに新しいメッセージを送信しないように注意してください。私の意見では、メッセージ全体に対してすべてのシグナルを設定し、周期的でない場合にのみ変更時に送信する方が良いスタイルです。サイクリック メッセージの信号更新は、ほとんどの場合、次のサイクルで送信する必要があります。

于 2016-04-19T09:43:07.957 に答える