?? module1.bas
字號:
Attribute VB_Name = "Module1"
Option Explicit
Type mUspValue
mUspValueLow As Byte
mUspValueHigh As Byte
End Type
Type mUspIndex
mUspIndexLow As Byte
mUspIndexHigh As Byte
End Type
Type USB_SETUP_PKT
mUspReqType As Byte
mUspRequest As Byte
mUspValue As mUspValue
mUspIndex As mUspIndex
mLength As Integer
End Type
Public mUSB_SETUP_PKT As USB_SETUP_PKT
Public Const mCH375_PACKET_LENGTH = 64 ' CH375支持的數據包的長度
Type WIN32_COMMAND '定義WIN32命令接口結構
mFunction As Long '輸入時指定功能代碼或者管道號
'輸出時返回操作狀態
mLength As Long '存取長度,返回后續數據的長度
mBuffer(mCH375_PACKET_LENGTH) As Byte '數據緩沖區,長度為0至255B '數據緩沖區,長度為0至255B
End Type
Public mWIN32_COMMAND As WIN32_COMMAND
Public Const mCH375_MAX_NUMBER = 16 ' 最多同時連接的CH375數
Public Const mMAX_BUFFER_LENGTH = &H1000 ' 數據緩沖區最大長度
Public Const mDEFAULT_BUFFER_LEN = &H400 ' 數據緩沖區默認長度1024
' CH375端點地址
Public Const mCH375_ENDP_INTER_UP = &H81 ' CH375的中斷數據上傳端點的地址
Public Const mCH375_ENDP_AUX_DOWN = &H1 ' CH375的輔助數據下傳端點的地址
Public Const mCH375_ENDP_DATA_UP = &H82 ' CH375的數據塊上傳端點的地址
Public Const mCH375_ENDP_DATA_DOWN = &H2 ' CH375的數據塊下傳端點的地址
' 設備層接口提供的管道操作命令
Public Const mPipeDeviceCtrl = &H4 ' CH375的綜合控制管道
Public Const mPipeInterUp = &H5 ' CH375的中斷數據上傳管道
Public Const mPipeDataUp = &H6 ' CH375的數據塊上傳管道
Public Const mPipeDataDown = &H7 ' CH375的數據塊下傳管道
Public Const mPipeAuxDown = &H8 ' CH375的輔助數據下傳管道
' 應用層接口的功能代碼
Public Const mFuncNoOperation = &H0 ' 無操作
Public Const mFuncGetVersion = &H1 ' 獲取驅動程序版本號
Public Const mFuncGetConfig = &H2 ' 獲取USB設備配置描述符
Public Const mFuncSetExclusive = &HB ' 設置獨占使用
Public Const mFuncResetDevice = &HC ' 復位USB設備
Public Const mFuncResetPipe = &HD ' 復位USB管道
Public Const mFuncAbortPipe = &HE ' 取消USB管道的數據請求
Public Const mFuncSetTimeout = &HF ' 設置USB通訊超時
' 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
' CH375控制傳輸的供應商專用請求類型
Public Const mCH375_VENDOR_READ = &HC0 '通過控制傳輸實現的CH375供應商專用讀操作
Public Const mCH375_VENDOR_WRITE = &H40 '通過控制傳輸實現的CH375供應商專用寫操作
' CH375控制傳輸的供應商專用請求代碼
Public Const mCH375_SET_CONTROL = &H51 ' 輸出控制信號
Public Const mCH375_GET_STATUS = &H52 ' 輸入狀態信號
' 寄存器的位定義
Public Const mBitInputRxd = &H2 ' 只讀,RXD#引腳輸入狀態,1:高電平,0:低電平
Public Const mBitInputReq = &H4 ' 只讀,REQ#引腳輸入狀態,1:高電平,0:低電平
' 直接輸入的狀態信號的位定義
Public Const mStateRXD = &H200 ' RXD#引腳輸入狀態,1:高電平,0:低電平
Public Const mStateREQ = &H400 ' REQ#引腳輸入狀態,1:高電平,0:低電平
Declare Function CH375OpenDevice Lib "CH375DLL.DLL" (ByVal iIndex As Long) As Long
'打開CH375設備,返回句柄,出錯則無效
' iIndex 指定CH375設備序號,0對應第一個設備
Declare Sub CH375CloseDevice Lib "CH375DLL.DLL" (ByVal iIndex As Long)
'關閉CH375設備
' iIndex 指定CH375設備序號
Declare Function CH375GetVersion Lib "CH375DLL.DLL" () As Long
'獲得DLL版本號,返回版本號
Declare Function CH375DriverCommand Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByRef ioCommand As WIN32_COMMAND) As Long
' 直接傳遞命令給驅動程序,出錯則返回0,否則返回數據長度
' iIndex 指定CH375設備序號
' ioCommand 命令結構的指針
' 該程序在調用后返回數據長度,并且仍然返回命令結構,如果是讀操作,則數據返回在命令結構中,
' 返回的數據長度在操作失敗時為0,操作成功時為整個命令結構的長度,例如讀一個字節,則返回mWIN32_COMMAND_HEAD+1,
' 命令結構在調用前,分別提供:管道號或者命令功能代碼,存取數據的長度(可選),數據(可選)
' 命令結構在調用后,分別返回:操作狀態代碼,后續數據的長度(可選),
' 操作狀態代碼是由WINDOWS定義的代碼,可以參考NTSTATUS.H,
' 后續數據的長度是指讀操作返回的數據長度,數據存放在隨后的緩沖區中,對于寫操作一般為0
Declare Function CH375GetDrvVersion Lib "CH375DLL.DLL" () As Long
'獲得驅動程序版本號,返回版本號,出錯則返回0
Declare Function CH375ResetDevice Lib "CH375DLL.DLL" (ByVal iIndex As Long) As Boolean
' 復位USB設備
' iIndex 指定CH375設備序號
Declare Function CH375GetDeviceDescr Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByRef oBuffer As Any, ByRef ioLength As Long) As Boolean
' 讀取設備描述符
' iIndex 指定CH375設備序號
' oBuffer 指向一個足夠大的緩沖區,用于保存描述符
' ioLength 指向長度單元,輸入時為準備讀取的長度,返回后為實際讀取的長度
Declare Function CH375GetConfigDescr Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByRef oBuffer As Any, ByRef ioLength As Long) As Boolean
' 讀取配置描述符
' iIndex 指定CH375設備序號
' oBuffer 指向一個足夠大的緩沖區,用于保存描述符
' ioLength 指向長度單元,輸入時為準備讀取的長度,返回后為實際讀取的長度
Declare Function CH375SetIntRoutine Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByVal iIntRoutine As Long) As Boolean
' 設定中斷服務程序
' iIndex 指定CH375設備序號
' iIntRoutine 指定中斷服務程序,為NULL則取消中斷服務,否則在中斷時調用該程序
Declare Function CH375ReadInter Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByRef oBuffer As Any, ByRef ioLength As Long) As Boolean
' 讀取中斷數據
' iIndex 指定CH375設備序號
' oBuffer 指向一個足夠大的緩沖區,用于保存讀取的中斷數據
' ioLength 指向長度單元,輸入時為準備讀取的長度,返回后為實際讀取的長度
Declare Function CH375AbortInter Lib "CH375DLL.DLL" (ByVal iIndex As Long) As Boolean
' 放棄中斷數據讀操作
' iIndex 指定CH375設備序號
Declare Function CH375ReadData Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByRef oBuffer As Any, ByRef ioLength As Long) As Boolean
' 讀取數據塊
' iIndex 指定CH375設備序號
' oBuffer 指向一個足夠大的緩沖區,用于保存讀取的數據
' ioLength 指向長度單元,輸入時為準備讀取的長度,返回后為實際讀取的長度
Declare Function CH375AbortRead Lib "CH375DLL.DLL" (ByVal iIndex As Long) As Boolean
' 放棄數據塊讀操作
' iIndex 指定CH375設備序號
Declare Function CH375WriteData Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByRef iBuffer As Any, ByRef ioLength As Long) As Boolean
' 寫出數據塊
' iIndex 指定CH375設備序號
' iBuffer 指向一個緩沖區,放置準備寫出的數據
' ioLength 指向長度單元,輸入時為準備寫出的長度,返回后為實際寫出的長度
Declare Function CH375AbortWrite Lib "CH375DLL.DLL" (ByVal iIndex As Long) As Boolean
' 放棄數據塊寫操作
' iIndex 指定CH375設備序號
Declare Function CH375WriteRead Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByRef iBuffer As Any, ByRef oBuffer As Any, ByRef ioLength As Long) As Boolean
' 先寫出標準的數據塊(命令),再讀取標準的數據塊(應答)
' iIndex 指定CH375設備序號
' iBuffer 指向一個緩沖區,放置準備寫出的數據,長度不大于mCH375_PACKET_LENGTH
' oBuffer 指向一個足夠大的緩沖區,長度不小于mCH375_PACKET_LENGTH,用于保存讀取的數據
' ioLength 指向長度單元,不大于mCH375_PACKET_LENGTH,輸入時為準備寫出的長度,返回后為實際讀取的長度
Declare Function CH375GetStatus Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByRef iStatus As Long) As Boolean
' 通過CH375直接輸入數據和狀態
' iIndex 指定CH375設備序號
' iStatus 指向一個雙字單元,用于保存狀態數據
' 位7-位0對應CH375的D7-D0引腳,位9對應CH375的RXD#引腳,位10對應CH375的REQ#引腳
Declare Function CH375SetTimeout Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByVal iWriteTimeout As Long, ByVal iReadTimeout As Long) As Boolean
' 設置USB數據讀寫的超時
' iIndex 指定CH375設備序號
' iWriteTimeout 指定USB寫出數據塊的超時時間,以毫秒mS為單位,0xFFFFFFFF指定不超時(默認值)
' iReadTimeout 指定USB讀取數據塊的超時時間,以毫秒mS為單位,0xFFFFFFFF指定不超時(默認值)
Declare Function CH375WriteAuxData Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByRef iBuffer As Any, ByRef ioLength As Long) As Boolean
' 寫出輔助數據
' iIndex 指定CH375設備序號
' iBuffer 指向一個緩沖區,放置準備寫出的數據
' ioLength 指向長度單元,輸入時為準備寫出的長度,返回后為實際寫出的長度
Declare Function CH375SetExclusive Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByVal iExclusive As Long) As Boolean
' 設置獨占使用當前CH375設備
' iIndex 指定CH375設備序號
' iExclusive 為0則設備可以共享使用,非0則獨占使用
Declare Function CH375GetUsbID Lib "CH375DLL.DLL" (ByVal iIndex As Long) As Long
' 獲取USB設備ID,返回數據中,低16位為廠商ID,高16位為產品ID,錯誤時返回全0(無效ID)
' iIndex 指定CH375設備序號
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -