?? module1.bas
字號(hào):
Attribute VB_Name = "Module1"
'*****************************************************************
'Custom Variables.
'*****************************************************************
Public IOCTL_Cyusb_GET_DEVICE_DESCRIPTOR As Long
Public IOCTL_Cyusb_GET_CONFIGURATION_DESCRIPTOR As Long
Public IOCTL_Cyusb_GET_STRING_DESCRIPTOR As Long
Public IOCTL_Cyusb_VENDOR_REQUEST As Long
Public MinTemper As Integer
Public MaxTemper As Integer
Public TemperScale As Integer
Public DrawScale As Integer
Public CurTemper As Integer
Public PushBut As Integer
Public TLowtemper As Integer
Public THightemper As Integer
Public Type VENDOR_REQUEST_IN
bRequest As Byte
wValue As Integer
wIndex As Integer
wLength As Integer
direction As Byte
bData As Byte
End Type
Public Type GET_STRING_DESCRIPTOR_IN
Index As Byte
LanguageId As Integer
End Type
'*****************************************************************
'API constants.
'*****************************************************************
'IOCTL Code
Public Const FILE_DEVICE_UNKNOWN = &H22
Public Const Cyusb_IOCTL_INDEX = &H800
Public Const METHOD_BUFFERED = &H0
Public Const FILE_ANY_ACCESS = &H0
'CreateFile
Public Const GENERIC_WRITE = &H40000000
Public Const FILE_SHARE_WRITE = &H2
Public Const OPEN_EXISTING = 3
Public Const INVALID_HANDLE_VALUE = -1
'*****************************************************************
'API functions.
'*****************************************************************
Public Declare Function CreateFile _
Lib "kernel32" _
Alias "CreateFileA" _
(ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, _
ByRef lpSecurityAttributes As Long, _
ByVal dwCreationDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long) _
As Long
Public Declare Function CloseHandle _
Lib "kernel32" _
(ByVal hObject As Long) _
As Long
Public Declare Function DeviceIoControl _
Lib "kernel32" _
(ByVal hDevice As Long, _
ByVal dwIoControlCode As Long, _
ByRef lpInBuffer As Any, _
ByVal nInBufferSize As Long, _
ByRef lpOutBuffer As Byte, _
ByVal nOutBufferSize As Long, _
ByRef lpBytesReturned As Long, _
ByRef lpOverlapped As Long) _
As Long
'*****************************************************************
'Custom Functions.
'*****************************************************************
Public Function CTL_CODE(DeviceType As Long, Functions As Long, Method As Long, Access As Long) As Long
CTL_CODE = DeviceType * 2 ^ 16 Or Access * 2 ^ 14 Or Functions * 2 ^ 2 Or Method
End Function
Public Function Initialize() As Boolean
Dim myRequest As VENDOR_REQUEST_IN
Dim bResult As Boolean
Dim ReData(8) As Byte
Dim nBytes As Long
Dim HidDevice As Long
Dim DevicePathName As String
DevicePathName = "\\.\Cyusb-0"
If (OpenDevice(HidDevice, DevicePathName) = True) Then
myRequest.bRequest = &H6
myRequest.wValue = &H1
myRequest.wIndex = &H0
myRequest.wLength = &H8
myRequest.bData = &H0
myRequest.direction = &H1
bResult = DeviceIoControl _
(HidDevice, _
IOCTL_Cyusb_VENDOR_REQUEST, _
myRequest, _
10, _
ReData(0), _
8, _
nBytes, _
0)
If (bResult = True) Then
CurTemper = ReData(2) / 2
Initialize = True
Else
Initialize = False
Form1.Shape6.Height = (MaxTemper - 0) * TemperScale
Form1.Image1.Picture = LoadPicture("")
Form1.Image2.Picture = LoadPicture("")
MsgBox " 與USB設(shè)備通信失??!" + _
Chr(13) & Chr(10) + _
"USB數(shù)據(jù)傳輸錯(cuò)誤,請(qǐng)重新啟動(dòng)硬件!", _
16, "CurTemper錯(cuò)誤"
CloseHandle (HidDevice)
Unload Form1
End
End If
'讀取TLowtemper的值。
myRequest.bRequest = &HA
myRequest.wValue = &H0
myRequest.wIndex = &H0
myRequest.wLength = &H8
myRequest.bData = &H0
myRequest.direction = &H1
bResult = DeviceIoControl _
(HidDevice, _
IOCTL_Cyusb_VENDOR_REQUEST, _
myRequest, _
10, _
ReData(0), _
8, _
nBytes, _
0)
If (bResult = True) Then
TLowtemper = ReData(2) / 2
Else
Initialize = False
MsgBox " 與USB設(shè)備通信失敗!" + _
Chr(13) & Chr(10) + _
"USB數(shù)據(jù)傳輸錯(cuò)誤,請(qǐng)重新啟動(dòng)硬件1!", _
16, "TLow錯(cuò)誤"
CloseHandle (HidDevice)
Unload Form1
End
End If
myRequest.bRequest = &H8
myRequest.wValue = &H0
myRequest.wIndex = &H0
myRequest.wLength = &H8
myRequest.bData = &H0
myRequest.direction = &H1
bResult = DeviceIoControl _
(HidDevice, _
IOCTL_Cyusb_VENDOR_REQUEST, _
myRequest, _
10, _
ReData(0), _
8, _
nBytes, _
0)
If (bResult = True) Then
THightemper = ReData(2) / 2
CloseHandle (HidDevice)
Else
Initialize = False
MsgBox " 與USB設(shè)備通信失敗!" + _
Chr(13) & Chr(10) + _
"USB數(shù)據(jù)傳輸錯(cuò)誤,請(qǐng)重新啟動(dòng)硬件!", _
16, "THigh錯(cuò)誤"
CloseHandle (HidDevice)
Unload Form1
End
End If
Else
Initialize = False
End If
End Function
Public Function OpenDevice(ByRef HidDevice As Long, ByVal DevicePathName As String) As Boolean
HidDevice = CreateFile _
(DevicePathName, _
GENERIC_WRITE, _
FILE_SHARE_WRITE, _
0, _
OPEN_EXISTING, _
0, _
0)
If (HidDevice = INVALID_HANDLE_VALUE) Then
OpenDevice = False
Form1.Shape6.Height = (MaxTemper - 0) * TemperScale
Form1.Image1.Picture = LoadPicture("")
Form1.Image2.Picture = LoadPicture("")
MsgBox " 未發(fā)現(xiàn)與之通信的USB設(shè)備!" + _
Chr(13) & Chr(10) + _
Chr(13) & Chr(10) + _
"1.請(qǐng)確定其硬件設(shè)備是否已連接。" + _
Chr(13) & Chr(10) + _
"2.請(qǐng)確定其驅(qū)動(dòng)程序是否已加載。", _
16, "OpenDevice錯(cuò)誤"
Form1.Timer1.Enabled = False
Form1.Timer2.Enabled = True
Else
OpenDevice = True
End If
End Function
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -