常见应用需求:按接收到10 帧后提取一次信号值或按1秒提取一次信号值,从而达到采样的效果。将记录文件轻量化,选择性地将数据图表化。在原生软件中当前并未有此功能,所以使用脚本实现该功能。可以使用在线回放对已经记录的报文再筛选。
脚本可扩展功能:1.可以按照报文时间戳范围进行提取信号。
2.可以与panel面板结合,实现按钮选择信号及信号筛选的模式。
demo效果:
对CSV数据在Excel中处理后的效果:
主代码:
void on_can_rx_NewOn_CAN_Rx1(const TCAN* ACAN) { try { // 针对标识符 = 任意
// if (ACAN->FIdxChn != CH1) return; // if you want to filter channel
EngineData_1.FCAN = *ACAN; // 若是在回调函数中,请用ACAN数据赋值FCAN
count+=1;
//间隔1000ms 记录EngSpeed 信号值
if (Flag==true)
{
double speed=0;
speed=EngineData_1.EngSpeed;
Flag=false;
fprintf(file,"%lf, %d,%x, %f\n",ACAN->FTimeUs/1000000.0,ACAN->FIdxChn , ACAN-> FIdentifier, speed);
printf("%lf, %d, 0x%x,%f\n",ACAN->FTimeUs/1000000.0,ACAN->FIdxChn , ACAN-> FIdentifier, speed);
}
//间隔10帧记录EngTemp 信号值
if(ACAN-> FIdentifier==0x64)
{
if (!(count%10))
{
double temp=0;
temp=EngineData_1.EngTemp;
count=0;
fprintf(file,"%lf, %d,%x,"",%f\n",ACAN->FTimeUs/1000000.0,ACAN->FIdxChn , ACAN-> FIdentifier, temp);
printf("%lf, %d, 0x%x,%f\n",ACAN->FTimeUs/1000000.0,ACAN->FIdxChn , ACAN-> FIdentifier, temp);
}
}