first commit

This commit is contained in:
liyp
2025-12-24 17:18:34 +08:00
parent a7eb3fb3d9
commit 0f8ea19850
61 changed files with 765 additions and 156 deletions

BIN
Device/ScHHS/HCanbus.dll Normal file

Binary file not shown.

119
Device/ScHHS/HCanbus.h Normal file
View File

@@ -0,0 +1,119 @@
#ifndef HCANBUS_H
#define HCANBUS_H
#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
#define LIBUSB_CALL WINAPI
#else
#define LIBUSB_CALL
#endif
typedef struct _Dev_Info {
char HW_Type[32]; //设备型号 字符串
char HW_Ser[32]; //设备序列号 字符串
char HW_Ver[32]; //硬件版本 字符串
char FW_Ver[32]; //软件版本 字符串
char MF_Date[32]; //生产日期 字符串
} Dev_Info, *PDev_Info;
typedef struct _Can_Config {
unsigned int Baudrate;
unsigned char Config; //配置信息0x01接通内部电阻 0x02离线唤醒 0x04自动重传
unsigned char Pres; // Pres,Tseg1,Tseg2如果与Baudrate不匹配动态库会自动按
unsigned char Tseg1; // Baudrate重新计算Pres,Tseg1,Tseg2,SJW并且采样点设置为
unsigned char Tseg2; // 75%左右。一般情况可以只设置波特率Pres,Tseg1,Tseg2填0
unsigned char Model; //工作模式0 正常模式,1 环回模式,2 静默模式,3 静默环回模式
unsigned char SJW;
unsigned char Reserved1; //保留
unsigned char Reserved2;
}Can_Config, *P_Can_Config;
typedef struct _CanFD_Config {
unsigned int NomBaud; //常规波特率
unsigned int DatBaud; //数据波特率
unsigned char NomPre; // NomPre,NomTseg1,NomTseg2如果与NomBaud不匹配动态库会自动按
unsigned char NomTseg1; // NomBaud重新计算NomPre,NomTseg1,NomTseg2,NomSJW并且采样点设置为
unsigned char NomTseg2; // 75%左右。这些值可借助波特率计算器计算后设置
unsigned char NomSJW;
unsigned char DatPre; // DatPre,DatTseg1,DatTseg2如果与DatBaud不匹配动态库会自动按
unsigned char DatTseg1; // DatBaud重新计算DatPre,DatTseg1,DatTseg2,DatSJW并且采样点设置为
unsigned char DatTseg2; // 75%左右。这些值可借助波特率计算器计算后设置
unsigned char DatSJW;
unsigned char Config; //配置信息0x01接通内部电阻 0x02离线唤醒 0x04自动重传
unsigned char Model; //工作模式0 正常模式,1 环回模式,2 静默模式,3 静默环回模式
unsigned char Cantype; //CAN模式0 CAN,1 IOS CANFD,2 Non-ISO CANFD
unsigned char Reserved; //保留
}CanFD_Config, *P_CanFD_Config;
typedef struct _Can_Msg {
unsigned int ID; //报文ID
unsigned int TimeStamp; //微秒级时间戳
unsigned char FrameType; //帧类型
unsigned char DataLen; //有效字节数
unsigned char Data[8]; //报文数据
unsigned char ExternFlag; //扩展帧标识0标准帧,1扩展帧
unsigned char RemoteFlag; //远程帧标识0数据帧,1远程帧
unsigned char BusSatus; //总线状态
unsigned char ErrSatus; //错误状态
unsigned char TECounter; //发送错误计数
unsigned char RECounter; //接收错误计数
}Can_Msg, *P_Can_Msg;
typedef struct _CanFD_Msg {
unsigned int ID; //报文ID
unsigned int TimeStamp; //微秒级时间戳
unsigned char FrameType; //帧类型
unsigned char DLC; //DLC不等于数据长度。最大值15对于数据长度64
unsigned char ExternFlag; //扩展帧标识0标准帧,1扩展帧
unsigned char RemoteFlag; //远程帧标识0数据帧,1远程帧
unsigned char BusSatus; //总线状态
unsigned char ErrSatus; //错误状态
unsigned char TECounter; //发送错误计数
unsigned char RECounter; //接收错误计数
unsigned char Data[64]; //报文数据
}CanFD_Msg, *P_CanFD_Msg;
typedef struct _Can_Status {
unsigned char BusSatus; //总线状态
unsigned char ErrSatus; //错误状态
unsigned char TECounter; //发送错误计数
unsigned char RECounter; //接收错误计数
unsigned int TimeStamp; //产生状态时的时间戳
}Can_Status, *P_Can_Status;
#ifdef __cplusplus
extern "C" {
#endif
int __stdcall Reg_HotPlug_Func(void(*pfunc)(void)); //热拔插函数
int __stdcall CAN_ScanDevice(void); //扫描CAN,CANFD设备
int __stdcall CAN_GeDevType(unsigned int devNum); //获取CAN,CANFD类型 0常规CAN1CANFD
int __stdcall CAN_GeDevPlck(unsigned int devNum); //获取CAN,CANFD主频
int __stdcall CAN_OpenDevice(unsigned int devNum); //打开CAN,CANFD设备
int __stdcall CAN_CloseDevice(unsigned int devNum); //关闭CAN,CANFD设备
int __stdcall CAN_ReadDevInfo(unsigned int devNum, PDev_Info devinfo); //读取CAN,CANFD设备信息
int __stdcall CAN_SetFilter(unsigned int devNum,char namber, char type, unsigned int ftID, unsigned int ftMask, char enable); //设置CAN,CANFD硬件屏蔽
int __stdcall CAN_Reset(unsigned int devNum); //复位CAN,CANFD设备
int __stdcall CAN_GetStatus(unsigned int devNum,P_Can_Status status); //获取CAN,CANFD设备状态
int __stdcall CAN_Init(unsigned int devNum,P_Can_Config pInitConfig); //初始化CAN设备
int __stdcall CAN_Transmit(unsigned int devNum, P_Can_Msg canmsg, unsigned int items, int timeou); //发送CAN报文
int __stdcall CAN_TransmitRt(unsigned int devNum, P_Can_Msg canmsg, unsigned int items, unsigned int *txitems, int timeou); //定时发送CAN报文
int __stdcall CAN_GetReceiveNum(unsigned int devNum); //获取接收缓冲区中接收到但尚未被读取的帧数量
int __stdcall CAN_Receive(unsigned int devNum,P_Can_Msg canmsg, int Len, int timeou); //接收CAN报文
int __stdcall CANFD_Init(unsigned int devNum, P_CanFD_Config pInitConfig);
int __stdcall CANFD_Transmit(unsigned int devNum, P_CanFD_Msg canmsg, unsigned int items, int timeout);
int __stdcall CANFD_TransmitRt(unsigned int devNum, P_CanFD_Msg canmsg, unsigned int items, unsigned int *txitems, int timeou); //定时发送CAN报文
int __stdcall CANFD_GetReceiveNum(unsigned int devNum);//获取接收缓冲区中接收到但尚未被读取的帧数量
int __stdcall CANFD_Receive(unsigned int devNum, P_CanFD_Msg canmsg, unsigned int Len, int timeout); //接收CANFD报文
#ifdef __cplusplus
}
#endif
#endif

BIN
Device/ScHHS/HCanbus.lib Normal file

Binary file not shown.

View File

@@ -0,0 +1,3 @@
#include "ScHHS.h"

View File

@@ -0,0 +1,8 @@
#ifndef __SCHHS_H__
#define __SCHHS_H__
#include "HCanbus.h"
#endif