📄 form1.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 + -