?? usbioxdll.bas
字號:
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 + -