⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 controlcan.~pas

📁 can总线通信DELPHI源程序。用于编写can通信协议
💻 ~PAS
字号:
unit ControlCAN;

interface

uses
  WinTypes;

const
  DLL_NAME  = 'ControlCAN.dll';//动态库名称

type

//声明各个数据结构

//1.ZLGCAN系列接口卡信息的数据类型。
VCI_BOARD_INFO = Record
		hw_Version : WORD;
		fw_Version : WORD;
		dr_Version : WORD;
		in_Version : WORD;
		irq_Num : WORD;
		can_Num : BYTE;
		str_Serial_Num : array[0..19] of CHAR;
		str_hw_Type : array[0..39] of CHAR;
		Reserved : array[0..3] of WORD;
END;

PVCI_BOARD_INFO=^VCI_BOARD_INFO;

//2.定义CAN信息帧的数据类型。
VCI_CAN_OBJ = Record
	ID : UINT;
	TimeStamp : UINT;
	TimeFlag : BYTE;
	SendType : BYTE;
	RemoteFlag : BYTE;//是否是远程帧
	ExternFlag : BYTE;//是否是扩展帧
	DataLen : BYTE;
	Data : array[0..7] of BYTE;
	Reserved : array[0..2] of BYTE;
END;

PVCI_CAN_OBJ = ^VCI_CAN_OBJ;

//3.定义CAN控制器状态的数据类型。
VCI_CAN_STATUS = Record
	ErrInterrupt : UCHAR;
	regMode : UCHAR;
	regStatus : UCHAR;
	regALCapture : UCHAR;
	regECCapture : UCHAR;
	regEWLimit : UCHAR;
	regRECounter : UCHAR;
	regTECounter : UCHAR;
	Reserved : DWORD;
END;

PVCI_CAN_STATUS = ^VCI_CAN_STATUS;

//4.定义错误信息的数据类型。
VCI_ERR_INFO = Record
		ErrCode : UINT;
		Passive_ErrData : array[0..2] of BYTE;
		ArLost_ErrData : BYTE;
END;

PVCI_ERR_INFO = ^VCI_ERR_INFO;

//5.定义初始化CAN的数据类型
VCI_INIT_CONFIG = Record
	AccCode : DWORD;
	AccMask : DWORD;
	Reserved : DWORD;
	Filter : UCHAR;
	Timing0 : UCHAR;
	Timing1 : UCHAR;
	Mode : UCHAR;
END;

PVCI_INIT_CONFIG = ^VCI_INIT_CONFIG;
                    
//导入动态库函数

function VCI_OpenDevice ( DeviceType  : DWORD;
                          DeviceInd : DWORD;
                          Reserved : DWORD) : DWORD;
  stdcall;
  external DLL_NAME;

function VCI_CloseDevice ( DeviceType  : DWORD;
                           DeviceInd : DWORD) : DWORD;
  stdcall;
  external DLL_NAME;

function VCI_InitCAN ( DeviceType  : DWORD;
                       DeviceInd : DWORD;
                       CANInd : DWORD;
                       pInitConfig : PVCI_INIT_CONFIG) : DWORD;
  stdcall;
  external DLL_NAME;

function VCI_ReadBoardInfo ( DeviceType  : DWORD;
                             DeviceInd : DWORD;
                             pInfo : PVCI_BOARD_INFO) : DWORD;
  stdcall;
  external DLL_NAME;

function VCI_ReadErrInfo ( DeviceType  : DWORD;
                           DeviceInd : DWORD;
                           CANInd : DWORD;
                           pErrInfo : PVCI_ERR_INFO) : DWORD;
  stdcall;
  external DLL_NAME;

function VCI_ReadCANStatus ( DeviceType  : DWORD;
                             DeviceInd : DWORD;
                             CANInd : DWORD;
                             pCANStatus : PVCI_CAN_STATUS) : DWORD;
  stdcall;
  external DLL_NAME;

function VCI_GetReference ( DeviceType  : DWORD;
                            DeviceInd : DWORD;
                            CANInd : DWORD;
                            RefType : DWORD;
                            pData : Pointer) : DWORD;
  stdcall;
  external DLL_NAME;

function VCI_SetReference ( DeviceType  : DWORD;
                            DeviceInd : DWORD;
                            CANInd : DWORD;
                            RefType : DWORD;
                            pData : Pointer) : DWORD;
  stdcall;
  external DLL_NAME;

function VCI_GetReceiveNum ( DeviceType  : DWORD;
                             DeviceInd : DWORD;
                             CANInd : DWORD) : ULONG;
  stdcall;
  external DLL_NAME;

function VCI_ClearBuffer ( DeviceType  : DWORD;
                           DeviceInd : DWORD;
                           CANInd : DWORD) : DWORD;
  stdcall;
  external DLL_NAME;

function VCI_StartCAN ( DeviceType  : DWORD;
                        DeviceInd : DWORD;
                        CANInd : DWORD) : DWORD;
  stdcall;
  external DLL_NAME;

function VCI_ResetCAN ( DeviceType  : DWORD;
                        DeviceInd : DWORD;
                        CANInd : DWORD) : DWORD;
  stdcall;
  external DLL_NAME;

function VCI_Transmit ( DeviceType  : DWORD;
                        DeviceInd : DWORD;
                        CANInd : DWORD;
                        pSend : PVCI_CAN_OBJ;
                        Len : ULONG) : ULONG;
  stdcall;
  external DLL_NAME;

function VCI_Receive ( DeviceType  : DWORD;
                        DeviceInd : DWORD;
                        CANInd : DWORD;
                        pReceive : PVCI_CAN_OBJ;
                        Len : ULONG;
                        WaitTime : int) : ULONG;
  stdcall;
  external DLL_NAME;


implementation

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -