CAPL语言获取Message时间数据场等保存为文本

目标:

使用CAPL语言编写脚本,利用CANoe进行仿真,将回放报文(asc\blf等文件)的时间、ID、数据场内容等信息打印到txt文档中。
;

时间获取错误

参考VECTOR官方网页说明,Time_ns用于获取报文的时间戳(ns,data type:int64)。此处获取的ns时间为64位整型,转换位16进制,需要使用%llx格式。(注:使用%x或%lx,将导致只能产生8个字符的有效显示,时间丢失。)
对应语句:
snprintf(msgdata,1000,“%08X%16llX%02X”,this.id,this.time_ns,this.DataLength);
将ns时间转换为float类型的s(秒)进行显示,除数使用小数点表示,如官方所示函数:
float getTime (float time)
{
// convert NS to SEC:
return time / 1000000000.0;
}


---

# 获取报文的相关语句:
> 示例代码:
on message CAN1.*
{
  for(j=0;j<9;j++)
  {
    if(this.id==DIDarray[j])
    {
       ClearCharArray(msgdata);
       snprintf(msgdata,1000,"%08X%16llX%02X",this.id,this.time_ns,this.DataLength); 
        for( i = 0; i < this.DataLength; i++)
        {
          ClearCharArray(ch_byte);
          snprintf(ch_byte,8,"%02X",this.byte(i));
          strncat(msgdata,ch_byte,1000);             
        }       
        strncat(msgdata,"\n",1000);
        //write("time_ns: %f",(this.time_ns)/1000000000.0);
        WriteFile(msgdata);
    
    }
   
  }
  
}
其中,   ClearCharArray()用于清空结构体, WriteFile()函数将数据msgdata写入文本。

---
以上,作为简单参考,希望对阅读本文的读者有所帮助。



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值