1 案例硬件介绍

Kvaser是瑞典的一家专门提供CAN和LIN总线分析仪及数据记录仪的公司,在CAN产品开发领域已经有近30年的经验,本案例选择的CAN通信硬件型号是Kvaser Leaf Light v2,产品如下图所示:

【公众号dotNet工控上位机:thinger_swj】

为了配套该产品,还准备了一个威柏电子(Westpac)提供的模拟控制器RL78 CAN ECU来进行功能测试,如下图所示,该模拟控制器可以通过上位机控制,实现速度调节及转向灯控制。

硬件准备就绪,这个接线也比较简单,由于是已经集成好的DB9插头,所以ECU与CAN卡之间直接公头和母头对接就可以了,CAN卡通过USB接入电脑,安装好驱动后,就可以通过电脑的设备管理器中看到CAN设备了,如下图所示:

2 案例开发准备

CAN通信开发需要调用厂家提供好的一些SDK或者Lib库,而且厂家一般都是提供一些Demo,Demo中包含多种不同的语言,我们找到dotnet或者C#或者cs的字眼,然后打开相关的案例进行研究。Kvaser并没有提供类似的Demo,只是提供了一个Kvaser CANLib SDK的软件,安装之后打开包含以下内容:

接着打开dotnet >> win32 >> fw40,找到下面这些dll,我们的开发主要就是基于这个文件夹里面的dll来实现的,dotnet下面有win32和x64两个文件夹,这里根据不同的项目平台版本,选择相应的dll。

Kvaser针对CANLib库的使用,提供了一个HTML帮助手册,如下图所示,如果对于某个函数或者参数不理解,可以通过这个帮助手册来查找:

虽然有了dll以及帮助手册,但是对于应该调用哪些方法,调用方法之间的顺序,很多时候我们仍然是一头雾水,下面的这个开发指南应该是雪中送炭。

3 案例程序开发

万事具备之后,这时候我们就可以进行程序开发了,先创建一个Windows窗体应用程序,项目名称为thinger.com.kvaserCANECU,界面初步设计如下图所示:

【公众号dotNet工控上位机:thinger_swj】

(1)UI界面设计完成后,首先将canlibCLSNET.dll复制到项目中并添加引用

(2)在窗体初始化中调用canInitializeLibrary初始化并初始化波特率

(3)刷新按钮事件下,获取所有能获取到的CAN通信信息

(4)打开按钮事件中,实现打开CAN卡及关闭CAN卡的功能

开启CAN通信学习(二)——基于Kvaser的CAN通信案例的更多相关文章

  1. 基于51单片机IIC通信的PCF8591学习笔记

    引言 PCF8591 是单电源,低功耗8 位CMOS 数据采集器件,具有4 个模拟输入.一个输出和一个串行I2C 总线接口.3 个地址引脚A0.A1 和A2 用于编程硬件地址,允许将最多8 个器件连接 ...

  2. 从0到1:开启CAN通信学习(一)

    1  初识CAN通信 说起CAN通信,可能很多人都比较陌生,但实际上我们却一直在和它打交道.随着家用汽车的普及,我们开车过程中的每次刹车.每次踩油门,甚至每次的开车门.开车窗,其实都是CAN通信的应用 ...

  3. QQ 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件

    QQ 编辑 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件.腾讯QQ支持在线聊天.视频通话.点对点断点续传文件.共享文件.网络硬盘.自定义面板.QQ邮箱等多种功 ...

  4. WCF学习笔记(基于REST规则方式)

    一.WCF的定义 WCF是.NET 3.0后开始引入的新技术,意为基于windows平台的通讯服务. 首先在学习WCF之前,我们也知道他其实是加强版的一个面向服务(SOA)的框架技术. 如果熟悉Web ...

  5. (转)MyBatis框架的学习(二)——MyBatis架构与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图: 下面作简要概述: S ...

  6. python中基于tcp协议的通信(数据传输)

    tcp协议:流式协议(以数据流的形式通信传输).安全协议(收发信息都需收到确认信息才能完成收发,是一种双向通道的通信) tcp协议在OSI七层协议中属于传输层,它上承用户层的数据收发,下启网络层.数据 ...

  7. Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401开发

    Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...

  8. Java开发学习(二十二)----Spring事务属性、事务传播行为

    一.事务配置 上面这些属性都可以在@Transactional注解的参数上进行设置. readOnly:true只读事务,false读写事务,增删改要设为false,查询设为true. timeout ...

  9. Java开发学习(二十七)----SpringMVC之Rest风格解析及快速开发

    一.REST简介 REST(Representational State Transfer),表现形式状态转换,它是一种软件架构风格 当我们想表示一个网络资源的时候,可以使用两种方式: 传统风格资源描 ...

随机推荐

  1. python中的常用数据类型

    python中的常用数据类型 以下是个人总结的python中常见的数据类型,话不多说,我们直接步入正题: 数字类型 整型类:int类可以表示任意大小的整数值,在python中没有像JAVA或者C那样的 ...

  2. 表格(table)数据导出成Excel

    使用xlxs-js库 function exportExcel () { var wb = XLSX.utils.table_to_book(document.querySelector('.my-e ...

  3. 数据可视化基础专题(八):Pandas基础(七) 数据清洗与预处理相关

    1.数据概览 第一步当然是把缺失的数据找出来, Pandas 找缺失数据可以使用 info() 这个方法(这里选用的数据源还是前面一篇文章所使用的 Excel ,小编这里简单的随机删除掉几个数据) i ...

  4. Django之 url组件

    本节内容 路由系统 models模型 admin views视图 template模板 路由系统 我们已知,用户从浏览器发出的请求会首先打到django url的路由分发系统这里,然后再到views视 ...

  5. wiremock技术入门

    mock用于制作测试桩,是非常好用的自动化测试mock工具  一.下载 进入官网的下载地址: http://wiremock.org/docs/running-standalone/

  6. C#-CLR note - 26线程

    开篇 async/wait的使用 static async Task Main(string[] args) { Console.WriteLine("start-- "); va ...

  7. 三、Python系列——Pandas数据库读取数据

    Pandas主要先读取表格类型的数据,然后进行分析. import pandas as pd# 由于是用pandas模块操作数据,因此不用在路径前加open,否则就是python直接打开文件,可能还会 ...

  8. Ethical Hacking - Web Penetration Testing(3)

    EXPLOITATION -File Upload VULNS Simple type of vulnerabilities. Allow users to upload executable fil ...

  9. Python Ethical Hacking - VULNERABILITY SCANNER(9)

    Automatically Discovering Vulnerabilities Using the Vulnerability Scanner 1. Modify the run_scanner ...

  10. P3913 车的攻击

    大致题意: 求出被车攻击到的格子 基本思路: 如果直接暴力出奇迹的话是存不下的, 所以就以另外的思路来想. 容斥原理! 我们可以先把那些在同一行或同一列的车去重,然后把去重后的行数列数记作cntx,c ...