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

📄 form1.vb

📁 简单的便协式游戏机的实现
💻 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 + -