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

📄 form1.vb

📁 vbsicusb电光板的控制与显示 ezusb使用接口
💻 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 BBS_WIDTH = 100   '揹岝宖帵斅偺壖憐夋柺
    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 OUTPIPENUMBER = 0             'OUT僷僀僾斣崋
    Const OUTPACKETSIZE = 8             'OUT僷働僢僩僒僀僘
    Const PIPESIZE = 4                  '僷僀僾忣曬僨乕僞僒僀僘

    Dim hDevice As Short
    Dim bbsdata(BBS_WIDTH) As Byte
    Dim ledvram(8) As Byte
    Dim bbs_x As Short                  '揹岝宖帵斅偺愗傝弌偟X嵗昗
    Dim bbs_xmax As Short

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        '暥帤楍傪僨乕僞揮憲
        Dim font1 As New Font("俵俽丂僑僔僢僋", 8, GraphicsUnit.Pixel)
        Dim img As New Bitmap(BBS_WIDTH, 8)             'Bitmap僆僽僕僃僋僩偺嶌惉
        Dim gr As Graphics = Graphics.FromImage(img)    'img偺Graphics僆僽僕僃僋僩傪庢摼
        Dim x, y As Short
        Dim c As Color
        Dim gp As Graphics = PictureBox1.CreateGraphics()

        '敀偵揾傝偮傇偡
        gr.FillRectangle(Brushes.White, gr.VisibleClipBounds)
        gp.FillRectangle(Brushes.White, gp.VisibleClipBounds)

        gr.DrawString(TextBox1.Text, font1, Brushes.Black, 0, 0)
        gp.DrawString(TextBox1.Text, font1, Brushes.Black, 0, 0)

        '暥帤楍傪僨乕僞壔
        For x = 0 To BBS_WIDTH - 1
            bbsdata(x) = 0
            For y = 0 To 7
                c = img.GetPixel(x, y)
                If c.GetBrightness() > 0.7 Then
                Else
                    bbsdata(x) = bbsdata(x) Or (2 ^ y)
                End If
            Next
        Next

        img.Dispose()
        font1.Dispose() ' Font僆僽僕僃僋僩傪攋婞偟傑偡丅
        gr.Dispose()
        gp.Dispose()

        bbs_x = 0
    End Sub


    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    '夋柺峏怴偺僟僽儖僶僢僼傽壔

        bbs_x = 0                   '昞帵僨乕僞偺僇僂儞僞傪僋儕傾
        Timer1.Interval = 300       '僞僀儅偺僗僞乕僩
        Timer1.Enabled = True
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        '僞僀儅僀儀儞僩
        Dim PipeNum As Integer
        Dim ByteCnt As Integer
        Dim result As Integer
        Dim y As Short

        bbs_x = bbs_x + 1
        If ((BBS_WIDTH - 8) <= bbs_x) Then bbs_x = 0

        '-----------------昞帵僨乕僞 嵍僔僼僩
        For y = 0 To 7
            ledvram(y) = (ledvram(y) * 2) And &HFF
        Next

        '-----------------昞帵僨乕僞
        For y = 0 To 7
            If (bbsdata(bbs_x) And (2 ^ y)) Then
                ledvram(y) = ledvram(y) Or 1
            End If
        Next
        '僨乕僞揮憲 PC --> USB Device
        PipeNum = OUTPIPENUMBER
        result = DeviceIoControl( _
            hDevice, _
            IOCTL_EZUSB_BULK_WRITE, _
            PipeNum, PIPESIZE, _
            ledvram(0), OUTPACKETSIZE, _
            ByteCnt, _
            0 _
        )
        '------------------夋柺偺峏怴
        Me.Refresh()

    End Sub

    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        'paint僀儀儞僩
        Const LEDWIDTH = 250
        Const LEDHEIGHT = 250
        Const LEDX1 = 40
        Const LEDY1 = 20
        Dim dx As Short
        Dim dy As Short
        Dim x, y As Short

        e.Graphics.FillRectangle(Brushes.Black, LEDX1, LEDY1, LEDWIDTH, LEDHEIGHT)
        dx = LEDWIDTH / 8
        dy = LEDHEIGHT / 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 + LEDX1, y * dy + LEDY1, dx - 1, dy - 1)   'LED揰摂
                Else
                    e.Graphics.FillRectangle(Brushes.Gray, x * dx + LEDX1, y * dy + LEDY1, dx - 1, dy - 1)  'LED徚摂
                End If
            Next
        Next
    End Sub
End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -