关于Kvaser DataBase editer的应用学习

这篇文章主要是记录学习过程中的一些收获。在CAN通信中,DBC文件是必不可少的,DBC文件是一个数据库属性的文件,通过加载DBC文件,可以对报文中的数据进行转化处理,得到相应的数字量。

在学习过程中,我使用的软件是Kvaser DataBase editer,是Kvaser公司出版的一款软件,在Kvaser官网就可以直接下载。功能还是比较全面的,操作使用也比较容易上手,个人觉得对于像我这样的小白比较友好。

1.操作界面

首先是界面。

 进入Kvaser DB editer可以直接看到这个界面,点击open可以打开并编辑以有的DBC文件。也可以直接在这个界面创建新的节点,信息,信号等等,然后在Save保存生成新的DBC文件。

在第一个界面Messages&Signal可以直接通过右上角的加号减号创建或删除信息与信号。

第二个界面ALL Signal可以直接显示每个信号与信息的管理,也可以看到各个属性值。

第三个界面Node List和第一个界面类似,也可以直接创建删除节点。

最后一个界面是Communication Matrix,将节点与信息关联,设置发出与接收。

2.属性

接下来是信号的属性,在添加新的信号之后,需要对信号的各个属性值进行设置。

 

以这个DBC文件为例子,选中一个信号,就可以查看这个信号的属性,比较重要的一些属性值是:Byteorder(字位顺序),Bitpos(起始位),Length(长度),Factor(影响因子),Offset(偏移量)。这些属性值是DBC文件最重要的一部分,DBC文件能够解读CAN总线的报文信息都与这些属性有关。

 

  1. Byteorder(字位顺序):有Int和Motolora两种模式,方便对应了小端序和大端序。
  2. Bitpos(起始位):代表了这个信号在数据报文中的起始位置,只有设置了就可以在右上角的图中可以看到。
  3. Length(长度):这个很好理解,就是信号的字节长度。
  4. Factor(影响因子):这个是信号读取到的对应报文位置转化后的数字,然后再与Factor相乘,得到一个结果。
  5. Offset(偏移量):这个是信号上面经过转化相乘得到的结果在与Offset相加得到的最终量。

3.信号与信息的关联

 

在这个界面点右上方的加号可以创建Message,选中Message之后再点击下面的加号就可以创建新的Signal,然后设置前面讲的那些参数。需要注意的是设置的信号所占据的报文字节位置,需要注意起始位与信号长度。设置的同时可以在右上角的图中看到占据的位置与长度。所有的信号的长度相加不能超过64,不然会超过定义范围,需要重新创建一个Message。一个Message可以添加很多个Signal。

 

在第二个界面可以看到所以信号显示,包括它们的属性,归属的Message等等。

其他的还有节点与Message的关联,但是目前我还没有应用到那一步,这里就不解释了。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Kvaser Database Library (KVL) 中调用 DBC 文件,需要进行以下步骤: 1. 安装 Kvaser Database Library (KVL) 并引入相关头文件。 2. 定义一个数据库对象并加载 DBC 文件: ```c++ #include "kvldb.h" // 定义一个数据库对象 kvldb_Database* db = nullptr; // 加载 DBC 文件 db = kvldb_OpenDatabase("filename.dbc", nullptr); ``` 3. 从数据库对象中获取消息和信号信息: ```c++ // 获取所有消息 kvldb_Message* messages = nullptr; int messageCount = kvldb_GetMessages(db, &messages); // 获取消息的名称和 ID for (int i = 0; i < messageCount; i++) { std::string name = messages[i].name; int id = messages[i].id; } // 获取所有信号 kvldb_Signal* signals = nullptr; int signalCount = kvldb_GetSignals(db, &signals); // 获取信号的名称、起始位、长度和因子等信息 for (int i = 0; i < signalCount; i++) { std::string name = signals[i].name; int startBit = signals[i].startBit; int bitLength = signals[i].bitLength; double factor = signals[i].factor; double offset = signals[i].offset; } ``` 4. 使用完数据库对象后,需要释放资源: ```c++ // 释放消息和信号的内存 kvldb_FreeMessages(messages, messageCount); kvldb_FreeSignals(signals, signalCount); // 关闭数据库 kvldb_CloseDatabase(db); ``` 这是一个简单的调用 DBC 文件的示例,您可以根据实际需求进行修改和扩展。需要注意的是,Kvaser Database Library (KVL) 还支持其他格式的 CAN 数据库文件,例如 CANdb、ARXML 等。如果需要处理这些格式的文件,可以参考 KVL 的文档和示例代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值