VB调用周立功CAN接口卡接口库函数

2 篇文章 1 订阅

周立功CAN相关资源下载
首先,把下载的库函数文件(由上面链接下载)都放在工作目录下。库函数文件总共有三个文件:ControlCAN.h、
ControlCAN.lib、ControlCAN.dll 和一个文件夹 kerneldlls。

Module.bas 模块文件代码

'定义需要用到的数据结构
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
    Reserved(3) As Integer
End Type

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

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

Public Type VCI_INIT_CONFIG
    AccCode As Long
    AccMask As Long
    Reserved As Long
    Filter As Byte
    Timing0 As Byte
    Timing1 As Byte
    Mode As Byte
End Type

Public Type VCI_FILTER_RECORD
    ExtFrame As Long
    Start As Long
    End As Long
End Type


Declare Function VCI_OpenDevice Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByVal Reserved As Long) As Long

Declare Function VCI_CloseDevice Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long) As Long

Declare Function VCI_InitCAN Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByVal CANInd As Long, ByRef InitConfig As VCI_INIT_CONFIG) As Long

Declare Function VCI_ReadBoardInfo Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByRef info As VCI_BOARD_INFO) As Long

Declare Function VCI_ReadErrInfo Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByVal CANInd As Long, ByRef ErrInfo As VCI_ERR_INFO) As Long

Declare Function VCI_ReadCANStatus Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByVal CANInd As Long, ByRef CANStatus As VCI_CAN_STATUS) As Long

Declare Function VCI_GetReference Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByVal CANInd As Long, ByVal RefType As Long, ByRef data As Any) As Long

Declare Function VCI_SetReference Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByVal CANInd As Long, ByVal RefType As Long, ByRef data As Any) As Long

Declare Function VCI_GetReceiveNum Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByVal CANInd As Long) As Long

Declare Function VCI_ClearBuffer Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByVal CANInd As Long) As Long

Declare Function VCI_StartCAN Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByVal CANInd As Long) As Long

Declare Function VCI_ResetCAN Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByVal CANInd As Long) As Long

Declare Function VCI_Transmit Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByVal CANInd As Long, ByRef Send As VCI_CAN_OBJ, ByVal length As Long) As Long

Declare Function VCI_Receive Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByVal CANInd As Long, ByRef Receive As VCI_CAN_OBJ, ByVal length As Long, ByVal WaitTime As Long) As Long


窗体代码

'下面以USBCAN-I设备为例:

Private Sub Form_Load()
    Dim InitConfig As VCI_INIT_CONFIG
    Dim TX_frameinfo As VCI_CAN_OBJ
    Dim RX_frameinfo As VCI_CAN_OBJ
'初始化
    InitConfig.AccCode = &H0
    InitConfig.AccMask = &HFFFFFFFF
    InitConfig.Filter = 1
    InitConfig.Timing0 = &H1
    InitConfig.Timing1 = &H1C
    InitConfig.Mode = 0
    
'发送帧信息
    TX_frameinfo.ID = &H18FF3010
    TX_frameinfo.SendType = 0
    TX_frameinfo.RemoteFlag = 0
    TX_frameinfo.ExternFlag = 1
    TX_frameinfo.DataLen = 8
    
    TX_frameinfo.data(0) = &H5
    TX_frameinfo.data(1) = &H1
    TX_frameinfo.data(2) = &H2
    TX_frameinfo.data(3) = &H3
    TX_frameinfo.data(4) = &H4
    TX_frameinfo.data(5) = &H5
    TX_frameinfo.data(6) = &H6
    TX_frameinfo.data(7) = &H7
    
'发送与接收数据
    Debug.Print ("下面执行操作返回“1”表示操作成功!")
    Debug.Print VCI_OpenDevice(3, 0, 0)
    Debug.Print VCI_SetReference(3, 0, 0, 0, &H1C0008)
    Debug.Print VCI_InitCAN(3, 0, 0, InitConfig)
    Debug.Print VCI_StartCAN(3, 0, 0)
    Debug.Print VCI_ClearBuffer(3, 0, 0)
    Debug.Print VCI_Transmit(3, 0, 0, TX_frameinfo, 1)
    Debug.Print "CAN接收缓存帧数:" & VCI_GetReceiveNum(3, 0, 0)
'等待CAN缓存区收到数据
    While VCI_GetReceiveNum(3, 0, 0) <= 0
    Wend
'从CAN缓存区读出一帧数据
    Debug.Print VCI_Receive(3, 0, 0, RX_frameinfo, 100, 400)
    Dim rxstr As String
    For i = 0 To 7
    rxstr = rxstr & RX_frameinfo.data(i)
    Next
    Debug.Print "收到:" & rxstr
'关闭USBCAN
    VCI_CloseDevice 3, 0
    
End Sub

运行结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yfw&武

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值