📄 form1.vb
字号:
Public Class Form1
'実懷僎乕儉婡梡捠怣僾儘僌儔儉 for VB.NET
'by takuya matsubara
'API娭悢偺掕媊
Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" ( _
ByVal lpFileName As String, _
ByVal dwDesiredAccess As Integer, _
ByVal dwShareMode As Integer, _
ByVal lpSecurityAttributes As Integer, _
ByVal dwCreationDisposition As Integer, _
ByVal dwFlagsAndAttributes As Integer, _
ByVal hTemplateFile As Integer _
) As Short
Public Declare Function DeviceIoControl Lib "kernel32" ( _
ByVal hDevice As Integer, _
ByVal dwIoControlCode As Integer, _
ByRef lpInBuffer As Integer, _
ByVal nInBufferSize As Integer, _
ByRef lpOutBuffer As Byte, _
ByVal nOutBufferSize As Integer, _
ByRef lpBytesReturned As Integer, _
ByVal lpOverlapped As Integer _
) As Integer
Public Declare Function CloseHandle Lib "kernel32" ( _
ByVal hObject As Short _
) As Short
Const NULL = 0
Const IOCTL_EZUSB_BULK_WRITE = ((&H220000) + ((&H800 + 20) * 4) + 1)
Const IOCTL_EZUSB_BULK_READ = ((&H220000) + ((&H800 + 19) * 4) + 2)
Const GENERIC_READ = &H80000000 '撉傒庢傝梡掕悢
Const GENERIC_WRITE = &H40000000 '彂偒崬傒梡掕悢
Const OPEN_EXISTING = 3 '婛懚偺僼傽僀儖偺張棟曽朄
Const FILE_SHARE_WRITE = &H2
Const INPIPENUMBER = 2 ' IN僷僀僾斣崋
Const INPACKETSIZE = 8 ' IN僷働僢僩僒僀僘
Const OUTPIPENUMBER = 0 ' OUT僷僀僾斣崋
Const OUTPACKETSIZE = 1 ' OUT僷働僢僩僒僀僘
Const PIPESIZE = 4 ' 僷僀僾忣曬僨乕僞僒僀僘
Dim hDevice As Short ' 僨僶僀僗僴儞僪儖
Dim ledvram(8) As Byte ' LED夋柺梡僶僢僼傽
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
CloseHandle(hDevice) '夞慄偺僋儘乕僘
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'夞慄偺僆乕僾儞
hDevice = CreateFile( _
"\\.\ezusb-0", _
GENERIC_WRITE + GENERIC_READ, _
FILE_SHARE_WRITE, _
NULL, _
OPEN_EXISTING, _
0, _
NULL _
)
If (hDevice < 0) Then
MsgBox("Can't use USB Device", vbCritical) '僆乕僾儞偵幐攕
End
End If
Me.DoubleBuffered = True
Timer1.Interval = 100 '僞僀儅偺僗僞乕僩
Timer1.Enabled = True
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
'LED夋柺峏怴
Dim dx As Short
Dim dy As Short
Dim x, y As Short
e.Graphics.FillRectangle(Brushes.Black, 0, 0, Me.Width, Me.Height)
dx = (Me.Width - 10) / 8
dy = (Me.Height - 40) / 8
For y = 0 To 7
For x = 0 To 7
If (ledvram(y) And (2 ^ (7 - x))) Then
e.Graphics.FillRectangle(Brushes.Red, x * dx, y * dy, dx - 1, dy - 1) 'LED揰摂
Else
e.Graphics.FillRectangle(Brushes.Gray, x * dx, y * dy, dx - 1, dy - 1) 'LED徚摂
End If
Next
Next
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'僞僀儅僀儀儞僩
Dim outData(OUTPACKETSIZE) As Byte '僨乕僞揮憲僶僢僼傽 PC-->USB Device
Dim inData(INPACKETSIZE) As Byte '僨乕僞揮憲僶僢僼傽 PC<--USB Device
Dim PipeNum As Integer
Dim ByteCnt As Integer
Dim result As Integer
Dim i As Short
outData(0) = 0
'僨乕僞揮憲 PC --> USB Device
PipeNum = OUTPIPENUMBER
result = DeviceIoControl( _
hDevice, _
IOCTL_EZUSB_BULK_WRITE, _
PipeNum, PIPESIZE, _
outData(0), OUTPACKETSIZE, _
ByteCnt, _
0 _
)
'僨乕僞揮憲 PC <-- USB Device
PipeNum = INPIPENUMBER
result = DeviceIoControl( _
hDevice, _
IOCTL_EZUSB_BULK_READ, _
PipeNum, PIPESIZE, _
inData(0), _
INPACKETSIZE, _
ByteCnt, _
0 _
)
'LED夋柺僶僢僼傽傪峏怴
For i = 0 To 7
ledvram(i) = inData(i)
Next
Me.Refresh() '夋柺峏怴
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -