📄 form1.vb
字号:
Public Class Form1
'EZ-USB FX2 壏搙幖搙寁梡捠怣僾儘僌儔儉 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
Private Function ADcount_to_v(ByVal count As Short) As Double
ADcount_to_v = 3.3 * count / 4095
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'壏搙幖搙寁應
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 OUTPIPENUMBER = 0 'OUT僷僀僾斣崋
Const INPIPENUMBER = 2 'IN僷僀僾斣崋
Const OUTPACKETSIZE = 1 'OUT僷働僢僩僒僀僘
Const INPACKETSIZE = 6 'IN僷働僢僩僒僀僘
Const PIPESIZE = 4 '僷僀僾忣曬僨乕僞僒僀僘
Const FILE_SHARE_WRITE = &H2
Const TBLRMAX = 5 '僥乕僽儖峴悢
Const TBLHMAX = 9 '僥乕僽儖楍悢
Const HUMIDMIN = 20 '幖搙僥乕僽儖撪偺嵟掅幖搙[%]
Const SENSOR_OHM = 4.7 '僙儞僒偵愙懕偟偰偄傞掞峈抣[k兌]
Const VCC = 3.3 'VCC揹埑[V]
Dim tData(OUTPACKETSIZE) As Byte 'PC-->USB Device
Dim rData(INPACKETSIZE) As Byte 'PC<--USB Device
Dim hDevice As Short
Dim lPipeNum As Integer
Dim lByteCnt As Integer
Dim vout As Double
Dim temp As Double ' 壏搙
Dim ohm As Double
Dim v1 As Double
Dim v2 As Double
Dim humid As Double ' 幖搙
Dim t, h As Short
Dim font1 As New Font("俵俽丂僑僔僢僋", 64, GraphicsUnit.Pixel)
Dim gp As Graphics = PictureBox1.CreateGraphics()
'掞峈抣-幖搙曄姺[k兌]
Dim tblHumid(,) As Double = { _
{50000, 10000, 2000, 400, 150, 45, 14, 5, 3}, _
{30000, 3000, 500, 150, 50, 20, 6.5, 2, 1.7}, _
{8000, 1000, 200, 60, 20, 8, 3, 1.5, 0.8}, _
{2500, 400, 80, 25, 10, 4, 1.8, 0.85, 0.4}, _
{900, 150, 35, 15, 5, 1.5, 1, 0.5, 0.25} _
}
'夞慄僆乕僾儞
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
tData(0) = 0 '憲怣僨乕僞
'僨乕僞揮憲 PC --> USB Device
lPipeNum = OUTPIPENUMBER
DeviceIoControl( _
hDevice, IOCTL_EZUSB_BULK_WRITE, _
lPipeNum, PIPESIZE, _
tData(0), OUTPACKETSIZE, _
lByteCnt, 0 _
)
'僨乕僞揮憲 PC <-- USB Device
lPipeNum = INPIPENUMBER
DeviceIoControl( _
hDevice, IOCTL_EZUSB_BULK_READ, _
lPipeNum, PIPESIZE, _
rData(0), INPACKETSIZE, _
lByteCnt, 0 _
)
CloseHandle(hDevice) '夞慄偺僋儘乕僘
vout = ADcount_to_v((&H100 * rData(1)) + rData(0)) '僇僂儞僩抣偐傜揹埑偵曄姺
v1 = ADcount_to_v((&H100 * rData(3)) + rData(2)) '僇僂儞僩抣偐傜揹埑偵曄姺
v2 = ADcount_to_v((&H100 * rData(5)) + rData(4)) '僇僂儞僩抣偐傜揹埑偵曄姺
'-----------------------------揹埑偐傜壏搙傊曄姺
temp = vout * 100 ' 壏搙傪嶼弌
'-----------------------------揹埑偐傜幖搙傊曄姺
If (v1 > v2) Then
ohm = v2 / ((v1 - v2) / SENSOR_OHM)
Else
ohm = (VCC - v2) / ((v2 - v1) / SENSOR_OHM)
End If
' 掞峈抣偐傜幖搙傊曄姺
t = temp
t = t - 5
If (t < 0) Then t = 0 '5亷埲壓偺応崌偼5亷愝掕
t = t / 10
If (t >= TBLRMAX) Then t = TBLRMAX - 1 '45亷埲忋偼45亷愝掕
For h = 0 To TBLHMAX - 1
If (tblHumid(t, h) < ohm) Then
If (h = 0) Then
humid = HUMIDMIN '幖搙20%埲壓側傜20%愝掕
Exit For
Else
humid = h * 10 + HUMIDMIN
humid = humid - (10 * (ohm - tblHumid(t, h)) / (tblHumid(t, h - 1) - tblHumid(t, h)))
Exit For
End If
End If
Next
If (h = TBLHMAX) Then humid = 100 '幖搙100%埲忋側傜100%愝掕
'-------------------壏搙偲幖搙傪夋柺偵昞帵
'僺僋僠儍儃僢僋僗傪敀偵揾傝偮傇偡
gp.FillRectangle(Brushes.White, gp.VisibleClipBounds)
'暥帤偺昤夋
gp.DrawString("壏搙=" + Format(temp, "##.#") + "亷", font1, Brushes.Black, 0, 0)
gp.DrawString("幖搙=" + Format(humid, "##.#") + "亾", font1, Brushes.Black, 0, 120)
font1.Dispose() ' Font僆僽僕僃僋僩傪攋婞偟傑偡丅
gp.Dispose()
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -