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

📄 usbioxdll.bas

📁 USB2SPI开发包
💻 BAS
📖 第 1 页 / 共 3 页
字号:
Attribute VB_Name = "USBIOXDLL"
Option Explicit
' 2004.05.28, 2004.10.20, 2005.01.08, 2005.03.25, 2005.04.28
'****************************************
'**  Copyright  (C)  W.ch  1999-2005   **
'**  Web:  http://www.USB-I2C-SPI.com  **
'****************************************
'**  DLL for USB interface chip USB2ISP**
'**  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           ' USB2ISP支持的数据包的长度
Public Const mUSBIO_PKT_LEN_SHORT = 8               ' USB2ISP支持的短数据包的长度

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
' WIN32应用层接口命令
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         ' WIN32命令接口的头长度

Public Const mUSBIO_MAX_NUMBER = 16              ' 最多同时连接的USB2ISP数

Public Const mMAX_BUFFER_LENGTH = &H1000              ' 数据缓冲区最大长度4096

Public Const mMAX_COMMAND_LENGTH = (mWIN32_COMMAND_HEAD + mMAX_BUFFER_LENGTH)             ' 最大数据长度加上命令结构头的长度

Public Const mDEFAULT_BUFFER_LEN = &H400              ' 数据缓冲区默认长度1024

Public Const mDEFAULT_COMMAND_LEN = (mWIN32_COMMAND_HEAD + mDEFAULT_BUFFER_LEN)       ' 默认数据长度加上命令结构头的长度


' USB2ISP端点地址
Public Const mUSBIO_ENDP_INTER_UP = &H81              ' USB2ISP的中断数据上传端点的地址
Public Const mUSBIO_ENDP_INTER_DOWN = &H1             ' USB2ISP的中断数据下传端点的地址
Public Const mUSBIO_ENDP_DATA_UP = &H82              ' USB2ISP的数据块上传端点的地址
Public Const mUSBIO_ENDP_DATA_DOWN = &H2            ' USB2ISP的数据块下传端点的地址

' 设备层接口提供的管道操作命令
Public Const mPipeDeviceCtrl = &H4                  ' USB2ISP的综合控制管道
Public Const mPipeInterUp = &H5                       ' USB2ISP的中断数据上传管道
Public Const mPipeDataUp = &H6                         ' USB2ISP的数据块上传管道
Public Const mPipeDataDown = &H7                     ' USB2ISP的数据块下传管道

' 应用层接口的功能代码
Public Const mFuncNoOperation = &H0                  ' 无操作
Public Const mFuncGetVersion = &H1                    ' 获取驱动程序版本号
Public Const mFuncGetConfig = &H2                   ' 获取USB设备配置描述符
Public Const mFuncSetTimeout = &H9                    ' 设置USB通讯超时
Public Const mFuncSetExclusive = &HB                  ' 设置独占使用
Public Const mFuncResetDevice = &HC                  ' 复位USB设备
Public Const mFuncResetPipe = &HD                     ' 复位USB管道
Public Const mFuncAbortPipe = &HE                      ' 取消USB管道的数据请求

' USB2ISP并口专用的功能代码
Public Const mFuncSetParaMode = &HF                   ' 设置并口模式
Public Const mFuncReadData0 = &H10                   ' 从并口读取数据块0
Public Const mFuncReadData1 = &H11                   ' 从并口读取数据块1
Public Const mFuncWriteData0 = &H12                  ' 向并口写入数据块0
Public Const mFuncWriteData1 = &H13                  ' 向并口写入数据块1
Public Const mFuncWriteRead = &H14                    ' 先输出再输入


' USB设备标准请求代码
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

' USB2ISP控制传输的厂商专用请求类型
Public Const mUSBIO_VENDOR_READ = &HC0                ' 通过控制传输实现的USB2ISP厂商专用读操作
Public Const mUSBIO_VENDOR_WRITE = &H40             ' 通过控制传输实现的USB2ISP厂商专用写操作

