You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
6.4 KiB
145 lines
6.4 KiB
Attribute VB_Name = "ControlCAN"
|
|
'设备类型说明:
|
|
'USB_CAN:3 ---- 单通道USB-CAN适配器
|
|
'USB_CAN2:4 ---- 双通道USB-CAN适配器
|
|
|
|
'------------------兼容ZLG的函数及数据类型-----------------------
|
|
'定义需要用到的数据结构
|
|
'USB-CAN总线适配器板卡信息的数据类型。
|
|
Public Type VCI_BOARD_INFO
|
|
hw_Version As Integer
|
|
fw_Version As Integer
|
|
dr_Version As Integer
|
|
in_Version As Integer
|
|
irq_num As Integer
|
|
can_num As Byte
|
|
str_Serial_Num(19) As Byte
|
|
str_hw_Type(39) As Byte
|
|
str_Usb_Serial(3) As Byte
|
|
End Type
|
|
|
|
'定义CAN信息帧的数据类型。
|
|
Public Type VCI_CAN_OBJ
|
|
ID As Long
|
|
TimeStamp As Long '时间标识
|
|
TimeFlag As Byte '是否使用时间标识
|
|
SendType As Byte '发送标志。保留,未用
|
|
RemoteFlag As Byte '是否是远程帧
|
|
ExternFlag As Byte '是否是扩展帧
|
|
DataLen As Byte
|
|
data(7) As Byte
|
|
reserved(2) As Byte
|
|
End Type
|
|
|
|
'定义CAN控制器状态的数据类型。
|
|
Public Type VCI_CAN_STATUS
|
|
ErrInterrupt As Byte
|
|
regMode As Byte
|
|
regStatus As Byte
|
|
regALCapture As Byte
|
|
regECCapture As Byte
|
|
regEWLimit As Byte
|
|
regRECounter As Byte
|
|
regTECounter As Byte
|
|
reserved As Long
|
|
End Type
|
|
|
|
'定义错误信息的数据类型。
|
|
Public Type VCI_ERR_INFO
|
|
ErrCode As Long
|
|
Passive_ErrData(2) As Byte
|
|
ArLost_ErrData As Byte
|
|
End Type
|
|
|
|
'定义初始化CAN的数据类型
|
|
Public Type VCI_INIT_CONFIG
|
|
AccCode As Long
|
|
AccMask As Long
|
|
InitFlag As Long
|
|
Filter As Byte '0,1接收所有帧。2标准帧滤波,3是扩展帧滤波。
|
|
Timing0 As Byte
|
|
Timing1 As Byte
|
|
Mode As Byte '模式,0表示正常模式,1表示只听模式,2自测模式
|
|
End Type
|
|
|
|
|
|
'函数声明
|
|
'-----------------------------兼容ZLG的函数---------------------------------
|
|
'返回值说明:=1操作成功,=0操作失败,=-1硬件错误(如设备未打开)
|
|
Declare Function VCI_OpenDevice Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long, ByVal reserved As Long) As Long
|
|
Declare Function VCI_CloseDevice Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long) As Long
|
|
Declare Function VCI_InitCAN Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long, ByVal CANIndex As Long, ByRef pInitConfig As VCI_INIT_CONFIG) As Long
|
|
|
|
Declare Function VCI_ReadBoardInfo Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long, ByRef pInfo As VCI_BOARD_INFO) As Long
|
|
Declare Function VCI_ReadErrInfo Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long, ByVal CANIndex As Long, ByRef pErrInfo As VCI_ERR_INFO) As Long
|
|
Declare Function VCI_ReadCANStatus Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long, ByVal CANIndex As Long, ByRef pCANStatus As VCI_CAN_STATUS) As Long
|
|
|
|
Declare Function VCI_GetReference Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long, ByVal CANIndex As Long, ByVal reserved As Long, ByRef data As Byte) As Long
|
|
Declare Function VCI_SetReference Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long, ByVal CANIndex As Long, ByVal RefType As Long, ByRef data As Byte) As Long
|
|
|
|
Declare Function VCI_GetReceiveNum Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long, ByVal CANIndex As Long) As Long
|
|
Declare Function VCI_ClearBuffer Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long, ByVal CANIndex As Long) As Long
|
|
|
|
Declare Function VCI_StartCAN Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long, ByVal CANIndex As Long) As Long
|
|
Declare Function VCI_ResetCAN Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long, ByVal CANIndex As Long) As Long
|
|
|
|
Declare Function VCI_Receive Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long, ByVal CANIndex As Long, ByRef pReceive As VCI_CAN_OBJ, ByVal Length As Long, ByVal WaitTime As Integer) As Long
|
|
'返回值为实际发送帧数,若返回-1,表示设备错误
|
|
Declare Function VCI_Transmit Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long, ByVal CANIndex As Long, ByRef pSend As VCI_CAN_OBJ, ByVal Length As Long) As Long
|
|
|
|
'-------------------------------其他函数及数据结构描述---------------------------------
|
|
'USB-CAN总线适配器板卡信息的数据类型1,该数据结构在VCI_FindUsbDevice中引用
|
|
Public Type VCI_BOARD_INFO1
|
|
hw_Version As Integer
|
|
fw_Version As Integer
|
|
dr_Version As Integer
|
|
in_Version As Integer
|
|
irq_num As Integer
|
|
can_num As Byte
|
|
reserved As Byte
|
|
str_Serial_Num(7) As Byte
|
|
str_hw_Type(15) As Byte
|
|
str_Usb_Serial(3, 3) As Byte
|
|
End Type
|
|
|
|
'定义常规参数类型
|
|
Public Type VCI_REF_NORMAL
|
|
Mode As Byte '工作模式
|
|
Filter As Byte '滤波方式
|
|
AccCode As Long '接收滤波验收码
|
|
AccMask As Long '接收滤波屏蔽码
|
|
kBaudRate As Byte '波特率索引号,0-SelfDefine,1-5Kbps(未用),2-18依次为:10kbps,20kbps,40kbps,50kbps,80kbps,100kbps,125kbps,200kbps,250kbps,400kbps,500kbps,666kbps,800kbps,1000kbps,33.33kbps,66.66kbps,83.33kbps
|
|
Timing0 As Byte
|
|
Timing1 As Byte
|
|
CANRX_EN As Byte '保留,未用
|
|
UARTBAUD As Byte '保留,未用
|
|
End Type
|
|
|
|
'定义波特率设置参数类型
|
|
Public Type VCI_BAUD_TYPE
|
|
Baud As Long '存储波特率实际值
|
|
SJW As Byte '同步跳转宽度,取值1-4
|
|
BRP As Byte '预分频值,取值1-64
|
|
SAM As Byte '采样点,取值0=采样一次,1=采样三次
|
|
PHSEG2_SEL As Byte '相位缓冲段2选择位,取值0=由相位缓冲段1时间决定,1=可编程
|
|
PRSEG As Byte '传播时间段,取值1-8
|
|
PHSEG1 As Byte '相位缓冲段1,取值1-8
|
|
PHSEG2 As Byte '相位缓冲段2,取值1-8
|
|
End Type
|
|
|
|
'定义Reference参数类型
|
|
Public Type VCI_REF_STRUCT
|
|
RefNormal As VCI_REF_NORMAL
|
|
reserved As Byte
|
|
BaudType As VCI_BAUD_TYPE
|
|
End Type
|
|
|
|
Declare Function VCI_GetReference2 Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long, ByVal CANIndex As Long, ByVal reserved As Long, ByRef pRefStruct As VCI_REF_STRUCT) As Long
|
|
Declare Function VCI_SetReference2 Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long, ByVal CANIndex As Long, ByVal RefType As Long, ByRef data As Byte) As Long
|
|
Declare Function VCI_ResumeConfig Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long) As Long
|
|
|
|
Declare Function VCI_ConnectDevice Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long) As Long
|
|
Declare Function VCI_UsbDeviceReset Lib "ControlCAN.dll" (ByVal DevType As Long, ByVal DevIndex As Long, ByVal reserved As Long) As Long
|
|
Declare Function VCI_FindUsbDevice Lib "ControlCAN.dll" (ByRef pInfo As VCI_BOARD_INFO1) As Long
|
|
|
|
'文件结束
|