我正在尝试将一组 CAN 帧发送到 CAN 总线。我使用 CAPL 进行编程,使用 CANalyzer8.5 进行模拟,使用面板设计器创建按钮。我的要求是首先使用 PANEL 设计器创建一个按钮。只有在按下按钮时,它才会开始向总线发送周期性的 CAN 帧。我对如何实现它有点困惑。到目前为止,我已经设法使用 CAPL 编写了两个单独的程序。第一个程序在启动时定期发送数据。第二个代码在按下按钮时仅发送一次数据。我想合并两个代码以在按下按钮时开始定期发送。
第一个代码
/*@!Encoding:1252*/
includes
{
}
variables
{
msTimer mytimer;
message 0x100 A={dlc=8};
message 0x200 B={dlc=8};
message 0x300 C={dlc=8};
message 0x400 D={dlc=8};
}
on start
{
setTimer(mytimer,50);
}
on timer mytimer
{
A.byte(0)=0x64;
B.byte(4)=0x32;
C.byte(6)=0x20;
D.byte(7)=0x80;
output(A);
output(B);
output(C);
output(D);
setTimer(mytimer,50);
}
第二代码
/*@!Encoding:1252*/
includes
{
}
variables
{
message 0x100 A={dlc=8};
message 0x200 B={dlc=8};
message 0x300 C={dlc=8};
message 0x400 D={dlc=8};
}
on sysvar test::myButton
{
A.byte(0)=0x64;
B.byte(4)=0x32;
C.byte(6)=0x20;
D.byte(7)=0x80;
output(A);
output(B);
output(C);
output(D);
}
如前所述,当我按下按钮时,它应该开始定期发送 CAN 帧。但问题是,我不能在函数内调用函数,如下所示:
on start
{
on sysvar test::myButton
{
....
}
}
请给我建议。谢谢你