📄 module1.bas
字号:
Attribute VB_Name = "Module1"
'一定要声明调用EasyD12.dll中的API函数
Option Explicit
'Declare Function ReadPort1 Lib "EasyD12.dll" (ByRef pData As Byte, ByVal iLen As Integer) As Integer
'Declare Function ReadPort2 Lib "EasyD12.dll" (ByRef pData As Byte, ByVal iLen As Integer) As Integer
'Declare Function WritePort1 Lib "EasyD12.dll" (ByRef pData As Byte, ByVal iLen As Integer) As Integer
'Declare Function WritePort2 Lib "EasyD12.dll" (ByRef pData As Byte, ByVal iLen As Integer) As Integer
'****************关于CTL_CODE******************************
Public Const METHOD_IN_DIRECT As Integer = 1
Public Const METHOD_OUT_DIRECT As Integer = 2
Public Const FILE_ANY_ACCESS As Integer = 0
'******************************************************************************
Public Const File_Device As Long = &H8000
'******************************************************************************
'从 setupapi.h 中调用
Public Const DIGCF_PRESENT = &H2
Public Const DIGCF_DEVICEINTERFACE = &H10
Public Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
Public Const GENERIC_READ = &H80000000
Public Const GENERIC_WRITE = &H40000000
Public Const FILE_SHARE_READ = &H1
Public Const FILE_SHARE_WRITE = &H2
Public Const HidP_Input = 0
Public Const HidP_Output = 1
Public Const HidP_Feature = 2
Public Const OPEN_EXISTING = 3
'******************************************************************************
'******************************************************************************
Public Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type
Public Type HIDD_ATTRIBUTES
Size As Long
VendorID As Integer
ProductID As Integer
VersionNumber As Integer
End Type
'*********************************
Public Type HIDP_CAPS
Usage As Integer
UsagePage As Integer
InputReportByteLength As Integer
OutputReportByteLength As Integer
FeatureReportByteLength As Integer
Reserved(16) As Integer
NumberLinkCollectionNodes As Integer
NumberInputButtonCaps As Integer
NumberInputValueCaps As Integer
NumberInputDataIndices As Integer
NumberOutputButtonCaps As Integer
NumberOutputValueCaps As Integer
NumberOutputDataIndices As Integer
NumberFeatureButtonCaps As Integer
NumberFeatureValueCaps As Integer
NumberFeatureDataIndices As Integer
End Type
'****************************
Public Type HidP_Value_Caps
UsagePage As Integer
ReportID As Byte
IsAlias As Long
BitField As Integer
LinkCollection As Integer
LinkUsage As Integer
LinkUsagePage As Integer
IsRange As Long
IsStringRange As Long
IsDesignatorRange As Long
IsAbsolute As Long
HasNull As Long
Reserved As Byte
BitSize As Integer
ReportCount As Integer
Reserved2 As Integer
Reserved3 As Integer
Reserved4 As Integer
Reserved5 As Integer
Reserved6 As Integer
LogicalMin As Long
LogicalMax As Long
PhysicalMin As Long
PhysicalMax As Long
UsageMin As Integer
UsageMax As Integer
StringMin As Integer
StringMax As Integer
DesignatorMin As Integer
DesignatorMax As Integer
DataIndexMin As Integer
DataIndexMax As Integer
End Type
Public Type SP_DEVICE_INTERFACE_DATA
cbSize As Long
InterfaceClassGuid As GUID
Flags As Long
Reserved As Long
End Type
Public Type SP_DEVICE_INTERFACE_DETAIL_DATA
cbSize As Long
DevicePath As Byte
End Type
Public Type SP_DEVINFO_DATA
cbSize As Long
ClassGuid As GUID
DevInst As Long
Reserved As Long
End Type
'******************************************************************************
'******************************************************************************
Public Declare Function CloseHandle _
Lib "kernel32" _
(ByVal hObject As Long) _
As Long
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 FormatMessage _
Lib "kernel32" _
Alias "FormatMessageA" _
(ByVal dwFlags As Long, _
ByRef lpSource As Any, _
ByVal dwMessageId As Long, _
ByVal dwLanguageZId As Long, _
ByVal lpBuffer As String, _
ByVal nSize As Long, _
ByVal Arguments As Long) _
As Long
Public Declare Function HidD_FreePreparsedData _
Lib "hid.dll" _
(ByRef PreparsedData As Long) _
As Long
Public Declare Function HidD_GetAttributes _
Lib "hid.dll" _
(ByVal HidDeviceObject As Long, _
ByRef Attributes As HIDD_ATTRIBUTES) _
As Long
'************************
Public Declare Function HidD_GetHidGuid _
Lib "hid.dll" _
(ByRef HidGuid As GUID) _
As Long
'***************************
Public Declare Function HidD_GetPreparsedData _
Lib "hid.dll" _
(ByVal HidDeviceObject As Long, _
ByRef PreparsedData As Long) _
As Long
'***********************************
Public Declare Function HidP_GetCaps _
Lib "hid.dll" _
(ByVal PreparsedData As Long, _
ByRef Capabilities As HIDP_CAPS) _
As Long
'***********************************
Public Declare Function HidP_GetValueCaps _
Lib "hid.dll" _
(ByVal ReportType As Integer, _
ByRef ValueCaps As Byte, _
ByRef ValueCapsLength As Integer, _
ByVal PreparsedData As Long) _
As Long
Public Declare Function lstrcpy _
Lib "kernel32" _
Alias "lstrcpyA" _
(ByVal dest As String, _
ByVal source As Long) _
As String
Public Declare Function lstrlen _
Lib "kernel32" _
Alias "lstrlenA" _
(ByVal source As Long) _
As Long
Public Declare Function ReadFile _
Lib "kernel32" _
(ByVal hFile As Long, _
ByRef lpBuffer As Byte, _
ByVal nNumberOfBytesToRead As Long, _
ByRef lpNumberOfBytesRead As Long, _
ByVal lpOverlapped As Long) _
As Long
Public Declare Function RtlMoveMemory _
Lib "kernel32" _
(dest As Any, _
src As Any, _
ByVal count As Long) _
As Long
Public Declare Function SetupDiCreateDeviceInfoList _
Lib "setupapi.dll" _
(ByRef ClassGuid As GUID, _
ByVal hwndParent As Long) _
As Long
Public Declare Function SetupDiDestroyDeviceInfoList _
Lib "setupapi.dll" _
(ByVal DeviceInfoSet As Long) _
As Long
Public Declare Function SetupDiEnumDeviceInterfaces _
Lib "setupapi.dll" _
(ByVal DeviceInfoSet As Long, _
ByVal DeviceInfoData As Long, _
ByRef InterfaceClassGuid As GUID, _
ByVal MemberIndex As Long, _
ByRef DeviceInterfaceData As SP_DEVICE_INTERFACE_DATA) _
As Long
Public Declare Function SetupDiGetClassDevs _
Lib "setupapi.dll" _
Alias "SetupDiGetClassDevsA" _
(ByRef ClassGuid As GUID, _
ByVal Enumerator As String, _
ByVal hwndParent As Long, _
ByVal Flags As Long) _
As Long
Public Declare Function SetupDiGetDeviceInterfaceDetail _
Lib "setupapi.dll" _
Alias "SetupDiGetDeviceInterfaceDetailA" _
(ByVal DeviceInfoSet As Long, _
ByRef DeviceInterfaceData As SP_DEVICE_INTERFACE_DATA, _
ByVal DeviceInterfaceDetailData As Long, _
ByVal DeviceInterfaceDetailDataSize As Long, _
ByRef RequiredSize As Long, _
ByVal DeviceInfoData As Long) _
As Long
Public Declare Function WriteFile _
Lib "kernel32" _
(ByVal hFile As Long, _
ByRef lpBuffer As Byte, _
ByVal nNumberOfBytesToWrite As Long, _
ByRef lpNumberOfBytesWritten As Long, _
ByVal lpOverlapped As Long) _
As Long
'对设备执行指定的操作
'返回值
'Long,非零表示成功,零表示失败.会设置GetLastError
'参数 类型及说明
'hDevice Long,设备句柄
'dwIoControlCode Long,带有 FSCTL_ 前缀的常数。参考设备控制选项的部分列表
'lpInBuffer Any,具体取决于dwIoControlCode参数。参考设备控制选项的部分列表
'nInBufferSize Long,输入缓冲区的长度
'lpOutBuffer Any,具体取决于dwIoControlCode参数。参考设备控制选项的部分列表
'nOutBufferSize Long,输出缓冲区的长度
'lpBytesReturned Long,实际装载到输出缓冲区的字节数量
'lpOverlapped OVERLAPPED,这个结构用于重叠操作。针对同步操作,请用ByVal As Long传递零值
Public Declare Function DeviceIoControl _
Lib "kernel32" _
(ByVal hDevice As Long, _
ByVal dwIoControlCode As Long, _
lpInBuffer As Any, _
ByVal nInBufferSize As Long, _
lpOutBuffer As Any, _
ByVal nOutBufferSize As Long, _
lpBytesReturned As Long, _
lpOverlapped As Long) _
As Long
'VC 例程
'//使用IoControl往端点1发送一字节数据
'if ((!DeviceIoControl(
'g_hComputer00UsbDevice, //我们的设备句柄
' WRITE_ENDP1, //IoControl的功能代码
' Buffer, //输入缓冲
'1, //输入字节数
'NULL, //输出缓冲,无
'0, //输出字节数
'&BytesReturned, //实际发送的字节数
'NULL //同步写时置为NULL
')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -