CANoe CAPL 函数output浅析--LIN
2024-01-03 04:10:00
LIN报文的输出函数
output:发送帧头
This function can be used for two purposes: |
|
|
一、第一种情况:LDF文件已定义ID
如果有LDF文件,对于主节点发出来的报文,直接就可以output,如果是
on key 'a'
{
linFrame 0x9 tst_Frame;
tst_Frame.RTR=1;
output(tst_Frame);
}
对于从节点的message,必须存在从节点,可以是真实节点,也可以是模拟节点,下面介绍模拟节点
我们在capl里面定义
on key 'b'
{
linFrame 0x37 tst_Frame1;
tst_Frame1.RTR=1;
output(tst_Frame1);
}
把从节点0x37(111)打开,就可以看到发出来的消息
这样做确实把报文发出来的,但是报文里面的信号值全是默认值,如果我们想改变报文里面信号的值,我们不妨这样做
on key 'a'
{
linFrame 0x9 tst_Frame;
//tst_Frame.RTR=1;
tst_Frame.RTR=0;
tst_Frame.byte(0) = 1;
tst_Frame.byte(1) = 2;
output(tst_Frame);
tst_Frame.RTR=1;
output(tst_Frame);
}
输出如下
如果我们也想改变message的长度
研究了函数linchagedlc()后发现
on key 'a'
{
linFrame 0x9 tst_Frame;
//tst_Frame.RTR=1;
tst_Frame.RTR=0;
tst_Frame.byte(0) = 1;
tst_Frame.byte(1) = 2;
linChangeDlc(tst_Frame.id,4);
output(tst_Frame);
tst_Frame.RTR=1;
output(tst_Frame);
}
输出如下
一、第二种情况:LDF文件未定义ID
直接上代码
variables
{
linFrame 0x20 tst_Frame;
}
on preStart
{
//tst_Frame.RTR=1;
tst_Frame.RTR=0;
tst_Frame.byte(0) = 1;
tst_Frame.byte(1) = 2;
linChangeDlc(tst_Frame.id,4);
output(tst_Frame);
tst_Frame.RTR=1;
}
on start
{
linStopScheduler();
}
on key 'a'
{
output(tst_Frame);
}
输出如下:
文章来源:https://blog.csdn.net/yuanyikangkang/article/details/135313866
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!