' USB2ISP控制传输的厂商专用请求代码
Public Const mUSBIO_PARA_INIT = &HB1                 ' 初始化并口
Public Const mUSBIO_I2C_STATUS = &H52                ' 获取I2C接口的状态
Public Const mUSBIO_I2C_COMMAND = &H53               ' 发出I2C接口的命令


Public Const mUSBIOA_CMD_I2C_STM_STA = &H74          ' I2C接口的命令流:产生起始位
Public Const mUSBIOA_CMD_I2C_STM_STO = &H75           ' I2C接口的命令流:产生停止位
Public Const mUSBIOA_CMD_I2C_STM_OUT = &H0           'I2C接口的命令流:输出数据,位5-位0为长度,后续字节为数据,0长度则只发送一个字节并返回应答
Public Const mUSBIOA_CMD_I2C_STM_IN = &HC0           ' I2C接口的命令流:输入数据,位5-位0为长度,0长度则只接收一个字节并发送无应答
Public Const mUSBIOA_CMD_I2C_STM_SET = &H60           ' I2C接口的命令流:设置参数,位2=SPI的I/O数(0=单入单出,1=双入双出),位1位0=I2C速度(00=低速,01=标准,10=快速,11=高速)
Public Const mUSBIOA_CMD_I2C_STM_US = &H40           ' I2C接口的命令流:以微秒为单位延时,位3-位0为延时值
Public Const mUSBIOA_CMD_I2C_STM_MS = &H50           ' I2C接口的命令流:以亳秒为单位延时,位3-位0为延时值
Public Const mUSBIOA_CMD_I2C_STM_DLY = &HF           ' I2C接口的命令流单个命令延时的最大值
Public Const mUSBIOA_CMD_I2C_STM_END = &H0            ' I2C接口的命令流:命令包提前结束


' 直接输入的状态信号的位定义
Public Const mStateBitERR = &H100                     ' 只读,ERR#引脚输入状态,1:高电平,0:低电平
Public Const mStateBitPEMP = &H200                   ' 只读,PEMP引脚输入状态,1:高电平,0:低电平
Public Const mStateBitINT = &H400                     ' 只读,INT#引脚输入状态,1:高电平,0:低电平
Public Const mStateBitSLCT = &H800                  ' 只读,SLCT引脚输入状态,1:高电平,0:低电平
Public Const mStateBitSDA = &H800000              ' 只读,SDA引脚输入状态,1:高电平,0:低电平




Declare Function USBIO_OpenDevice Lib "USBIOX.DLL" (ByVal iIndex As Long) As Long
' 打开USB2ISP设备,返回句柄,出错则无效
' iIndex  指定USB2ISP设备序号,0对应第一个设备

Declare Sub USBIO_CloseDevice Lib "USBIOX.DLL" (ByVal iIndex As Long)
' 关闭USB2ISP设备
' iIndex    指定USB2ISP设备序号

Declare Function USBIO_GetVersion Lib "USBIOX.DLL" () As Long

' 获得DLL版本号,返回版本号

Declare Function USBIO_DriverCommand Lib "USBIOX.DLL" (ByVal iIndex As Long, ByRef ioCommand As WIN32_COMMAND) As Long
' 直接传递命令给驱动程序,出错则返回0,否则返回数据长度
' iIndex,  ' 指定USB2ISP设备序号,V1.6以上DLL也可以是设备打开后的句柄
' ioCommand   命令结构的地址
' 该程序在调用后返回数据长度,并且仍然返回命令结构,如果是读操作,则数据返回在命令结构中,
' 返回的数据长度在操作失败时为0,操作成功时为整个命令结构的长度,例如读一个字节,则返回mWIN32_COMMAND_HEAD+1,
' 命令结构在调用前,分别提供:管道号或者命令功能代码,存取数据的长度(可选),数据(可选)
' 命令结构在调用后,分别返回:操作状态代码,后续数据的长度(可选),

⌨️ 快捷键说明

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