2016-10-13 200 views
0

ベクターソフトウェアを使用してCANoeにノードを作成しました。設計したデータベースを割り当てました。ベクターCANoeでの連続信号送信

私はボタン付きのパネルを作成するために、連続したメッセージを送信する必要があります。私はブトンに押し続けると、メッセージの信号は常に値1を取る必要がありそうでない場合はその0(ボタンが解放)

送信すべきメッセージは、このcaraczeristicsを持っている:

enter image description here

私のコードボタンを押した後のメッセージtransmettingのために:

variables { 

message messageDeclaredInDb myMessage; 
msTimer cyclicTimer200ms; 
} 
on envVar ev_Button_Status 
{ 

    switch (getValue(this)) { 

    case 0: myMessage.Sig = 0; 
      write("button released"); 
      break; 

    case 1: myMessage.Sig = 1; 
      write("button pressed"); 
      break; 

    default: write("Default"); 
    } 

    setTimerCyclic(cyclicTimer200ms, 200); 

} 

on timer cyclicTimer200ms 
{ 

    myMessage.Sig = getValue(ev_Button_Status); 
    output(myMessage); 
} 

をそして私はグラフィックで結果を可視化する:

enter image description here

しかし、指名手配結果はアップせずに、信号のダウン、次のようにする必要があります:

enter image description here

任意のヒントしてください?インタラクションレイヤーを使用していないことを知っています。

答えて

1

GenMsgILSupport = Yes属性に注意してください。つまり、相互作用レイヤがこのメッセージに対してサポートされています。 ILは、データベースに定義された属性(サイクルタイムなど)に従ってメッセージを送受信します。

ILサポートを使用すると、信号に直接アクセスできます。メッセージ変数やタイマーを定義する必要はありません。信号名の前に$文字を置き、値を設定するだけです。例:

$Sig = 1; 

コンプリート例1:あなたはどのインタラクションレイヤーを使用しない場合

on envVar ev_Button_Status 
{  
    switch (getValue(this)) {  
    case 0: 
     $Sig = 0; 
     write("button released"); 
     break; 

     case 1: 
      $Sig = 1; 
      write("button pressed"); 
      break; 

     default: 
      write("Default"); 
    }  
} 

、それはあなたのメッセージのために無効であることを確認してください。さらに、インクルードはあなたのコードを持ついくつかの問題です:

  1. あなたがいないon envVarで、on startにタイマーを開始する必要があります。
  2. 信号値をon envVarまたはon timerに設定しますが、両方に設定しないでください。

コンプリート例2:

variables { 
    message messageDeclaredInDb myMessage; 
    msTimer cyclicTimer200ms; 
} 

on start 
{ 
    setTimerCyclic(cyclicTimer200ms, 200); 
} 

on timer cyclicTimer200ms 
{ 
    myMessage.Sig = getValue(ev_Button_Status); 
    output(myMessage); 
} 
+0

はご説明いただきありがとうございます!実際問題は、ECUが物理的に接続されている間にシミュレートしようとしていたので、信号を送信していましたが、同時にECUも信号を送信しています。だから私たちはグラフ上でこの動作を取得します! – Med