📄 form1.vb
字号:
Public Class Form1
'EZUSB-FX2斉 妛廗儕儌僐儞梡捠怣僾儘僌儔儉 for VB.NET
' by 徏尨戱栫
'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 Integer) As Integer
Const IRNUMMAX = 3 '愒奜慄斣崋嵟戝
Const IRBUFFSIZE = 63 '愒奜慄妛廗僨乕僞僒僀僘
Const PACKETSIZE = 64 'IN/OUT僷働僢僩僒僀僘
Dim irbuff(IRNUMMAX, IRBUFFSIZE) As Byte '愒奜慄妛廗僨乕僞
Dim tData(PACKETSIZE) As Byte '憲怣僨乕僞僶僢僼傽
Dim rData(PACKETSIZE) As Byte '庴怣僨乕僞僶僢僼傽
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub connect_ezusb(ByVal sendcnt As Short, ByVal recvcnt As Short)
'EZUSB-FX2偲偺捠怣乮憲怣僶僀僩悢,庴怣僶僀僩悢乯
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 PIPESIZE = 4 '僷僀僾忣曬僨乕僞僒僀僘
Const FILE_SHARE_WRITE = &H2
Const OUTPIPENUMBER = 0 'OUT僷僀僾斣崋
Const INPIPENUMBER = 2 'IN僷僀僾斣崋
Dim hDevice As Short '僨僶僀僗僴儞僪儖
Dim lPipeNum As Integer '僷僀僾斣崋
Dim lByteCnt As Integer '揮憲僶僀僩悢
'夞慄偺僆乕僾儞
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
'僨乕僞揮憲 PC --> USB Device
lPipeNum = OUTPIPENUMBER
DeviceIoControl( _
hDevice, IOCTL_EZUSB_BULK_WRITE, _
lPipeNum, PIPESIZE, tData(0), sendcnt, lByteCnt, 0 _
)
If recvcnt > 0 Then '庴怣僨乕僞偑偁傞応崌
'僨乕僞揮憲 PC <-- USB Device
lPipeNum = INPIPENUMBER
DeviceIoControl( _
hDevice, IOCTL_EZUSB_BULK_READ, _
lPipeNum, PIPESIZE, rData(0), recvcnt, lByteCnt, 0 _
)
End If
CloseHandle(hDevice) '夞慄偺僋儘乕僘
End Sub
Private Sub ir_get(ByVal irnum As Short)
'愒奜慄僨乕僞庴怣
Dim i As Integer
Me.Text = "僨乕僞庴怣拞..."
tData(0) = 0 '0僶僀僩栚偵僐儅儞僪
connect_ezusb(1, IRBUFFSIZE) 'EZUSB偲偺捠怣
For i = 0 To IRBUFFSIZE - 1 '庴怣僨乕僞傪妛廗僨乕僞偵僐僺乕
irbuff(irnum, i) = rData(i)
Next
Me.Refresh() '夋柺偺峏怴
Me.Text = "...僨乕僞庴怣姰椆"
End Sub
Private Sub ir_put(ByVal irnum As Short)
'愒奜慄僨乕僞憲怣
Dim i As Integer
Me.Text = "僨乕僞憲怣拞..."
tData(0) = 1 '0僶僀僩栚偵僐儅儞僪
For i = 0 To IRBUFFSIZE - 1 '妛廗僨乕僞傪憲怣僨乕僞偵僐僺乕
tData(i + 1) = irbuff(irnum, i)
Next
connect_ezusb(IRBUFFSIZE + 1, 0) 'EZUSB偲偺捠怣
Me.Text = "...僨乕僞憲怣姰椆"
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ir_get(0)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
ir_put(0)
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
' 妛廗僨乕僞偺僌儔僼昞帵
Const IR_X1 = 40
Const IR_Y1 = 50
Const IR_HEIGHT = 50
Const IR_PITCH = 110
Dim irnum As Short
Dim i As Short
Dim x, y As Short
Dim bitnum As Short
For irnum = 0 To IRNUMMAX - 1
x = 0
y = irnum * IR_PITCH + IR_Y1
For i = 0 To IRBUFFSIZE - 1
For bitnum = 7 To 0 Step -1
If (irbuff(irnum, i) And (2 ^ bitnum)) Then '價僢僩偑1偺応崌
e.Graphics.DrawLine(Pens.Black, IR_X1 + x, y, IR_X1 + x, y + IR_HEIGHT) '崟儔僀儞昤夋
End If
x = x + 1
Next
Next
e.Graphics.DrawLine(Pens.Black, IR_X1, y + IR_HEIGHT, IR_X1 + x, y + IR_HEIGHT) '墶偵崟儔僀儞昤夋
Next
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
ir_get(1)
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
ir_put(1)
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
ir_get(2)
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
ir_put(2)
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -