Created
April 1, 2019 05:03
-
-
Save MarkZhangTW/f51ba910351fcbd22c9438ec338b2796 to your computer and use it in GitHub Desktop.
電腦硬體裝修 乙級 VB6
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
' 宣告 在檔案 USBIO.dll 所定義的 "OpenUsbDevice" 函數,有兩個整數參數(VenderID, ProductID),會回傳 True: 代表電路板有連接 False: 代表電路板沒有連接 | |
Private Declare Function OpenUsbDevice Lib "USBIO.dll" (ByVal VenderID As Integer, ByVal ProductID As Integer) As Boolean | |
' 宣告 在檔案 USBIO.dll 所定義的 "OutDataCtrl" 子程序,有兩個整數參數 | |
Private Declare Sub OutDataCtrl Lib "USBIO.dll" (ByVal Data As Byte, ByVal Control As Byte) | |
Dim Red As Boolean ' 定義 是否為紅燈亮 的 布林(True or False)變數 | |
Dim LEDs(15) As Integer ' 定義 LED 燈號動作 的 整數陣列 | |
Dim Step As Integer ' 定義 目前在第幾個動作 的 整數變數 | |
Dim StepNumber As Integer ' 定義 有幾個動作 的 整數變數 | |
Private Sub ExitButton_Click() | |
End ' 點擊 EXIT 按鈕時 結束程式 | |
End Sub | |
Private Sub RedButton_Click() ' 點擊 RED 按鈕時 | |
Red = True ' 設定目前為紅色燈亮 | |
One ' 紅燈統一用 第一題 的動作 | |
End Sub | |
Private Sub GreenButton_Click() ' 點擊 GREEN 按鈕時 | |
Red = False ' 設定目前為綠色燈亮 | |
Two ' 假設現在為第二題 | |
End Sub | |
Private Sub StepTimer_Timer() | |
' 顯示現在時間 | |
TimeText.Text = "Current Time : " & Time$ | |
' 清除畫面 & 電路板 | |
If Not OpenUsbDevice(&H1234, &H6789) Then Exit Sub ' 如果未連接電路板就 離開程序 | |
For i = 0 To 7 ' 重置畫面上的所有燈號 | |
RedLED(i).FillStyle = 0 ' 將畫面上 第i個 RedLED 的填滿格式設為 實心 | |
GreenLED(i).FillStyle = 0 ' 將畫面上 第i個 GreenLED 的填滿格式設為 實心 | |
RedLED(i).FillColor = RGB(99, 0, 0) ' 將畫面上 第i個 RedLED 的填滿顏色改成 暗紅色 | |
GreenLED(i).FillColor = RGB(0, 99, 0) ' 將畫面上 第i個 GreenLED 的填滿顏色改成 暗綠色 | |
Next i | |
OutDataCtrl 0, 0 ' 將綠燈全部熄滅 | |
OutDataCtrl 0, 16 ' 將紅燈全部熄滅 | |
' 試題燈號運作 | |
If Step < StepNumber Then ' 如果 目前步數 小於 最大步數 就執行以下的程式碼 | |
For i = 0 To 7 ' 設定螢幕畫面上的八個 LED | |
If LEDs(Step) And 2 ^ i Then ' 如果 目前燈號的 第i個 位元為1 就把畫面上 第i個 LED 燈打開 | |
If Red Then RedLED(i).FillColor = RGB(255, 0, 0) ' 如果目前為 紅色燈亮 讓 第i個 RedLED 亮紅燈 | |
If Not Red Then GreenLED(i).FillColor = RGB(0, 255, 0) ' 如果目前為 綠色燈亮 讓 第i個 GreenLED 亮綠燈 | |
End If | |
Next i | |
If Red Then ' 如果目前為 紅色燈亮 設定電路板上的 紅色LED 的燈號 | |
OutDataCtrl LEDs(Step), 32 | |
OutDataCtrl LEDs(Step), 48 | |
Else: OutDataCtrl LEDs(Step), 0 ' 設定電路板上的 綠色LED 的燈號 | |
End If | |
End If | |
Step = Step + 1 ' 每隔 1 秒跳到下一步 | |
End Sub | |
Sub One() ' 第一題: 從第一個燈(最右邊)依序亮到最後一個登(最左邊) | |
Step = 0 ' 重設步數 | |
StepNumber = 8 ' 第一二題總共有 8 個動作 | |
LEDs(0) = 1 ' 第 1 個(bit)燈亮 | |
LEDs(1) = 2 ' 第 2 個燈亮 | |
LEDs(2) = 4 ' 第 3 個燈亮 | |
LEDs(3) = 8 ' 第 4 個燈亮 | |
LEDs(4) = 16 ' 第 5 個燈亮 | |
LEDs(5) = 32 ' 第 6 個燈亮 | |
LEDs(6) = 64 ' 第 7 個燈亮 | |
LEDs(7) = 128 ' 第 8 個燈亮 | |
End Sub | |
Sub Two() ' 第二題: 從最左邊依序亮到最右邊 | |
Step = 0 | |
StepNumber = 8 | |
LEDs(0) = 128 | |
LEDs(1) = 64 | |
LEDs(2) = 32 | |
LEDs(3) = 16 | |
LEDs(4) = 8 | |
LEDs(5) = 4 | |
LEDs(6) = 2 | |
LEDs(7) = 1 | |
End Sub | |
Sub Three() ' 從最右邊依序亮到最左邊,一次亮兩個燈 | |
Step = 0 | |
StepNumber = 7 ' 三四題七個動作 | |
LEDs(0) = 3 ' 第 1 跟 第 2 個(bit)燈亮 => 11(2進位) = 3(10進位) | |
LEDs(1) = 6 ' 2, 3 => 110(2) = 6 | |
LEDs(2) = 12 ' 3, 4 => 1100(2) = 12 | |
LEDs(3) = 24 ' 4, 5 => 11000(2) = 24 | |
LEDs(4) = 48 ' 5, 6 => 110000(2) = 48 | |
LEDs(5) = 96 ' 6, 7 => 1100000(2) = 96 | |
LEDs(6) = 192 ' 7, 8 => 11000000(2) | |
End Sub | |
Sub Four() ' 從最左邊依序亮到最又邊,一次亮兩個燈 | |
Step = 0 | |
StepNumber = 7 | |
LEDs(0) = 192 | |
LEDs(1) = 96 | |
LEDs(2) = 48 | |
LEDs(3) = 24 | |
LEDs(4) = 12 | |
LEDs(5) = 6 | |
LEDs(6) = 3 | |
End Sub | |
Sub Five() ' 最右邊開始亮,從一個燈亮到八個燈 | |
Step = 0 | |
StepNumber = 8 ' 五六題八個動作 | |
LEDs(0) = 1 ' 00000001(2) | |
LEDs(1) = 3 ' 00000011(2) = 3 | |
LEDs(2) = 7 ' 00000111(2) = 7 | |
LEDs(3) = 15 ' 00001111(2) = 15 | |
LEDs(4) = 31 ' 00011111(2) = 31 | |
LEDs(5) = 63 ' 00111111(2) = 63 | |
LEDs(6) = 127 ' 01111111(2) = 127 | |
LEDs(7) = 255 ' 11111111(2) | |
End Sub | |
Sub Six() ' 從最左邊開始亮,從一個燈亮到八個燈 | |
Step = 0 | |
StepNumber = 8 | |
LEDs(0) = 128 ' 10000000(2) = 128 | |
LEDs(1) = 255 - 63 '11000000(2) = 11111111(2) - 111111(2) = 255 - 63 | |
LEDs(2) = 255 - 31 '11100000(2) = 11111111(2) - 11111(2) | |
LEDs(3) = 255 - 15 '11110000(2) = 11111111(2) - 1111(2) | |
LEDs(4) = 255 - 7 ' 11111000(2) = 11111111(2) - 111(2) | |
LEDs(5) = 255 - 3 ' 11111100(2) = 11111111(2) - 11(2) | |
LEDs(6) = 255 - 1 ' 11111110(2) | |
LEDs(7) = 255 ' 11111111(2) | |
End Sub | |
Sub Seven() ' 一次亮兩個燈,由內往外擴散 | |
Step = 0 | |
StepNumber = 4 ' 七八題四個動作 | |
LEDs(0) = 8 + 16 ' 00011000(2) = 00010000(2) + 00001000(2) = 16 + 8 | |
LEDs(1) = 4 + 32 ' 00100100(2) | |
LEDs(2) = 2 + 64 ' 01000010(2) | |
LEDs(3) = 1 + 128 ' 10000001(2) | |
End Sub | |
Sub Eight() ' 一次亮兩個燈,由外往內擴散 | |
Step = 0 | |
StepNumber = 4 | |
LEDs(0) = 1 + 128 ' 10000001(2) | |
LEDs(1) = 2 + 64 ' 01000010(2) | |
LEDs(2) = 4 + 32 ' 00100100(2) | |
LEDs(3) = 8 + 16 ' 00011000(2) | |
End Sub | |
Sub Nine() ' 從最右邊依序亮到最左邊,再依序亮到最右邊,請參考第一二題 | |
Step = 0 | |
StepNumber = 15 ' 九十題十五個動作 | |
LEDs(0) = 1 | |
LEDs(1) = 2 | |
LEDs(2) = 4 | |
LEDs(3) = 8 | |
LEDs(4) = 16 | |
LEDs(5) = 32 | |
LEDs(6) = 64 | |
LEDs(7) = 128 | |
LEDs(8) = 64 | |
LEDs(9) = 32 | |
LEDs(10) = 16 | |
LEDs(11) = 8 | |
LEDs(12) = 4 | |
LEDs(13) = 2 | |
LEDs(14) = 1 | |
End Sub | |
Sub Ten() ' 從最左邊依序亮到最又邊,再依序亮到最左邊 | |
Step = 0 | |
StepNumber = 15 | |
LEDs(0) = 128 | |
LEDs(1) = 64 | |
LEDs(2) = 32 | |
LEDs(3) = 16 | |
LEDs(4) = 8 | |
LEDs(5) = 4 | |
LEDs(6) = 2 | |
LEDs(7) = 1 | |
LEDs(8) = 2 | |
LEDs(9) = 4 | |
LEDs(10) = 8 | |
LEDs(11) = 16 | |
LEDs(12) = 32 | |
LEDs(13) = 64 | |
LEDs(14) = 128 | |
End Sub |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment