1

ベクター ソフトウェアを使用して、CANoe でテスト自動化用のテスト環境を作成しました。ほとんどのテスト ケースでは、継続的なメッセージを送信する必要があります。

元。Msg1.Signal1 = 3 秒間 1

Msg1.Signal1 = 2 秒間 4。

オンラインで入手できるヘルプ コンテンツと一部の PDF を調べたところ、次のようなロジックを記述できました。

variables
{
message 0x555 msg1 ;
mstimer timer1; // define timer1
}
on message msg1
{
setTimer(timer1,3000); // initialize timer 
}
on timer timer1
{

setTimer(timer1,3000); // reset timer
msg1.signal1 = 1; // change the data
output(msg1); // output message
}

ただし、プログラム全体の実行時間は約 200 ミリ秒であるため、メッセージは 3 秒間送信されません。同様のコードが 2 秒の期間で書き直されました。コードの何が問題なのか、またはこの目的を達成するためにさらに進む方法を教えてもらえますか。

前もって感謝します。よろしく、 Vivek

4

1 に答える 1

0

次の例では、2 つの独立したタイマーを使用します。1 つはシグナルを 4 に設定し、もう 1 つはその値を 1 に変更します。

トグル手順を簡単に開始および停止できるように、いくつかのキーボード イベントを追加しました。

variables
{
    message 0x555 msg1 ;
    mstimer timer1; // Timer1 defined in ms    
    mstimer timer2; // Timer2 defined in ms
}
on key '1'
{
    // This event is called every time the key '1' is pressed
    // This will START the whole signal toggling procedure
    setTimer(timer1,3000);
}
on key '2'
{
    // This event is called every time the key '2' is pressed
    // This will STOP the whole signal toggling procedure
    cancelTimer(timer1);
    cancelTimer(timer2);
}

on timer timer1
{
    msg1.signal1 = 1;       // Set signal1 to 1 
    output(msg1);           // Send the message over CAN

    setTimer(timer2,3000);  // Let the signal1 be 1 by 3 seconds
}

on timer timer2
{
    msg1.signal1 = 4;       // Set signal1 to 4 
    output(msg1);           // Send the message over CAN

    setTimer(timer1,2000);  // Let the signal1 be 4 by 2 seconds
}
于 2015-02-11T21:47:10.377 に答える