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

📄 module1.bas

📁 这是我读研的时候用VB开发的一个与基于CAN-PCI5121的通讯小程序
💻 BAS
字号:
Attribute VB_Name = "Module1"
'定义需要用到的数据结构
Public Type VCI_BOARD_INFO      '系列接口卡的设备信息。结构体将在VCI_ReadBoardInfo函数中被填充
    hw_Version As Integer       '硬件版本号,用16进制表示。比如0x0100表示V1.00
    fw_Version As Integer       '固件版本号,用16进制表示
    dr_Version As Integer       '驱动程序版本号,用16进制表示
    in_Version As Integer       '接口库版本号,用16进制表示
    irq_num As Integer          '板卡所使用的中断号
    can_num As Byte             '表示有几路CAN通道
    str_Serial_Num(19) As Byte  '此板卡的序列号
    str_hw_Type(39) As Byte     '硬件类型
    Reserved(3) As Integer      '系统保留
End Type

Public Type VCI_CAN_OBJ         '该结构体在VCI_Transmit和VCI_Receive函数中用来传送CAN信息帧
    ID As Long                  '报文ID
    TimeStamp As Long           '接收到信息帧时的时间标识,从CAN控制器初始化开始计时
    TimeFlag As Byte            '是否使用时间标识,为1时TimeStamp有效,TimeFlag和TimeStamp只在此帧为接收帧时才有意义
    SendType As Byte            '发送帧类型,=0时为正常发送,=1时为单次发送,=2时为自发自收,=3时为单次自发自收,只在此帧为发送帧时才有意义
    RemoteFlag As Byte          '是否时远程帧
    ExternFlag As Byte          '是否是扩展帧
    DataLen As Byte             '数据长度(<=8),即Data的长度
    data(7) As Byte             '报文的数据
    Reserved(2) As Byte         '系统保留
End Type

Public Type VCI_CAN_STATUS      '该结构体包含CAN控制器状态信息,结构体将在VCI_ReadCANStatus函数中被填充
    ErrInterrupt As Byte        '中断记录,读操作会清除
    regMode As Byte             'CAN控制器模式寄存器
    regStatus As Byte           'CAN控制器状态寄存器
    regALCapture As Byte        'CAN控制器仲裁丢失寄存器
    regECCapture As Byte        'CAN控制器错误寄存器
    regEWLimit As Byte          'CAN控制器错误警告限制寄存器
    regRECounter As Byte        'CAN控制器接收错误寄存器
    regTECounter As Byte        'CAN控制器发送错误寄存器
    Reserved As Long            '系统保留
End Type

Public Type VCI_ERR_INFO        '该结构体用于装载VCI库运行时的错误信息。该结构体将在VCI_ReadErrInfo函数中被填充
    ErrCode As Long             '错误码
    Passive_ErrData(2) As Byte  '当产生的错误中有消极错误时表示为消极错误的错误标识数据
    ArLost_ErrData As Byte      '当产生的错误中有仲裁丢失错误时表示为仲裁丢失错误的错误标识数据
End Type

Public Type VCI_INIT_CONFIG     '该结构体定义了初始化CAN的配置。该结构体将在VCI_InitCAN函数中被填充
    AccCode As Long             '验收码
    AccMask As Long             '屏蔽码
    Reserved As Long            '保留
    Filter As Byte              '滤波方式
    Timing0 As Byte             '定时器0(BTR0)
    Timing1 As Byte             '定时器1(BTR1)
    Mode As Byte                '模式
End Type
''注:PCI5121的设备类型号为1 ; CAN232的设备类型号为6
''此函数用以打开设备 DeviceType-设备类型号 DeviceInd-设备索引号 (注:比如当只有一个PCI5121时,索引号为0。但当CAN232时:0表示要打开的时COM1,1表示要打开的时COM2) Reserved-在CAN232中有意义,在其他设备中无意义  返回值:为1表示操作成功,为0表示操作失败
Declare Function VCI_OpenDevice Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByVal Reserved As Long) As Long    '

