1.前期准备工作
1.1首先创建三个节点
1.2 添加相关的系统变量如下
1.3 新建如下dbc文件
1.4 按照书中的要求,新建Panel面板
2.三个节点的程序分别为
2.1 Engine 节点程序
//Engine Node CAPL Program
includes
{
}
variables
{
}
//处理系统变量-sysvar::Engine::EngineStateSwitch
on sysvar sysvar::Engine::EngineStateSwitch
{
$EngineState::OnOff = @this;
if(@this)
$EngineState::EngineSpeed = @sysvar::Engine::EngineSpeedEntry;
else
$EngineState::EngineSpeed = 0;
}
//process the change event of sysvar::Engine::EngineSpeedEntry
on sysvar sysvar::Engine::EngineSpeedEntry
{
if(@sysvar::Engine::EngineStateSwitch)
{
$EngineState::EngineSpeed = @this;
}
}
2.2 Door 节点程序
//Door Node CAPL Program
includes
{
}
variables
{
int gDebugCounterTX = 0;
int gDebugCounterTXRQ = 0;
int gDebugCounterRX = 0;
}
on start
{
setWriteDbgLevel(0); // set DbgLevel = 1 to get more information in Write-Window
}
//check DoorState transmission direction
on message DoorState
{
//Check DoorState Message transmission direction - TX
if (this.dir == TX)
{
gDebugCounterTX++;
if(gDebugCounterTX == 10)
{
writeDbgLevel(1,"DoorState TX received by node %NODE_NAME%");
gDebugCounterTX = 0;
}
}
//Check DoorState Message transmission direction - TXREQUEST
if(this.dir == TXREQUEST)
{
gDebugCounterTXRQ++;
if(gDebugCounterTXRQ == 10)
{
writeDbgLevel(1,"DoorState TXREQUEST received by node %NODE_NAME%");
gDebugCounterTXRQ = 0;
}
}
//Check DoorState Message transmission direction - RX
if (this.dir == RX)
{
gDebugCounterRX++;
if(gDebugCounterRX == 10)
{
writeDbgLevel(1,"Error: DoorState RX received by node %NODE_NAME%");
gDebugCounterRX = 0;
}
}
}
//to disable the debug info output
on key '0'
{
setwriteDbgLevel(0);
}
//to enable the debug info output
on key '1'
{
setwriteDbgLevel(1);
}
2.3 Display 节点程序
//Display Node CAPL Program
includes
{
}
variables
{
}
//process the EngineState Message received
on message EngineState
{
// engine state received
if (this.dir == RX)
{
@sysvar::Engine::EngineSpeedDspMeter = this.EngineSpeed / 1000.0;
}
}
//process the DoorState Message received
on message DoorState
{
// door state received
if (this.dir == RX)
{
@EnvDoorState = this.Door_L + this.Door_R * 2;
}
}
动画效果的示例图片(PS:图片来源:《CANoe从入门到开发》资源)
标签:Engine,received,EngineState,CANoe,RX,第十章,sysvar,DoorState,Panel From: https://blog.csdn.net/m0_54956822/article/details/142645076