📄 usbioxdll.bas
字号:
Attribute VB_Name = "USBIOX"
Option Explicit
' 2004.05.28, 2004.10.20, 2005.01.08, 2005.03.25, 2005.04.28
'****************************************
'** Copyright (C) USBIO TECH. **
'** Web: http://www.USB-I2C-SPI.com **
'****************************************
'** DLL for USB interface chip USB2SPI**
'** C, VC6.0 **
'****************************************
'
'****************************************************************************************************
'已下定义无需更改
'****************************************************************************************************
Public Enum EEPROM_TYPE ' EEPROM型号定义
ID_24C01 = 0
ID_24C02 = 1
ID_24C04 = 2
ID_24C08 = 3
ID_24C16 = 4
ID_24C32 = 5
ID_24C64 = 6
ID_24C128 = 7
ID_24C256 = 8
ID_24C512 = 9
ID_24C1024 = 10
ID_24C2048 = 11
ID_24C4096 = 12
End Enum
Type mUspValue
mUspValueLow As Byte ' 02H 值参数低字节
mUspValueHigh As Byte ' 03H 值参数高字节
End Type
Type mUspIndex
mUspIndexLow As Byte ' 04H 索引参数低字节
mUspIndexHigh As Byte ' 05H 索引参数高字节
End Type
Type USB_SETUP_PKT ' USB控制传输的建立阶段的数据请求包结构
mUspReqType As Byte ' 00H 请求类型
mUspRequest As Byte ' 01H 请求代码
mUspValue As mUspValue ' 02H-03H 值参数
mUspIndex As mUspIndex ' 04H-05H 索引参数
mLength As Integer ' 06H-07H 数据阶段的数据长度
End Type
Public Const INVALID_HANDLE_VALUE = -1 '错误码
Public Const mUSBIO_PACKET_LENGTH = 32 ' USB2SPI支持的数据包的长度
Public Const mUSBIO_PKT_LEN_SHORT = 8 ' USB2SPI支持的短数据包的长度
Type WIN32_COMMAND '定义WIN32命令接口结构
mFunction As Long '输入时指定功能代码或者管道号
'输出时返回操作状态
mLength As Long '存取长度,返回后续数据的长度
mBuffer(mUSBIO_PACKET_LENGTH - 1) As Byte '数据缓冲区,长度为0至255B
End Type
Public mWIN32_COMMAND As WIN32_COMMAND
Public Const FILE_DEVICE_UNKNOWN = &H22
Public Const FILE_ANY_ACCESS = 0
Public Const METHOD_BUFFERED = 0
Public Const IOCTL_USBIO_COMMAND = (FILE_DEVICE_UNKNOWN * (2 ^ 16) + FILE_ANY_ACCESS * 2 ^ 14 + &HF34 * 2 ^ 2 + METHOD_BUFFERED) ' 专用接口
Const mWIN32_COMMAND_HEAD = 8
Public Const mUSBIO_MAX_NUMBER = 16
Public Const mMAX_BUFFER_LENGTH = &H1000
Public Const mMAX_COMMAND_LENGTH = (mWIN32_COMMAND_HEAD + mMAX_BUFFER_LENGTH)
Public Const mDEFAULT_BUFFER_LEN = &H400
Public Const mDEFAULT_COMMAND_LEN = (mWIN32_COMMAND_HEAD + mDEFAULT_BUFFER_LEN)
Public Const mUSBIO_ENDP_INTER_UP = &H81
Public Const mUSBIO_ENDP_INTER_DOWN = &H1
Public Const mUSBIO_ENDP_DATA_UP = &H82
Public Const mUSBIO_ENDP_DATA_DOWN = &H2
Public Const mPipeDeviceCtrl = &H4
Public Const mPipeInterUp = &H5
Public Const mPipeDataUp = &H6
Public Const mPipeDataDown = &H7
Public Const mFuncNoOperation = &H0
Public Const mFuncGetVersion = &H1
Public Const mFuncGetConfig = &H2
Public Const mFuncSetTimeout = &H9
Public Const mFuncSetExclusive = &HB
Public Const mFuncResetDevice = &HC
Public Const mFuncResetPipe = &HD
Public Const mFuncAbortPipe = &HE
Public Const mFuncSetParaMode = &HF
Public Const mFuncReadData0 = &H10
Public Const mFuncReadData1 = &H11
Public Const mFuncWriteData0 = &H12
Public Const mFuncWriteData1 = &H13
Public Const mFuncWriteRead = &H14
Public Const mUSB_CLR_FEATURE = &H1
Public Const mUSB_SET_FEATURE = &H3
Public Const mUSB_GET_STATUS = &H0
Public Const mUSB_SET_ADDRESS = &H5
Public Const mUSB_GET_DESCR = &H6
Public Const mUSB_SET_DESCR = &H7
Public Const mUSB_GET_CONFIG = &H8
Public Const mUSB_SET_CONFIG = &H9
Public Const mUSB_GET_INTERF = &HA
Public Const mUSB_SET_INTERF = &HB
Public Const mUSB_SYNC_FRAME = &HC
Public Const mUSBIO_VENDOR_READ = &HC0
Public Const mUSBIO_VENDOR_WRITE = &H40
Public Const mUSBIO_PARA_INIT = &HB1
Public Const mUSBIO_I2C_STATUS = &H52
Public Const mUSBIO_I2C_COMMAND = &H53
Public Const mUSBIO_CMD_I2C_STM_STA = &H74
Public Const mUSBIO_CMD_I2C_STM_STO = &H75
Public Const mUSBIO_CMD_I2C_STM_OUT = &H0
Public Const mUSBIO_CMD_I2C_STM_IN = &HC0
Public Const mUSBIO_CMD_I2C_STM_SET = &H60
Public Const mUSBIO_CMD_I2C_STM_US = &H40
Public Const mUSBIO_CMD_I2C_STM_MS = &H50
Public Const mUSBIO_CMD_I2C_STM_DLY = &HF
Public Const mUSBIO_CMD_I2C_STM_END = &H0
Public Const mStateBitERR = &H100
Public Const mStateBitPEMP = &H200
Public Const mStateBitINT = &H400
Public Const mStateBitSLCT = &H800
Public Const mStateBitSDA = &H800000
'************************************************************************************************
'************************************************************************************************
'以下为USBIOX.DLL提供的主要I2C总线读写API
'************************************************************************************************
'************************************************************************************************
Declare Function USBIO_StreamSPI4 Lib "USBIOX.DLL" (ByVal iIndex As Long, ByVal iChipSelect As Long, ByVal iLength As Long, ByRef ioBuffer As Any) As Boolean
' USBIO_StreamSPI4 处理SPI数据流,4线接口,时钟线为DCK/D3引脚,输出数据线为DOUT/D5引脚,输入数据线为DIN/D7引脚,片选线为D0/D1/D2,速度约68K字节
' SPI时序: DCK/D3引脚为时钟输出, 默认为低电平, DOUT/D5引脚在时钟上升沿之前输出, DIN/D7引脚在时钟下降沿之后输入
' iIndex, 指定USB2SPI设备序号
' iChipSelect,片选控制, 位7为0则忽略片选控制, 位7为1则参数有效: 位1位0为00/01/10分别选择D0/D1/D2引脚作为低电平有效片选
' iLength, 准备传输的数据字节数
' ioBuffer 指向一个缓冲区,放置准备从DOUT写出的数据,返回后是从DIN读入的数据
Declare Function USBIO_ReadI2C Lib "USBIOX.DLL" (ByVal iIndex As Long, ByVal iDevice As Byte, ByVal iAddr As Byte, ByRef oByte As Byte) As Boolean
' 从I2C接口读取一个字节数据
' iIndex, 指定USB2SPI设备序号
' iDevice, 低7位指定I2C设备地址
' iAddr, 指定数据单元的地址
' oByte 指向一个字节单元,用于保存读取的字节数据
Declare Function USBIO_WriteI2C Lib "USBIOX.DLL" (ByVal iIndex As Long, ByVal iDevice As Byte, ByVal iAddr As Byte, ByVal iByte As Byte) As Boolean
' 向I2C接口写入一个字节数据
' iIndex, 指定USB2SPI设备序号
' iDevice, 低7位指定I2C设备地址
' iAddr, 指定数据单元的地址
' iByte 待写入的字节数据
Declare Function USBIO_StreamI2C Lib "USBIOX.DLL" (ByVal iIndex As Long, ByVal iWriteLength As Long, ByRef iWriteBuffer As Any, ByVal iReadLength As Long, ByRef oReadBuffer As Any) As Boolean
' USBIO_StreamI2C 处理I2C数据流,2线接口,时钟线为SCL引脚,数据线为SDA引脚(准双向I/O),速度约56K字节
' iIndex, 指定USB2SPI设备序号
' iWriteLength, 准备写出的数据字节数
' iWriteBuffer, 指向一个缓冲区,放置准备写出的数据,首字节通常是I2C设备地址及读写方向位
' iReadLength, 准备读取的数据字节数
' oReadBuffer 指向一个缓冲区,返回后是读入的数据
Declare Function USBIO_ReadEEPROM Lib "USBIOX.DLL" (ByVal iIndexas As Long, ByVal iEepromID As EEPROM_TYPE, ByVal iAddr As Long, ByVal iLength As Long, ByRef oBuffer As Any) As Boolean
' USBIO_ReadEEPROM 从EEPROM中读取数据块,速度约56K字节
' i Index 指定USB2SPI设备序号
' iEepromID 指定EEPROM型号
' iAddr 指定数据单元的地址
' iLength 准备读取的数据字节数
' oBuffer 指向一个缓冲区,返回后是读入的数据
Declare Function USBIO_WriteEEPROM Lib "USBIOX.DLL" (ByVal iIndex As Long, ByVal iEepromID As EEPROM_TYPE, ByVal iAddr As Long, ByVal iLength As Long, ByRef iBuffer As Any) As Boolean
' USBIO_WriteEEPROM 向EEPROM中写入数据块
' iIndex, 指定USB2SPI设备序号
' iEepromID, 指定EEPROM型号
' iAddr, 指定数据单元的地址
' iLength, 准备写出的数据字节数
' iBuffer 指向一个缓冲区,放置准备写出的数据
Declare Function USBIO_SetStream Lib "USBIOX.DLL" (ByVal iIndex As Long, ByVal iMode As Long) As Boolean
' iIndex, 指定USB2SPI设备序号
' iMode 指定模式,见下行
' 位1-位0: I2C接口速度/SCL频率, 00=低速/20KHz,01=标准/100KHz,10=快速/400KHz,11=高速/750KHz
' 其它保留,必须为0
Declare Function USBIO_GetStatus Lib "USBIOX.DLL" (ByVal iIndex As Long, ByRef iStatus As Long) As Boolean
' 通过USB2SPI直接输入数据和状态
' iIndex, 指定USB2SPI设备序号
' iStatus 指向一个双字单元,用于保存状态数据,见下行
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -