广成科技 USB CAN 【二次开发】

1数据类型:

1 BOARD_INFO   设备信息

2 CAN_OBJ          数据帧对象

3 CAN_STATUS   CAN通道状态

4 ERR_INFO        错误信息

5 INIT_CONFIG   设备配置参数

6 FILTER_RECORD  过滤帧配置参数

1 设备信息public  struct  BOARD_INFO
{public ushort	hw_Version;public ushort fw_Version;public ushort dr_Version;public ushort in_Version;public ushort irq_Num;public byte	can_Num;[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]public byte[] str_Serial_Num;[MarshalAs(UnmanagedType.ByValArray, SizeConst =40)]public byte[]	str_hw_Type;[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]public ushort[] Reserved;
}2 数据帧对象public struct CAN_OBJ{public uint ID;public uint TimeStamp;public byte TimeFlag;public byte SendType;public byte RemoteFlag;public byte ExternFlag;public byte DataLen;[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]public byte[] data;[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]public byte[] Reserved;
}3 CAN通道状态
public struct CAN_STATUS
{ public uchar ErrInterrupt; //中断记录,读操作会清除。public uchar regMode;      //CAN控制器模式寄存器。public uchar regStatus;    //CAN控制器状态寄存器。public uchar regALCapture; //CAN控制器仲裁丢失寄存器。public uchar regECCapture; //CAN控制器错误寄存器。public uchar regEWLimit;   //CAN控制器错误警告限制寄存器。public uchar regRECounter; //CAN控制器接收错误寄存器。public uchar regTECounter; //CAN控制器发送错误寄存器。public int   Reserved; 
}4 错误信息
public struct ERR_INFO
{ public UINT32 ErrCode;         //错误码。public byte Passive_ErrData[3];//消极错误public byte ArLost_ErrData;    //仲裁丢失错误
}5 设备配置参数
public struct INIT_CONFIG
{public uint AccCode;    //【左对齐】帧id的bit完全匹配才接收public uint AccMask;    //【左对齐】帧id的bit【1】为失效AccCodepublic uint Reserved;   //保留public byte Filter;     //滤帧使能。【0】不使能,【1】使能。public byte Timing0;    //波特率 1MHz【t0=0x00,t1=0x14】public byte Timing1;    //波特率public byte Mode;       //模式。【0】正常收发【1】只收【2】环回
}6 FILTER_RECORD
public struct FILTER_RECORD
{ public UInt32 ExtFrame; //过滤的帧类型【0】只收标准帧【1】只收扩展帧public UInt32 Start;    //帧起始idpublic UInt32 End;      //帧结束id
}

2接口函数:

1 OpenDevice ......................................打开设备

1.5.2 CloseDevice ................................关闭设备

1.5.3 InitCan .........................................初始化CAN通道

1.5.4 ReadBoardInfo ............................读设备信息

1.5.5 ReadErrInfo .................................读错误信息

1.5.6 ReadCanStatus ...........................读设备状态

1.5.7 GetReference ..............................获取过滤帧配置参数。【PVOID *pData】

1.5.8 SetReference ..............................设置过滤帧配置参数。【VCI_FILTER_RECORD】

1.5.9 GetReceiveNum ..........................读接收缓冲区中帧数。

1.5.10 ClearBuffer ................................清空CAN通道的缓冲区。

1.5.11 StartCAN ...................................启动某一个CAN通道。

1.5.12 Transmit ....................................返回实际发送成功的帧数。

1.5.13 Receive .....................................读CAN通道的缓冲区里帧数据。

1.5.14 ResetCAN .................................复位CAN通道。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/151040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vs2017 编译Qt 5.11.2 源码

SDK 10.0.22000.194 有 2种编译方式 ,第二种 看下面 方式一: 1、问题描述: 使用VS编译程序时,运行库选择多线程(/MT),表示采用多线程静态release的方式进行编译。 但是,发现编译是不能通过的…

【C++】多态的使用详解

本篇要分享的内容是多态,以下为本篇目录。 目录 1.多态的概念 2. 多态的定义及实现 3.虚函数 4.C11 override和final 4.1final关键字 4.2override关键字 5.抽象类 5.1抽象类的概念 5.2接口继承和实现继承 1.多态的概念 通俗来说,就是多种形态…

RedisInsight——redis的桌面UI工具使用实践

下载 官网下载安装。下载地址在这里 填个邮箱地址就可以下载了。 安装使用。 安装成功后开始使用。 1. 你可以add一个地址。或者登录redis cloud 去auto-discover 2 . 新增你的redis库地址。注意index的取值 3。现在可以登录到redis了。看看结果 这是现在 在服务器上执行…

