?? main.frm
字號:
VERSION 5.00
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form main
Caption = "021F106A-104A-108A"
ClientHeight = 6360
ClientLeft = 165
ClientTop = 735
ClientWidth = 8595
LinkTopic = "Form1"
ScaleHeight = 6360
ScaleWidth = 8595
StartUpPosition = 3 '窗口缺省
Begin MSCommLib.MSComm MSComm1
Left = 7320
Top = 840
_ExtentX = 1005
_ExtentY = 1005
_Version = 393216
DTREnable = -1 'True
End
Begin VB.CommandButton Command4
Caption = "完全重寫"
Height = 495
Left = 5760
TabIndex = 13
Top = 5400
Width = 1335
End
Begin VB.Frame Frame2
Caption = "數據欄"
Height = 3255
Left = 480
TabIndex = 5
Top = 1800
Width = 7695
Begin VB.TextBox Text2
Height = 1215
Left = 360
TabIndex = 10
Top = 1800
Width = 6855
End
Begin VB.TextBox Text1
Height = 735
Left = 360
TabIndex = 9
Top = 600
Width = 6855
End
Begin VB.Label Label2
Caption = "第三磁道"
Height = 375
Left = 360
TabIndex = 12
Top = 1560
Width = 1695
End
Begin VB.Label Label1
Caption = "第二磁道"
Height = 375
Left = 360
TabIndex = 11
Top = 360
Width = 1455
End
End
Begin VB.Frame Frame1
Caption = "磁道選擇"
Height = 975
Left = 360
TabIndex = 4
Top = 360
Width = 6615
Begin VB.OptionButton Option1
Caption = "第二磁道"
Height = 420
Left = 480
TabIndex = 8
Top = 480
Width = 1335
End
Begin VB.OptionButton Option2
Caption = "第三磁道"
Height = 420
Left = 2520
TabIndex = 7
Top = 480
Width = 1215
End
Begin VB.OptionButton Option3
Caption = "第二、三磁道"
Height = 540
Left = 4200
TabIndex = 6
Top = 360
Width = 2295
End
End
Begin VB.CommandButton Command3
Caption = "清除"
Height = 495
Left = 4080
TabIndex = 3
Top = 5400
Width = 975
End
Begin VB.CommandButton Command2
Caption = "寫數據"
Height = 495
Left = 2160
TabIndex = 2
Top = 5400
Width = 975
End
Begin VB.CommandButton Command1
Caption = "讀數據"
Height = 495
Left = 480
TabIndex = 1
Top = 5400
Width = 975
End
Begin MSComctlLib.StatusBar StatusBar1
Align = 2 'Align Bottom
Height = 315
Left = 0
TabIndex = 0
Top = 6045
Width = 8595
_ExtentX = 15161
_ExtentY = 556
_Version = 393216
BeginProperty Panels {8E3867A5-8586-11D1-B16A-00C0F0283628}
NumPanels = 3
BeginProperty Panel1 {8E3867AB-8586-11D1-B16A-00C0F0283628}
AutoSize = 1
Bevel = 0
Object.Width = 9895
EndProperty
BeginProperty Panel2 {8E3867AB-8586-11D1-B16A-00C0F0283628}
EndProperty
BeginProperty Panel3 {8E3867AB-8586-11D1-B16A-00C0F0283628}
Object.Width = 2117
MinWidth = 2117
EndProperty
EndProperty
End
Begin VB.Menu bianji
Caption = "編輯"
Begin VB.Menu chuankou
Caption = "串口"
End
Begin VB.Menu fuwei
Caption = "復位"
Shortcut = ^F
End
End
Begin VB.Menu shuju
Caption = "數據"
Begin VB.Menu duru
Caption = "讀入"
Shortcut = ^D
End
Begin VB.Menu xieka
Caption = "寫卡"
Shortcut = ^X
End
End
Begin VB.Menu exit
Caption = "退出"
End
Begin VB.Menu bangzhu
Caption = "幫助"
End
End
Attribute VB_Name = "main"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim bReady As Boolean
Dim sReadData As String
Dim iRWMode As Integer '磁道選擇標志
Dim a2 As Integer '第2磁道的數據位數
Dim a3 As Integer '第3磁道的數據位數
Private Sub Form_Load()
MSComm1.PortOpen = True
End Sub
Public Sub SoftReset()
Dim sCmd As String
sCmd = Chr(&H1B) + Chr(&H30)
SendData (sCmd)
End Sub
Public Sub SendData(sData As String)
MSComm1.Output = sData
End Sub
Public Sub ReadProcess(cRData As String)
Dim cRTChr As String
sReadData = ""
Do
cRData = MSComm1.Input
sReadData = sReadData + cRData
cRTChr = Right(sReadData, 2)
Select Case cRTChr
Case Chr(&H72) + Chr(&H70)
'接收到正確的讀寫信號
bReady = True
Case Chr(&H72) + Chr(&H71)
'接收到讀寫不正確信號
bReady = False
Exit Sub
End Select
Loop While cRTChr <> Chr(&H72) + Chr(&H70)
End Sub
Public Sub resetting()
Dim sCmd As String
sCmd = Chr(&H1B) + Chr(&H53)
StatusBar1.Panels(1).Text = "就緒"
SendData sCmd
End Sub
Public Sub ClearSPort()
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
End Sub
Public Sub Prompt(msg As String)
StatusBar1.Panels(1).Text = msg
End Sub
'讀取數據按鈕
Private Sub Command1_Click()
Dim sReadCmd As String
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
MSComm1.RThreshold = 3
Select Case iRWMode
Case 1
sReadCmd = Chr$(&H1B) & Chr$(&H5D) & Chr$(&H1B) & Chr$(&H6A)
main.SendData (sReadCmd)
Prompt "請刷卡..."
Case 2
sReadCmd = Chr$(&H1B) & Chr$(&H54) & Chr$(&H5D) & Chr$(&H1B) & Chr$(&H6A)
main.SendData (sReadCmd)
Prompt "請刷卡..."
Case 3
sReadCmd = Chr$(&H1B) & Chr$(&H42) & Chr$(&H5D) & Chr$(&H1B) & Chr$(&H6A)
main.SendData (sReadCmd)
Prompt "請刷卡..."
Case Else
MsgBox "請選擇磁道" + Err.Description, vbCritical, "提示"
End Select
End Sub
'寫入數據按鈕
Private Sub Command2_Click()
Dim sWriteCmd As String '寫數據命令
Dim sWriData As String '寫入的數據
Dim sWriData2 As String '寫入第三磁道的數據
Dim sNotifyMsg As String '提示信息
ClearSPort
'確認是否要寫入文本框中的數據
If MsgBox("確定要寫入數據嗎?", vbQuestion + vbYesNo) = vbYes Then
bReady = False
sWriteCmd = ""
Select Case iRWMode
Case 1 '寫入第二軌道的數據
If Len(Text1.Text) < 1 Then
MsgBox "請先輸入第二磁道中的數據"
Else
sWriData = Text1.Text
sWriteCmd = Chr$(&H1B) & Chr$(&H74) & sWriData & _
Chr$(&H1D) & Chr$(&H1B) & Chr$(&H5C) & Chr$(&H1B) & Chr$(&H6A)
End If
Case 2 '寫入第三軌道的數據
If Len(Text2.Text) < 1 Then
MsgBox "請先輸入第三磁道中的數據"
Else
sWriData = Text2.Text
sWriteCmd = Chr$(&H1B) & Chr$(&H74) & "A" & sWriData & _
Chr$(&H1D) & Chr$(&H1B) & Chr$(&H5C) & Chr$(&H1B) & Chr$(&H6A)
End If
Case 3 '寫入第二、三軌道的數據
If Len(Text1.Text) < 1 Or Len(Text2.Text) < 1 Then
MsgBox "請先輸入第二、三磁道中的數據"
Else
sWriData = Text1.Text
sWriData2 = Text2.Text
sWriteCmd = Chr$(&H1B) & Chr$(&H74) & sWriData & "A" & sWriData2 _
& Chr$(&H1D) & Chr$(&H1B) & Chr$(&H5C) & Chr$(&H1B) & Chr$(&H6A)
End If
End Select
Prompt "請刷卡..."
main.SendData (sWriteCmd) '發送數據
ReadProcess (cRData)
If bReady = False Then
Select Case iRWMode
Case 1
sNotifyMsg = "寫第二磁道錯誤"
Case 2
sNotifyMsg = "寫第三磁道錯誤"
Case 3
sNotifyMsg = "寫第二、三磁道錯誤"
End Select
MsgBox sNotifyMsg
Else
Prompt "寫卡成功!"
End If
End If
End Sub
'當commevent改變時
Private Sub MSComm1_OnComm()
Dim sRData As String
Dim sRData2 As String '同時讀取二三磁道數據時,用于保存第三磁道的數據
Dim lPos As Long '第三磁道的數據在整個數據中的位置
Select Case MSComm1.CommEvent
Case comEvReceive '接收數據
ReadProcess (sRData)
If bReady Then
Select Case iRWMode
Case 1
'顯示所讀取的第二磁道的數據
sReadData = Mid(sReadData, 3, Len(sReadData) - 7)
Text1.Text = Text1.Text + sReadData
Case 2
'顯示所讀取的第三磁道的數據
sReadData = Mid(sReadData, 4, Len(sReadData) - 9)
Text2.Text = Text2.Text + sReadData
Case 3
'顯示所讀取的第二、三磁道的數據
lPos = InStr(1, sReadData, "A", vbTextCompare)
If lPos > 0 Then
sRData2 = Mid(sReadData, lPos + 1, Len(sReadData) - lPos - 6)
Else
MsgBox "第三磁道數據不正確。" + sReadData, vbInformation, "提示"
End If
sReadData = Mid(sReadData, 3, lPos - 3)
Text1.Text = Text1.Text + sReadData
Text2.Text = Text2.Text + sRData2
End Select
Else
Select Case iRWMode
Case 1
sNotifyMsg = "讀寫第二磁道錯誤"
Case 2
sNotifyMsg = "讀寫第三磁道錯誤"
Case 3
sNotifyMsg = "讀寫第二、三磁道錯誤"
End Select
SoftReset
MsgBox sNotifyMsg
End If
End Select
StatusBar1.Panels(1).Text = "就緒"
End Sub
'磁道選擇
Private Sub Option1_Click()
If Option1.Value Then
iRWMode = 1
End If
End Sub
Private Sub Option2_Click()
iRWMode = 2
End Sub
Private Sub Option3_Click()
iRWMode = 3
End Sub
'清除
Private Sub Command3_Click()
Text1.Text = ""
Text1.Text = ""
End Sub
Private Sub Command4_Click()
a2 = 0
a3 = 0
Text1.Text = ""
Text2.Text = ""
End Sub
'上層選擇
Private Sub duru_Click()
Frame2.Caption = "讀數據"
Text1.Text = ""
Text2.Text = ""
Text1.Enabled = False
Text2.Enabled = False
StatusBar1.Panels(1).Text = "就緒"
Command1.Enabled = True
Command2.Enabled = False
Command3.Enabled = True
End Sub
Private Sub bangzhu_Click()
help.Show
End Sub
Private Sub chuankou_Click()
linkset.Show
Me.Hide
End Sub
Private Sub fuwei_Click()
resetting
End Sub
Private Sub exit_Click()
End
End Sub
Private Sub xieka_Click()
Frame2.Caption = "寫數據"
Text1.Text = ""
Text2.Text = ""
Text1.Enabled = True
Text2.Enabled = True
StatusBar1.Panels(1).Text = "就緒"
Command1.Enabled = False
Command2.Enabled = True
Command3.Enabled = True
End Sub
'文本點擊
Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 58
If a2 < 38 Then
a2 = a2 + 1
Else
KeyAscii = 0
End If
Case 8
If a2 > 0 Then
a2 = a2 - 1
End If
Case Else
KeyAscii = 0
End Select
StatusBar1.Panels(2).Text = Str(a2) + "/" + "38"
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 58
If a3 < 110 Then
a3 = a3 + 1
Else
KeyAscii = 0
End If
Case 8
If a3 > 0 Then
a3 = a3 - 1
End If
Case Else
KeyAscii = 0
End Select
StatusBar1.Panels(3).Text = Str(a3) + "/" + "110"
End Sub
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -