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

📄 usbioxdll.vb

📁 USB2I2C USB2SPI USB2ISP资料开发包
💻 VB
📖 第 1 页 / 共 3 页
字号:
Option Strict Off
Option Explicit On
Module USBIOXDLL
	' 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
	
	Structure mUspValue
		Dim mUspValueLow As Byte ' 02H 值参数低字节
		Dim mUspValueHigh As Byte ' 03H 值参数高字节
	End Structure
	Structure mUspIndex
		Dim mUspIndexLow As Byte ' 04H 索引参数低字节
		Dim mUspIndexHigh As Byte ' 05H 索引参数高字节
	End Structure
	Structure USB_SETUP_PKT ' USB控制传输的建立阶段的数据请求包结构
		Dim mUspReqType As Byte ' 00H 请求类型
		Dim mUspRequest As Byte ' 01H 请求代码
		'UPGRADE_NOTE: mUspValue 已升级到 mUspValue_Renamed。 单击以获得更多信息:“ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="A9E4979A-37FA-4718-9994-97DD76ED70A7"”
		Dim mUspValue_Renamed As mUspValue ' 02H-03H 值参数
		'UPGRADE_NOTE: mUspIndex 已升级到 mUspIndex_Renamed。 单击以获得更多信息:“ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="A9E4979A-37FA-4718-9994-97DD76ED70A7"”
		Dim mUspIndex_Renamed As mUspIndex ' 04H-05H 索引参数
		Dim mLength As Short ' 06H-07H 数据阶段的数据长度
	End Structure
	
	Public Const INVALID_HANDLE_VALUE As Short = -1 '错误码
	Public Const mUSBIO_PACKET_LENGTH As Short = 32 ' USB2ISP支持的数据包的长度
	Public Const mUSBIO_PKT_LEN_SHORT As Short = 8 ' USB2ISP支持的短数据包的长度
	
	Structure WIN32_COMMAND '定义WIN32命令接口结构
		Dim mFunction As Integer '输入时指定功能代码或者管道号
		'输出时返回操作状态
		Dim mLength As Integer '存取长度,返回后续数据的长度
		<VBFixedArray(mUSBIO_PACKET_LENGTH - 1)> Dim mBuffer() As Byte '数据缓冲区,长度为0至255B
		
		'UPGRADE_TODO: 必须调用“Initialize”来初始化此结构的实例。 单击以获得更多信息:“ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="B4BFF9E0-8631-45CF-910E-62AB3970F27B"”
		Public Sub Initialize()
			ReDim mBuffer(mUSBIO_PACKET_LENGTH - 1)
		End Sub
	End Structure
	'UPGRADE_WARNING: 结构 mWIN32_COMMAND 中的数组可能需要先初始化才可以使用。 单击以获得更多信息:“ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="814DF224-76BD-4BB4-BFFB-EA359CB9FC48"”
	Public mWIN32_COMMAND As WIN32_COMMAND
	
	Public Const FILE_DEVICE_UNKNOWN As Short = &H22s
	Public Const FILE_ANY_ACCESS As Short = 0
	Public Const METHOD_BUFFERED As Short = 0
	' WIN32应用层接口命令
	Public Const IOCTL_USBIO_COMMAND As Double = (FILE_DEVICE_UNKNOWN * (2 ^ 16) + FILE_ANY_ACCESS * 2 ^ 14 + &HF34s * 2 ^ 2 + METHOD_BUFFERED) ' 专用接口
	
	Const mWIN32_COMMAND_HEAD As Short = 8 ' WIN32命令接口的头长度
	
	Public Const mUSBIO_MAX_NUMBER As Short = 16 ' 最多同时连接的USB2ISP数
	
	Public Const mMAX_BUFFER_LENGTH As Short = &H1000s ' 数据缓冲区最大长度4096
	
	Public Const mMAX_COMMAND_LENGTH As Integer = (mWIN32_COMMAND_HEAD + mMAX_BUFFER_LENGTH) ' 最大数据长度加上命令结构头的长度
	
	Public Const mDEFAULT_BUFFER_LEN As Short = &H400s ' 数据缓冲区默认长度1024
	
	Public Const mDEFAULT_COMMAND_LEN As Integer = (mWIN32_COMMAND_HEAD + mDEFAULT_BUFFER_LEN) ' 默认数据长度加上命令结构头的长度
	
	
	' USB2ISP端点地址
	Public Const mUSBIO_ENDP_INTER_UP As Short = &H81s ' USB2ISP的中断数据上传端点的地址
	Public Const mUSBIO_ENDP_INTER_DOWN As Short = &H1s ' USB2ISP的中断数据下传端点的地址
	Public Const mUSBIO_ENDP_DATA_UP As Short = &H82s ' USB2ISP的数据块上传端点的地址
	Public Const mUSBIO_ENDP_DATA_DOWN As Short = &H2s ' USB2ISP的数据块下传端点的地址
	
	' 设备层接口提供的管道操作命令
	Public Const mPipeDeviceCtrl As Short = &H4s ' USB2ISP的综合控制管道
	Public Const mPipeInterUp As Short = &H5s ' USB2ISP的中断数据上传管道
	Public Const mPipeDataUp As Short = &H6s ' USB2ISP的数据块上传管道
	Public Const mPipeDataDown As Short = &H7s ' USB2ISP的数据块下传管道
	
	' 应用层接口的功能代码
	Public Const mFuncNoOperation As Short = &H0s ' 无操作
	Public Const mFuncGetVersion As Short = &H1s ' 获取驱动程序版本号
	Public Const mFuncGetConfig As Short = &H2s ' 获取USB设备配置描述符
	Public Const mFuncSetTimeout As Short = &H9s ' 设置USB通讯超时
	Public Const mFuncSetExclusive As Short = &HBs ' 设置独占使用
	Public Const mFuncResetDevice As Short = &HCs ' 复位USB设备
	Public Const mFuncResetPipe As Short = &HDs ' 复位USB管道
	Public Const mFuncAbortPipe As Short = &HEs ' 取消USB管道的数据请求
	
	' USB2ISP并口专用的功能代码
	Public Const mFuncSetParaMode As Short = &HFs ' 设置并口模式
	Public Const mFuncReadData0 As Short = &H10s ' 从并口读取数据块0
	Public Const mFuncReadData1 As Short = &H11s ' 从并口读取数据块1
	Public Const mFuncWriteData0 As Short = &H12s ' 向并口写入数据块0
	Public Const mFuncWriteData1 As Short = &H13s ' 向并口写入数据块1
	Public Const mFuncWriteRead As Short = &H14s ' 先输出再输入
	
	
	' USB设备标准请求代码
	Public Const mUSB_CLR_FEATURE As Short = &H1s
	Public Const mUSB_SET_FEATURE As Short = &H3s
	Public Const mUSB_GET_STATUS As Short = &H0s
	Public Const mUSB_SET_ADDRESS As Short = &H5s
	Public Const mUSB_GET_DESCR As Short = &H6s
	Public Const mUSB_SET_DESCR As Short = &H7s
	Public Const mUSB_GET_CONFIG As Short = &H8s
	Public Const mUSB_SET_CONFIG As Short = &H9s
	Public Const mUSB_GET_INTERF As Short = &HAs
	Public Const mUSB_SET_INTERF As Short = &HBs
	Public Const mUSB_SYNC_FRAME As Short = &HCs
	
	' USB2ISP控制传输的厂商专用请求类型
	Public Const mUSBIO_VENDOR_READ As Short = &HC0s ' 通过控制传输实现的USB2ISP厂商专用读操作
	Public Const mUSBIO_VENDOR_WRITE As Short = &H40s ' 通过控制传输实现的USB2ISP厂商专用写操作
	
	' USB2ISP控制传输的厂商专用请求代码
	Public Const mUSBIO_PARA_INIT As Short = &HB1s ' 初始化并口
	Public Const mUSBIO_I2C_STATUS As Short = &H52s ' 获取I2C接口的状态
	Public Const mUSBIO_I2C_COMMAND As Short = &H53s ' 发出I2C接口的命令
	
	
	Public Const mUSBIOA_CMD_I2C_STM_STA As Short = &H74s ' I2C接口的命令流:产生起始位
	Public Const mUSBIOA_CMD_I2C_STM_STO As Short = &H75s ' I2C接口的命令流:产生停止位
	Public Const mUSBIOA_CMD_I2C_STM_OUT As Short = &H0s 'I2C接口的命令流:输出数据,位5-位0为长度,后续字节为数据,0长度则只发送一个字节并返回应答
	Public Const mUSBIOA_CMD_I2C_STM_IN As Short = &HC0s ' I2C接口的命令流:输入数据,位5-位0为长度,0长度则只接收一个字节并发送无应答
	Public Const mUSBIOA_CMD_I2C_STM_SET As Short = &H60s ' I2C接口的命令流:设置参数,位2=SPI的I/O数(0=单入单出,1=双入双出),位1位0=I2C速度(00=低速,01=标准,10=快速,11=高速)
	Public Const mUSBIOA_CMD_I2C_STM_US As Short = &H40s ' I2C接口的命令流:以微秒为单位延时,位3-位0为延时值
	Public Const mUSBIOA_CMD_I2C_STM_MS As Short = &H50s ' I2C接口的命令流:以亳秒为单位延时,位3-位0为延时值
	Public Const mUSBIOA_CMD_I2C_STM_DLY As Short = &HFs ' I2C接口的命令流单个命令延时的最大值
	Public Const mUSBIOA_CMD_I2C_STM_END As Short = &H0s ' I2C接口的命令流:命令包提前结束
	
	
	' 直接输入的状态信号的位定义
	Public Const mStateBitERR As Short = &H100s ' 只读,ERR#引脚输入状态,1:高电平,0:低电平
	Public Const mStateBitPEMP As Short = &H200s ' 只读,PEMP引脚输入状态,1:高电平,0:低电平
	Public Const mStateBitINT As Short = &H400s ' 只读,INT#引脚输入状态,1:高电平,0:低电平
	Public Const mStateBitSLCT As Short = &H800s ' 只读,SLCT引脚输入状态,1:高电平,0:低电平
	Public Const mStateBitSDA As Integer = &H800000 ' 只读,SDA引脚输入状态,1:高电平,0:低电平
	
	
	
	
	Declare Function USBIO_OpenDevice Lib "USBIOX.DLL" (ByVal iIndex As Integer) As Integer
	' 打开USB2ISP设备,返回句柄,出错则无效
	' iIndex  指定USB2ISP设备序号,0对应第一个设备
	
	Declare Sub USBIO_CloseDevice Lib "USBIOX.DLL" (ByVal iIndex As Integer)
	' 关闭USB2ISP设备
	' iIndex    指定USB2ISP设备序号
	
	Declare Function USBIO_GetVersion Lib "USBIOX.DLL" () As Integer
	
	' 获得DLL版本号,返回版本号
	
	'UPGRADE_WARNING: 结构 WIN32_COMMAND 可能要求封送处理属性作为此 Declare 语句中的参数传递。 单击以获得更多信息:“ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="C429C3A5-5D47-4CD9-8F51-74A1616405DC"”
	Declare Function USBIO_DriverCommand Lib "USBIOX.DLL" (ByVal iIndex As Integer, ByRef ioCommand As WIN32_COMMAND) As Integer
	' 直接传递命令给驱动程序,出错则返回0,否则返回数据长度
	' iIndex,  ' 指定USB2ISP设备序号,V1.6以上DLL也可以是设备打开后的句柄
	' ioCommand   命令结构的地址
	' 该程序在调用后返回数据长度,并且仍然返回命令结构,如果是读操作,则数据返回在命令结构中,
	' 返回的数据长度在操作失败时为0,操作成功时为整个命令结构的长度,例如读一个字节,则返回mWIN32_COMMAND_HEAD+1,
	' 命令结构在调用前,分别提供:管道号或者命令功能代码,存取数据的长度(可选),数据(可选)
	' 命令结构在调用后,分别返回:操作状态代码,后续数据的长度(可选),
	'   操作状态代码是由WINDOWS定义的代码,可以参考NTSTATUS.H,
	'   后续数据的长度是指读操作返回的数据长度,数据存放在随后的缓冲区中,对于写操作一般为0
	

⌨️ 快捷键说明

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