''此函数关闭设备 DeviceType-设备类型号 DeviceInd-设备索引号  返回值:为1表示操作成功,为0表示操作失败
Declare Function VCI_CloseDevice Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long) As Long '

''此函数用以初始化指定的CAN DeviceType-设备类型号 DeviceInd-设备索引号 CANInd-第几路CAN InitConfig-初始化结构参数   返回值:为1表示操作成功,为0表示操作失败
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 '

''此函数获取设备信息 DeviceType-设备类型号 DeviceInd-设备索引号 info-用来存储设备信息的VCI_BOARD_INFO结构指针   返回值:为1表示操作成功,为0表示操作失败
Declare Function VCI_ReadBoardInfo Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByRef info As VCI_BOARD_INFO) As Long '

''此函数用以获取最后一次错误信息 DeviceType-设备类型号 DeviceInd-设备索引号 CANInd-第几路CAN ErrInfo-用来存储错误信息的VCI_ERR_INFO结构指针  返回值:为1表示操作成功,为0表示操作失败
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 '

''此函数用来获取CAN状态 DeviceType-设备类型号 DeviceInd-设备索引号 CANInd-第几路CAN CANStatus-用来存储CAN状态的的VCI_CAN_STATUS结构指针   返回值:为1表示操作成功,为0表示操作失败
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 '

''此函数用来获取设备的相应参数 DeviceType-设备类型号 DeviceInd-设备索引号 CANInd-第几路CAN RefType-参数类型 data-用来存储参数有关数据缓冲区地址首指针    返回值:为1表示操作成功,为0表示操作失败
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 '

''此函数用来设置设备的相应参数 DeviceType-设备类型号 DeviceInd-设备索引号 CANInd-第几路CAN RefType-参数类型  data-用来存储参数有关数据缓冲区地址首指针    返回值:为1表示操作成功,为0表示操作失败
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 '

''此函数用来获取指定接收缓冲区中接收到但尚未被读取的帧数 DeviceType-设备类型号 DeviceInd-设备索引号 CANInd-第几路CAN     返回值:返回尚未被读取的帧数
Declare Function VCI_GetReceiveNum Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByVal CANInd As Long) As Long '

''此函数用来清空指定缓冲区 DeviceType-设备类型号 DeviceInd-设备索引号 CANInd-第几路CAN     返回值:为1表示操作成功,为0表示操作失败
Declare Function VCI_ClearBuffer Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByVal CANInd As Long) As Long '

'''此函数用来启动CAN DeviceType-设备类型号 DeviceInd-设备索引号 CANInd-第几路CAN     返回值:为1表示操作成功,为0表示操作失败
Declare Function VCI_StartCAN Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByVal CANInd As Long) As Long '

''此函数用来复位CAN DeviceType-设备类型号 DeviceInd-设备索引号 CANInd-第几路CAN     返回值:为1表示操作成功,为0表示操作失败
Declare Function VCI_ResetCAN Lib "ControlCAN.dll" (ByVal DeviceType As Long, ByVal DeviceInd As Long, ByVal CANInd As Long) As Long '

''此函数用来返回实际发送的帧数 DeviceType-设备类型号 DeviceInd-设备索引号 CANInd-第几路CAN  Send-要发送的数据帧数组的首指针  length-要发送的数据帧数组的长度   返回值:返回实际发送的帧数
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 '

''此函数从指定的设备读取数据 DeviceType-设备类型号 DeviceInd-设备索引号 CANInd-第几路CAN  Receive-用来接收的数据帧数组的首指针  len-用来接收的数据帧数组的长度  WaitTime-等待超时时间,以毫秒为单位   返回值:返回实际读取到的帧数。如果返回值为0xFFFFFFFF,则表示读取数据失败,有错误发生,请调用VCI_ReadErrInfo函数来获取错误码。
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 '



⌨️ 快捷键说明

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