⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.vb

📁 红外线的发射与接收 ezusb应用 有电路图
💻 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 + -