AC修炼计划(AtCoder Beginner Contest 328)

传送门: Toyota Programming Contest 2023#7(AtCoder Beginner Contest 328) - AtCoder 本章对于自己的提升:dfs的运用,带权并查集,以及状压dp。 A,B,C题比较简单,直接…

虚拟机配置完NAT模式之后可以和主机ping通但是ping 百度显示:网络不可达

具体linux网络配置看这:http://t.csdnimg.cn/KRami 解决方案如下: 如果这里网关为空,那么和我遇到的问题一样网关没有设置上,在这直接配置网关之后重启即可

【Spring Boot】如何自定义序列化以及反序列器

在我们使用默认的消息转换器,将java的Long类型通过json数据传输到前端JS时,会导致Long类型的精度丢失,这是因为JS处理Long类型数字只能精确到前16位,所以我们可以采用自定义序列化方式将Long类型数据统一转为String字符串&#xf…

windows10关闭自动更新

windows10关闭自动更新 下载策略组改配置组配置 下载策略组 我自己的电脑里没有这个文件gpedit.msc所以要下载 pushd "%~dp0"dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txtdir /b C:\Windows…

【算法基础】高精度运算

文章目录 高精度加法高精度减法高精度乘法高精度除法 高精度加法 主要思路就是利用编程模拟人工的加法 方便操作使用vector来存储这些数 为了方便进位,需要将原数字倒过来存储到vector中 加完所有位之后别忘了判断最后一位的进位 最后需要将vector中的数倒着输出 …

机器学习算法项目开发流程

机器学习算法是当今人工智能领域最重要的技术之一,它可以让计算机通过学习数据中的模式和规律来实现预测和决策。在实际应用中,开发一个成功的机器学习算法项目需要遵循一定的开发流程。本文将介绍一个常见的机器学习算法项目开发流程,帮助读…

odoo16前端框架源码阅读——env.js

env.js(env的初始化以及服务的加载) 路径:addons\web\static\src\env.js 这个文件的作用就是初始化env,主要是加载所有的服务。如orm, title, dialog等。 1、env.js 的加载时机 前文我们讲过前端的启动函数,start.…

系统安全测试详解

一、前言 我刚开始接触安全测试的时候,想的最多就说那种在昏暗的灯光下,带着神秘面具的黑客,对着键盘噼里啪啦一顿猛如虎的操作,然后长舒一口气,最后来了句yes,完美收工! 随后的职业生涯中&am…

LaTex 空行

在LaTeX中,可以通过命令\vspace{\baselineskip}或者使用\bigskip来插入一个空行。 以下是示例代码: 这是一段文字。\vspace{\baselineskip}这是下一段文字。或者: 这是一段文字。\bigskip这是下一段文字。

你是否了解Spring @EventListener注解?

当创建一个大型的应用程序时,我们经常需要处理各种事件。Spring框架提供了一个强大的事件处理机制,允许我们在应用程序中定义和监听事件。其中,EventListener注解是Spring框架中用于监听事件的主要注解之一。在本篇博客中,我们将深…

Django学习日志08

如何开启事务 事务的目的:为了保证多个SQL语句执行成功,执行失败,前后保持一致,保证数据安全 ACID属性: A:原子性(Atomicity):指事务是原子的,对事务中的操…

Mysql 索引与事务

1. 索引 1.1 什么是索引 当我们看一本书时可以通过目录快速的定位到我们想要的章节 ,在数据库中查询数据也需要遍历表,而且数据库是把数据存储在硬盘上的,所以读取数据十分的慢,因此就可以给数据库引入索引,提高查询…

python数据可视化之matplotlib.pyplot

文章目录 模块引用折线条图实际应用案例关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 不论是数据挖掘还是数据…

Hadoop-- hdfs

1、HDFS中的三个进程:NameNode(NN)、DataNode(DN)、SecondNameNode(SNN) 2、NameNode(NN) 1、作用: 1、接收客户端的一个读、写的服务,在namenode上存储了数据文件和datanode的映射的关系。 …

移动云电脑:摆脱传统桎梏,助推企业数字化转型

如今,随着“云”在企业数字化转型战略中的作用日益凸显,上云是企业数字化转型第一步,已成为业界共识。尤其对于中小企业而言,数字化转型更是一种生存之道。 实际上,企业数字化转型面临很多传统桎梏。例如,数…

企业数字化转型的好处?_光点科技

企业数字化转型是当今商业世界中一个至关重要的议题。数字化转型不仅仅意味着采用新技术,而是涉及到企业在文化、运营和客户体验方面的根本变革。那么,企业数字化转型的好处是什么呢? 1.数字化转型可以显著提高企业的运营效率。 通过自动化流…