Canoe logging block

创建logging Block

  1. 点击工具栏的analyze -> Measurement Setup

图一

  1. 在任意block上点击右键,然后选择 insert logging block,创建logging block ,名字默认是:blogging

在这里插入图片描述
3.或者通过下图的方式创建logging block ,名字默认是logging2
在这里插入图片描述

在这里插入图片描述

配置 logging file

  1. logging file的名字可以编程定义,如下图可以是系统时间也可以是电脑名

在这里插入图片描述
2.文件的后缀可以是下图所示 常用后缀 .asc ;.blf
在这里插入图片描述

配置logging trigger model

  1. 在logging block上单击右键 ,然后点击configuration。

在这里插入图片描述

方式一:Entire measurement

  1. 这种触发方式,无差别的把trace全部录制下来,下面的图很形象的表示从start 一直录制到stop

  2. 还以选择手动操作,稀土的左边圆的图标是暂停,|| 是开始,当把工程run起来的时候,是可以通过鼠标点击的

  3. 下图二,最后红色圈起来的,表示可以通过按键触发,开始和暂停之间来回切换。
    在这里插入图片描述
    在这里插入图片描述

  4. 通过空格键active logging block ,然后 开始你的工程。

在这里插入图片描述

  1. 停止工程,将switch开关打到 offline
  2. 双击下图红色框内,调出logging文件选择对话框,选择刚才配置的路径下的logging文件

在这里插入图片描述

  1. 点击工具栏的Analysis ,选中Trace ,分析trace
  2. 刚才我在工程运行了10ms左右,按下了按键‘t’,20ms左右再次按下‘t’,这样10ms到20ms之间的数据我就没有录到,如下图所示
    在这里插入图片描述

方式二:user defined

用户自己定义,可以选择的方式有很多,通过信号,报文,变量都可以触发,下面我通过变量值得改变触发logging,当选择的系统变量等于5开始录制,等于6停止录制
在这里插入图片描述
创将一个simulation node .can文件,定义一个定时器,当工程开始5000ms之后设置变量为5,也就是开始录制,时间到后再设置变量为6,停止录制。

/*@!Encoding:1252*/
variables
{
	msTimer start_logging;
}
on start
{
  @sysvar::vin::EDR_type = 0;
  setTimer(start_logging, 5000);
}
on timer start_logging
{
  if(@sysvar::vin::EDR_type == 0)
  {
  // start trgier
    @sysvar::vin::EDR_type = 5;
    setTimer(start_logging, 5000);
  }
  else if(@sysvar::vin::EDR_type == 5)
  {    
       // stop trgier
        @sysvar::vin::EDR_type = 6;
  }  
}

下图 trace中 5s的时间点,开始录制
在这里插入图片描述
下图 trace中 10s的时间点,停止录制
在这里插入图片描述
4.8s开始录制,10.2s停止录制,是因为设置了下图的 Pre-triger time 和 Post-triger time 等于200ms,也就是前后多录制200ms时间的数据
在这里插入图片描述

方式三:CAPL

在CAPL脚本中通过API控制logging的开始与停止,下面是一些常用的API.

setLogFileName()

设置logging文件的存放路径,不设置,会默认存放在logging block 设置的路径.

在这里插入图片描述

startLogging()

开始录制trace,可以指定logging block 和 preTriggerTime 时间
在这里插入图片描述

stopLogging()

停止录制可以指定logging block 和 postTriggerTime 时间

在这里插入图片描述

logging block 中设置如下
在这里插入图片描述
定义一个定时器,工程开始5s后开始录制,10后停止录制

/*@!Encoding:1252*/
variables
{
    int i =0;
	msTimer start_logging;
}
on start
{  
//设置 logging文件的路径和文件名
  setLogFileName("logging", "C:\\Temp\\log1\\{UserName}_{LocalTime}.blf");
  setTimer(start_logging, 5000);
}
on timer start_logging
{
  if(i==0)
  {
      startLogging("logging", 1000);
      setTimer(start_logging, 5000);
  }
  else
  {
    stopLogging("logging", 1000);
  }
  i++;
}

解锁如下图所示,5s开始录制,10s结束录制
在这里插入图片描述在这里插入图片描述

triggerEx()

发送一个trigger信号到指定的logging block,第一次执行这个API是开始录制,第二次执行时暂停,第三次是录制是开始。。。
在这里插入图片描述

variables
{
    int i =0;
	msTimer start_logging;
}
on start
{ 
  setLogFileName("logging", "C:\\Temp\\log1\\{UserName}_{LocalTime}.blf");
  setTimer(start_logging, 5000);
}
on timer start_logging
{
  if(i==0)
  {
//      startLogging("logging", 1000);
      triggerEx("logging");
      setTimer(start_logging, 5000);
  }
  else
   {
      triggerEx("logging");
//    stopLogging("logging", 1000);
  }
  i++;
}

回放logging文件的结果和上面相同。

"Canoe replay block" 是指在区块链技术中进行的一种重放攻击防范措施。重放攻击是指攻击者通过重放过去的有效交易来欺骗网络,从而获得非法利益的行为。 Canoe 是一种区块链技术中的一种防止重放攻击的机制,它通过在交易中添加额外的验证参数来保证交易的一次性有效性。当一笔交易被广播到网络中时,每个节点都会检查区块链中是否已经存在相同的交易。如果存在,则该节点会阻止交易的重放,并将其标记为无效。 Canoe replay block 机制的实现涉及两个关键步骤:一是生成交易的唯一性标识,二是在新的区块链中验证该交易是否已经存在。 为了生成交易的唯一性标识,Canoe replay block 会将交易的详细信息进行哈希计算,得到一个唯一的标识码。这个标识码被添加到交易的额外参数中,作为交易的唯一标识。 而在新的区块链中验证交易是否已经存在时,Canoe replay block 会对交易进行解析,并提取其中的唯一标识码。然后,它会在区块链中搜索是否存在相同的标识码。如果存在,则说明该交易已经被处理过,将会被阻止重放,保证了交易的有效性。如果不存在,则说明该交易是新的,可以继续进行处理。 总结来说,Canoe replay block 是一种防范重放攻击的机制,通过生成交易的唯一标识码,并在新的区块链中验证交易的唯一性,有效地阻止了重放攻击的发生。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蚂蚁小兵

慢慢长夜磨一章好文章,费烟!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值