因为工作需要,需要做一些硬件不是CANoe的上位机(比如说周立功CAN,NI-CAN),上位机需要有记录数据的功能,所以用Qt制作了一个记录数据的dll,方便重复使用(因为有的客户指定了编程软件,所以我也没办法呀,没办法编一次就好)。
进入正题,本次以labview调用dll写入ASC文件为例。
下面先介绍一下文件
dll文件包含义
相关数据下载见文章尾部链接
如下图,红框里的是dll文件和.h文件,其他的都是Qt的一些库函数,因为自己懒,用Qt比较好diy。调用的时候需要把红框里的文件加载上,具体流程百度调用dll。这个dll不能换位置,只能把dll这个文件夹全部带过去才能用,如果是Qt调用,当我没说
labview调用示例
相关数据下载见文章尾部链接
如下图,这是一个调用示例
函数接口介绍
cpp
//Timestamp:时间戳
//Channel:通道
//Dir :发送接收(0:Rx,1:Tx)
//ID:报文ID
//DLC:报文dlc长度(0-15那个)
//DataLength:报文数据长度(0-64那个)
//data:报文数据
//type:报文类型(0:can ,1:canfd)
//此函数是将报文数据储存到文件里面
extern "C" ASCTEST_EXPORT uint8_t ASCsaveMsg(uint64_t Timestamp,uint8_t Channel,uint8_t Dir,uint32_t ID,uint8_t DLC,uint8_t DataLength,uint8_t *data,uint8_t type);
//file:保存文件路径
//此函数是打开文件句柄
extern "C" ASCTEST_EXPORT uint8_t ASCopenFile(char file[]);
//此函数是关闭文件句柄,用于保存,不调用会保存失败
extern "C" ASCTEST_EXPORT uint8_t ASCcloseFile();
上面说的够明显了吧,调用顺序ASCopenFile->ASCsaveMsg->ASCcloseFile;
视频展示
将CAN和CANFD数据保存为ASC的dll文件展示
缺陷
暂时只支持CAN和CANFD的标准帧报文保存,和CANoe保存的数据有略微差异,仅用于测试分析。如果有人需要
1:labview我可以将此工程制作为一个VI函数
2:有需要的可以留言,之后可能会加功能,比如说扩展帧
3:can通道记得从1开始
4:记录数据一开始的时间点是以ASCopenFile的时间点,如果需要准确的请获取到第一帧报文,去打开文件句柄,以后传输的时间戳减去第一帧的时间戳
下载链接
dll压缩包只包含dll相关数据,labview写入ASC压缩包包含dll和vi,不需要重复下载
下载链接
链接:https://pan.baidu.com/s/1CEWeVCrllF07geo9cSVAIw?pwd=hzr9
提取码:hzr9
--来自百度网盘超级会员V7的分享
需要定制化开发可以联系我,有问题也可以联系我。邮箱:liu_xiaoshuai@foxmail.com