虹科分享|CANEasy的开发-VBA篇

如果想要在CANEasy中实现自动化功能,那么最快的方式就是使用里面的VBA功能。

VBA最常见的是在excel和word中被用于开发的宏。在CANEasy中使用的方式和它们也差不多:我们需要在宏内,让变量匹配到软件中的对象,然后用代码去控制它们。

新建一个VBA宏的方式,只要选择VBA,然后右键菜单选择新建。这时候会弹出一个VB编译器的界面。

虹科分享|CANEasy的开发-VBA篇_第1张图片
今天我们会做一个简单的实现crc和counter功能的代码,为了方便,我们可以先和硬件建立连接,并新建一个想要实现该功能的报文。具体的步骤可以咨询虹科。

首先,我们在代码中新建ECU和CAN报文,然后把它们匹配到对应的Object。这里我们按照编号来选择第一个Channel和第一个Control unit,因为这里我建立的对象都只有一个,可以直接匹配到想要的内容。除了像这样匹配序号:
Set ecu = canbus.ControlUnits(1)
直接匹配名字也是没有问题的
Set ecu = canbus.ControlUnits(“ECU”)

虹科分享|CANEasy的开发-VBA篇_第2张图片
虹科分享|CANEasy的开发-VBA篇_第3张图片
在匹配CAN报文的时候,我选择利用for…each语句进行轮询,保证使用CAN ID为0x123,这样以后新建报文也不会打乱这个顺序了。如果没有对应CAN ID的报文,那么宏也无法执行成功。

关于调用的顺序和能够使用的属性和方法,可以在帮助文档中找到。目前帮助文档的版本有些旧,我们会在后续推出用Doxygen输出的帮助文档。

虹科分享|CANEasy的开发-VBA篇_第4张图片
接下来只要把crc的算法放到VBA的宏里即可。这里我选择调用message里的send方法,在宏里控制发送时间。

虹科分享|CANEasy的开发-VBA篇_第5张图片
结果如下图:虹科分享|CANEasy的开发-VBA篇_第6张图片
那么接下来讲一些常用的内容:
make report方法可以把内容输出到CANEasy的状态栏,比较常用
例如:MakeReport "Connected to bus: " + canbus.Name, ReportTypeInformation

虹科分享|CANEasy的开发-VBA篇_第7张图片
CanEasyApplication.Sleep 10,它的含义是让程序等待10ms,这里我选择用它来控制报文循环发送的时间。当然,更合适的方式是用event功能,可以在每次报文发送前修改其中的内容。这部分可以参考帮助文档,这里就不做赘述了。

不过需要注意的是,这时候需要在主页面提前设置好报文发送的循环时间。

虹科分享|CANEasy的开发-VBA篇_第8张图片
另外,关于设置crc,我们也可以利用CANEasy提供的插件,不过这个的详细使用方法就留到下期再说吧。

虹科分享|CANEasy的开发-VBA篇_第9张图片

你可能感兴趣的:(软件,汽车)