空燃比分析仪,horiba尾气分析仪,CAN总线分析仪,CAN数据记录仪

b体育(福州)有限公司官网

Guangzhou Triv Electronic Technologies Co.LTD

技术服务
SUPPORT

目前位置: 首页 > 技术服务 > 技术资讯

2017-07-11

设置CANlib:基础API调用

作者:admin    点击:2222

这是CANlib开发3篇系列文章的第二篇

1.   在Visual Studio中设置

2.   基础API调用

3.   事件驱动应用程序

简介

在上一个视频中,b体育(福州)有限公司官网建立了如何将CANlib SDK资源添加到您自己的Visual Studio项目中。在本视频中,b体育(福州)有限公司官网将介绍通过Kvaser设备从CAN总线配置和读取报文的最少的CANlib函数调用。b体育(福州)有限公司官网已经从上一个视频中向示例项目添加了必要的代码。此代码将配置设备或虚拟通道为250 kbps,然后循环,读取总线上的每个CAN帧,直到用户按下退出按钮。

示例

为了实现这一点,b体育(福州)有限公司官网在上一个视频中描述的第一步是使用“using”指令导入canlibCLSNET类型。

b体育(福州)有限公司官网的第一个CANlib函数调用必须是canInitalizeLibrary。调用此函数会将必要的DLL加载到内存中,并为所有连接的Kvaser硬件分配一个通道号。

b体育(福州)有限公司官网现在需要使用canOpenChannel函数来处理Kvaser CAN电路。返回的句柄对于对库的后续调用是必要的。第一个参数指定所需的CAN电路。 第二个参数允许附加限定标志。在这种情况下,b体育(福州)有限公司官网接受虚拟通道的句柄。

现在b体育(福州)有限公司官网有一个句柄,b体育(福州)有限公司官网可以为连接的CAN总线配置电路适当的比特率。canSetBusParams函数支持设置每个总线参数值或使用Kvaser的预定义比特率中的某一个。b体育(福州)有限公司官网使用的预定义比特率为250 kbps

一旦配置了比特率,就可以通过调用canBusOn使电路在CAN总线上激活。 一旦该功能执行,CAN电路正在积极地参与CAN流量。

您可能已经注意到,在每次调用CANlib函数后调用DisplayError。对于更简洁的代码,b体育(福州)有限公司官网在独立的函数中处理从CANlib返回的错误状态。如果存在错误条件,b体育(福州)有限公司官网使用canGetErrorText函数将错误代码转换为字符串描述。检查CANlib函数返回的状态对于确认发生问题的位置至关重要。

Main中,b体育(福州)有限公司官网已经完成了配置和激活电路,因此b体育(福州)有限公司官网可以从总线循环读取CAN帧。b体育(福州)有限公司官网将使用canReadWait来检索CAN帧。CAN帧由标识符(id),08个数据字节(数据),数据长度代码(dlc),消息属性(标志)和时间戳(时间)组成。如果接收缓冲区为空,canReadWait中的最终参数将指定CAN帧等待的以毫秒为单位的时间长度。所以,当canReadWait返回时,b体育(福州)有限公司官网需要检查一些事件,然后才假设b体育(福州)有限公司官网有一个报文。如果返回的状态值是canOK,b体育(福州)有限公司官网知道b体育(福州)有限公司官网有事件要处理。如果返回的状态是canERR_NOMSG,那么b体育(福州)有限公司官网只需要再次循环。 但是如果返回的状态是任何其他值,则电路的句柄不能再用于读取CAN数据。

再次,为了使代码更容易读取,b体育(福州)有限公司官网将数据处理代码放在一个单独的函数DisplayMessage中,当canReadWait返回canOK状态时执行该函数。DisplayMessage显示了可以从返回的CAN帧数据中提取的许多信息。但最重要的是,该函数检查第二个指示符是否接收到实际的CAN数据帧。这是通过检查flags参数中的canMSG_ERROR_FRAME位来完成的。如果该位被置位,您收到错误帧,并且不处理标识符、数据长度代码或数据参数。如果该位未被置位,您就已收到一个CAN数据帧,并应根据需要处理该帧。

一旦完成,您应该通过使用canBusOff函数使总线上的CAN电路无效,然后使用canClose函数释放句柄来正常关闭程序。

现在让b体育(福州)有限公司官网运行b体育(福州)有限公司官网新的控制台应用程序,并实时对其工作进行查看。如你所见,应用程序能够连接到设备,开始接收CAN帧,并处理它们,直到b体育(福州)有限公司官网按Escape退出。

返回列表