【零基础学习CAPL】——CAN报文的发送(面板中直接修改信号值进行发送)
/*@!Encoding:936*/
includes
{
}
variables
{
message ESC_125 meg1;
msTimer Timer1;
long Cycle_Timer1;
int Button1;
int VehicleSpeedVD1;
long VehicleSpeed1;
}
//创建一个报文
on message ESC_125
{
// (0)=0x11;
// (1)=0x12;
// =8;
//CANFD报文发送标志
meg1.FDF = 1;
meg1.BRS = 1;
}
//创建定时器
on timer Timer1
{
output(meg1);
setTimer(Timer1,Cycle_Timer1);
}
//向面板中对应的控件写入默认值
on start
{
sysSetVariableInt(sysvar::TestOne::Button,1);//Button绑定的控件默认值为1,打开状态
sysSetVariableInt(sysvar::TestOne::Length,8);//Length绑定的值默认为8
sysSetVariableInt(sysvar::TestOne::Cycle_Time,50);//Cycle_Time绑定的控件 默认值为50
sysSetVariableInt(sysvar::TestOne::VehicleSpeedVD,0);//0x0:Valid,0x1:Invalid
sysSetVariableInt(sysvar::TestOne::VehicleSpeed,0);//车速默认值为0
}
//点击按钮触发报文周期性发送
on sysvar_update sysvar::TestOne::Button
{
Button1 = @this;
if(Button1 == 1)
{
setTimer(Timer1,Cycle_Timer1);
}
else
{
cancelTimer(Timer1);
}
}
//在面板中手动改动长度
on sysvar_update sysvar::TestOne::Length
{
meg1.DLC=@this;
}
//在面板中手动改动周期值
on sysvar_update sysvar::TestOne::Cycle_Time
{
Cycle_Timer1=@this;
}
//在面板中手动改动速度有效值
on sysvar_update sysvar::TestOne::VehicleSpeedVD
{
VehicleSpeedVD1=@this;
meg1.ESC_VehicleSpeedVD.phys=VehicleSpeedVD1;
}
//在面板中手动改动速度值
on sysvar_update sysvar::TestOne::VehicleSpeed
{
VehicleSpeed1=@this;
meg1.ESC_VehicleSpeed.phys=VehicleSpeed1;
}