欢迎来到天天文库
浏览记录
ID:42577321
大小:587.96 KB
页数:12页
时间:2019-09-18
《CANoe 入门 Step by step系列(三)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、CANoe入门Stepbystep系列(三)简单例子的剖析 最好的学习方式是什么?模仿。有人会问,那不是山寨么?但是我认为,那是模仿的初级阶段,当把别人最好的设计已经融化到自己的血液里,变成自己的东西,而灵活运用的时候,才是真正高级阶段。正所谓画虎画皮难画骨。但初级阶段仍然是必须经历的过程,他会使你在达到高级阶段的过程中少走很多弯路,下面我们来迈出这一步。先研究一下别人的简单例子。 最好的例子莫过于Vector本身的Demo了,这个在安装完CANoe之后就会被自动安装。先看最简单的一个,名字叫Easy,但并不简单哦,比我们之前介绍的
2、所有的东西都整合再一起了,很简单,但很全面。但是假如你说,这个我自己也可以完全自己写出来(并不是仅仅是看懂哦),那么我可以肯定的说,在工作中,你完全可以胜任一般的任务要求哦~,剩下的只是工作量的问题了。但我相信到现在为止,你们很多人,都无法写出这样的程序,所以我建议你们把这个程序好好的研究明白,这点很重要。废话不多说,上图,下面是打开运行后的界面。通过面板可以控制,及显示很多动画效果,做的非常的漂亮。在其余的窗体也将主要的数据以图表等表现方式呈现出来。我们先看一下DBC的内容吧Signals:EngineSpeed 车速信息FlashLig
3、ht 双跳灯HeadLight 大灯OnOff 引擎状态 Messages:EngineState 引擎状态:包含的信号有OnOff,EngineSpeedLightState 灯光状态:包含的信号有FlashLight,HeadLight Networknodes:Display 显示节点,接收所有消息Engine 引擎节点,发送EngineState消息Light 灯光节点,发送LightState消息 Environmentvariables: 环境变量
4、,一般与界面的组件相关联,这样就实现了图形化界面的控制与显示,下面就是关联的界面组件EnvEngineSpeedDspMeter EnvEngineSpeedDspText EnvEngineSpeedEntry EnvEngineStateDsp EnvEngineStateSwitch EnvHazardLightsSwitch EnvHeadLightSwitch EnvLightDsp 注意一下信号的信息:Definition页面的,In
5、it.Val的输入框使能了,之前是灰色的状态,为什么呢?点击一下蓝色的带下划线的连接,弹出窗台如下:意思是说这个值的设置,必须要定义的属性才能有效,之前一直没有提到信号的属性,这次还是第一次遇到哦。个人理解信号属性是表明信号的特点的一系列参数,当然消息和节点也都有对应的属性。为了更加详细的了解这个属性,我们求助于帮助。哦,明白了,原来是用来初始化数据的哦。其实在Definition表示的是物理值,都要转换成Raw值保存到GenSigStartValue属性中。在属性的创建我们之前也没有提到过,这里讲一下,请在CANdb++Editor菜单中
6、,View->AttributeDefinitions右键,New,填写好信息即可。属性背后跟行为是密切相关的,甚至跟底层dll,其他的一些属性请参考Help文档,当然重要的属性我们也会跟大家在后面提到。dbc还有一些细节,就是接受的消息的定义,之间也没介绍过,例如Display节点只接收消息,那么你就应该在节点的属性上进行配置,方法是右击节点然后点EditNode,在MappedRxSig.中就可以定义接收的信号了,Add…其实不定义接收消息也是可以的,但会在File->Consistencycheck的检查中中显示出无接收节点等的报警。
7、例如前面第一讲例子的dbc的检查如下:再看一下CAPL程序。engine.can程序如下:variables{}onenvvarEnvEngineStateSwitch //当拨动开关的时候,会更改发动机发出的信号{ $EngineState::OnOff=@this; //注意信号和环境变量直接赋值时的符号,信号用$,环境变量用@ if(@this) $EngineState::EngineSpeed=@EnvEngineSpeedEntry; else $EngineState::EngineSp
8、eed=0;}onenvvarEnvEngineSpeedEntry //当移动车速滑条时,会更改发动机发出的信号{ if(@EnvEngineStateSwitc
此文档下载收益归作者所有