C#实现Kvaser LIN数据收发
前言
闭关几个月搞项目,终于又有时间出来水博客了,哈哈哈!
咳咳,进入正题,接着上一篇分享关于Python中使用Kvaser Lin进行数据收发的案例,本篇将对其在C#中如何进行报文收发进行分享。
(自己盗自己的图不过分吧)
引用Kvaser DLL
开发工具:Visual Studio 2022
1、在Visual Studio中使用Kvaser 的API需要先引用相关的DLL文件,如下图,在解决方案资源管理器中右键“依赖项”–>点击添加项目引用–>点击浏览–>找到kvaser canlib sdk包中dotnet的dll库–>在引用管理器中勾选并确认。
这里选择的是x64的Canlib和Linlib库。
2、当然引用工作到现在为止还没结束,如果现在使用Linlib.dll中相关函数会报以下错误,如果只使用Canlib就不会。
解决方法如下,右键项目–>点击添加现有项–>找到bin目录下Debug中的linlib.dll库(C DLL)–>添加或添加为链接
可以看到linlib.dll已被添加到当前项目下,再选择它,在属性中将复制到输出目录改为“始终复制”。
(好像将linlib.dll直接复制到这个解决方案的Debug文件夹下也可以…)
引用正式完成。
调用测试
通过busmaster工具作为slave端接收数据,C#作为master发送数据,效果如下,可以正常使用Linlib函数。
想看Linlib中有什么函数可以直接点击引用,然后在对象浏览器中查看。
完整收发案例
废话不多说,直接上源码。
using Kvaser.CanLib;
using Kvaser.LinLib;
namespace CanlibTutorial
{
class Program
{
// When called CheckForError will check for and print any error.
// Return true if an error has occured.
static public bool CheckForError(string cmd, Canlib.canStatus stat)
{
if (stat != Canlib.canStatus.canOK)
{
Canlib.canGetErrorText(stat