📄 frmmain.frm
字号:
BackStyle = 0 'Transparent
Caption = "测试区"
Height = 180
Left = 2880
TabIndex = 5
Top = 660
Width = 540
End
Begin VB.Label Label2
AutoSize = -1 'True
BackStyle = 0 'Transparent
Caption = "发行代码"
Height = 180
Left = 2880
TabIndex = 2
Top = 240
Width = 720
End
Begin VB.Label Label1
AutoSize = -1 'True
BackStyle = 0 'Transparent
Caption = "厂商代码"
Height = 180
Left = 240
TabIndex = 1
Top = 240
Width = 720
End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private Sub btnBeginPersionalize_Click()
'检查个人化状态
Dim hr As Long
Dim bPer As Long
hr = SC1604_TestPersonalize(hPort, bPer)
If hr <> 0 Then
If bPer <> 0 Then
MsgBox "卡已处在个人化状态!"
Exit Sub
End If
Else
ReportError
End If
'开启个人化状态
If SC1604_BeginPersonalize(hPort) <> 0 Then
MsgBox "操作完成!"
Else
ReportError
Exit Sub
End If
End Sub
Private Sub btnCancel_Click()
Unload Me
End Sub
Private Sub btnConnect_Click()
Dim ATR(4) As Byte
If 0 = SC_Connect(hPort, "SC1604", "", ATR(0)) Then
ReportError
Exit Sub
Else
MsgBox "Connect OK!"
End If
Dim hr As Long
Dim buf(128) As Byte
Dim strHex As String
'读厂商代码
hr = SC1604_ReadZone(hPort, SC1604ZONE_FZ, 0, buf(0), 2)
If hr <> 0 Then
strHex = Space(4)
SCHelp_BytesToHexString buf(0), 2, strHex
txtFactory.Text = strHex
Else
ReportError
Exit Sub
End If
'发行代码
hr = SC1604_ReadZone(hPort, SC1604ZONE_IZ, 0, buf(0), 8)
If hr = 0 Then
ReportError
Exit Sub
Else
strHex = Space(16)
SCHelp_BytesToHexString buf(0), 8, strHex
txtIssue.Text = strHex
End If
'测试区
hr = SC1604_ReadZone(hPort, SC1604ZONE_MTZ, 0, buf(0), 2)
If hr = 0 Then
ReportError
Exit Sub
Else
strHex = Space(4)
SCHelp_BytesToHexString buf(0), 2, strHex
txtMTZ.Text = strHex
End If
'读总密码错误计数区
hr = SC1604_ReadZone(hPort, SC1604ZONE_SCAC, 0, buf(0), 1)
If hr = 0 Then
ReportError
Exit Sub
Else
strHex = Space(2)
SCHelp_BytesToHexString buf(0), 1, strHex
txtSCAC.Text = strHex
End If
End Sub
Private Sub btnDisConnect_Click()
If 0 = SC_DisConnect(hPort, 0) Then
ReportError
End If
End Sub
Private Sub btnEndPersionalize_Click()
'检查个人化状态
Dim hr As Long
Dim bPer As Long
hr = SC1604_TestPersonalize(hPort, bPer)
If hr <> 0 Then
If bPer = 0 Then
MsgBox "卡不处在个人化状态!"
Exit Sub
End If
Else
ReportError
End If
'关闭个人化状态
If SC1604_ClosePersonalize(hPort) <> 0 Then
MsgBox "操作完成!"
Else
ReportError
Exit Sub
End If
End Sub
Private Sub btnFuse_Click()
If vbOK <> MsgBox("该操作不可逆,确实要执行熔丝操作吗?!", vbOKCancel) Then Exit Sub
If SC1604_Fuse(hPort) <> 0 Then
MsgBox "熔丝操作完成!"
Else
ReportError
End If
Exit Sub
ErrFlag:
MsgBox Err.Description
End Sub
Private Sub btnReadAZ_Click()
Dim hr As Long
If cmbDataBuf.ListIndex < 0 Then Exit Sub
Me.MousePointer = vbHourglass
Dim PageLen As Long
PageLen = cmbDataBuf.ItemData(0) - CLng(txtAddrPage.Text) * 128
If PageLen > 128 Then PageLen = 128
Select Case cmbDataBuf.ListIndex
Case 0
hr = SC1604_ReadZone(hPort, SC1604ZONE_AZ1, CLng(txtAddrPage.Text) * 128, DataBuffer(0), PageLen)
Case 1
hr = SC1604_ReadZone(hPort, SC1604ZONE_AZ2, CLng(txtAddrPage.Text) * 128, DataBuffer(0), PageLen)
Case 2
hr = SC1604_ReadZone(hPort, SC1604ZONE_AZ3, CLng(txtAddrPage.Text) * 128, DataBuffer(0), PageLen)
Case 3
hr = SC1604_ReadZone(hPort, SC1604ZONE_AZ4, CLng(txtAddrPage.Text) * 128, DataBuffer(0), PageLen)
End Select
If hr <> 0 Then
hexDataBuf.Text = GetDataBufferString(PageLen)
MsgBox "读操作完成!"
Else
ReportError
End If
Me.MousePointer = vbArrow
End Sub
Private Sub btnModifySC_Click()
Dim buf(128) As Byte
Dim hr As Long
SCHelp_HexStringToBytes txtSC.Text, buf(0), 2
hr = SC1604_ChangePwd(hr, SC1604ZONE_SC, buf(0), buf(1))
If hr <> 0 Then
MsgBox "密码更改成功!"
Else
ReportError
End If
End Sub
Private Sub btnReadCPZ_Click()
Dim hr As Long
Dim buf(128) As Byte
hr = SC1604_ReadZone(hPort, SC1604ZONE_CPZ, 0, buf(0), 8)
If hr = 0 Then
ReportError
Else
Dim strHex As String
strHex = Space(16)
SCHelp_BytesToHexString buf(0), 8, strHex
txtCPZ.Text = strHex
MsgBox "操作完成!"
End If
End Sub
Private Sub btnReadECX_Click()
Dim hr As Long
Dim buf(2) As Byte
Select Case cmbDataBuf.ListIndex
Case 0
hr = SC1604_ReadZone(hPort, SC1604ZONE_EZ1, 0, buf(0), 2)
Case 1
hr = SC1604_ReadZone(hPort, SC1604ZONE_EZ2, 0, buf(0), 2)
Case 2
hr = SC1604_ReadZone(hPort, SC1604ZONE_EZ3, 0, buf(0), 2)
Case 3
hr = SC1604_ReadZone(hPort, SC1604ZONE_EZ4, 0, buf(0), 2)
End Select
If hr = 0 Then
ReportError
Else
Dim strHex As String
strHex = Space(4)
SCHelp_BytesToHexString buf(0), 2, strHex
txtECX.Text = strHex
MsgBox "操作完成!"
End If
End Sub
Private Sub btnReadIZ_Click()
Dim hr As Long
Dim buf(8) As Byte
hr = SC1604_ReadZone(hPort, SC1604ZONE_IZ, 0, buf(0), 8)
If hr = 0 Then
ReportError
Else
Dim strHex As String
strHex = Space(16)
SCHelp_BytesToHexString buf(0), 8, strHex
txtIssue.Text = strHex
MsgBox "操作完成!"
End If
End Sub
Private Sub btnReadMTZ_Click()
Dim hr As Long
Dim buf(2) As Byte
hr = SC1604_ReadZone(hPort, SC1604ZONE_MTZ, 0, buf(0), 2)
If hr = 0 Then
ReportError
Else
Dim strHex As String
strHex = Space(4)
SCHelp_BytesToHexString buf(0), 2, strHex
txtMTZ.Text = strHex
MsgBox "操作完成!"
End If
End Sub
Private Sub btnReadSC_Click()
Dim hr As Long
Dim buf(2) As Byte
hr = SC1604_ReadZone(hPort, SC1604ZONE_SC, 0, buf(0), 2)
If hr = 0 Then
ReportError
Else
Dim strHex As String
strHex = Space(4)
SCHelp_BytesToHexString buf(0), 2, strHex
txtSC.Text = strHex
MsgBox "操作完成!"
End If
End Sub
Private Sub btnReadSCX_Click()
Dim hr As Long
Dim buf(2) As Byte
Select Case cmbDataBuf.ListIndex
Case 0
hr = SC1604_ReadZone(hPort, SC1604ZONE_SC1, 0, buf(0), 2)
Case 1
hr = SC1604_ReadZone(hPort, SC1604ZONE_SC2, 0, buf(0), 2)
Case 2
hr = SC1604_ReadZone(hPort, SC1604ZONE_SC3, 0, buf(0), 2)
Case 3
hr = SC1604_ReadZone(hPort, SC1604ZONE_SC4, 0, buf(0), 2)
End Select
If hr = 0 Then
ReportError
Else
Dim strHex As String
strHex = Space(4)
SCHelp_BytesToHexString buf(0), 2, strHex
txtSCX.Text = strHex
MsgBox "操作完成!"
End If
End Sub
Private Sub btnVerifySC_Click()
Dim buf(128) As Byte
Dim hr As Long
SCHelp_HexStringToBytes txtSC.Text, buf(0), 2
hr = SC1604_Verify(hr, SC1604ZONE_SC, buf(0), buf(1))
If hr Then
MsgBox "校验成功!"
Else
ReportError
End If
hr = SC1604_ReadZone(hPort, SC1604ZONE_SCAC, 0, buf(0), 1)
If hr <> 0 Then
Dim strHex As String
strHex = Space(2)
SCHelp_BytesToHexString buf(0), 1, strHex
txtSCAC.Text = strHex
End If
End Sub
Private Sub btnWriteAZ_Click()
Dim PageLen As Long
PageLen = cmbDataBuf.ItemData(0) - CLng(txtAddrPage.Text) * 128
If PageLen > 128 Then PageLen = 128
SCHelp_HexStringToBytes hexDataBuf.Text, DataBuffer(0), PageLen
Dim bOK As Long
Select Case cmbDataBuf.ListIndex
Case 0
bOK = SC1604_WriteZone(hPort, SC1604ZONE_AZ1, CLng(txtAddrPage.Text) * 128, DataBuffer(0), PageLen)
Case 1
bOK = SC1604_WriteZone(hPort, SC1604ZONE_AZ2, CLng(txtAddrPage.Text) * 128, DataBuffer(0), PageLen)
Case 2
bOK = SC1604_WriteZone(hPort, SC1604ZONE_AZ3, CLng(txtAddrPage.Text) * 128, DataBuffer(0), PageLen)
Case 3
bOK = SC1604_WriteZone(hPort, SC1604ZONE_AZ4, CLng(txtAddrPage.Text) * 128, DataBuffer(0), PageLen)
End Select
If bOK <> 0 Then
MsgBox "写操作完成!"
Else
ReportError
End If
End Sub
Private Sub btnWriteCPZ_Click()
Dim buf(128) As Byte
Dim hr As Long
SCHelp_HexStringToBytes txtCPZ.Text, buf(0), 8
hr = SC1604_WriteZone(hPort, SC1604ZONE_CPZ, 0, buf(0), 8)
If hr <> 0 Then
MsgBox "写操作完成!"
Else
ReportError
Exit Sub
End If
End Sub
Private Sub btnWriteIZ_Click()
Dim buf(128) As Byte
Dim hr As Long
SCHelp_HexStringToBytes txtIssue.Text, buf(0), 8
hr = SC1604_WriteZone(hPort, SC1604ZONE_IZ, 0, buf(0), 8)
If hr <> 0 Then
MsgBox "写操作完成!"
Else
ReportError
Exit Sub
End If
End Sub
Private Sub btnWriteMTZ_Click()
Dim buf(128) As Byte
Dim hr As Long
SCHelp_HexStringToBytes txtMTZ.Text, buf(0), 2
hr = SC1604_WriteZone(hPort, SC1604ZONE_MTZ, 0, buf(0), 2)
If hr <> 0 Then
MsgBox "写操作完成!"
Else
ReportError
Exit Sub
End If
End Sub
Private Sub cmbCardType_Click()
If cmbCardType.ListIndex = 0 Then
SC1604_SetSubType hPort, ICCSUBTYPE_SC1604N
cmbDataBuf.ItemData(0) = 1195
cmbDataBuf.ItemData(1) = 256
cmbDataBuf.ItemData(2) = 256
cmbDataBuf.ItemData(3) = 256
Else
SC1604_SetSubType hPort, ICCSUBTYPE_SC1604E
cmbDataBuf.ItemData(0) = 512
cmbDataBuf.ItemData(1) = 512
cmbDataBuf.ItemData(2) = 512
cmbDataBuf.ItemData(3) = 512
End If
cmbDataBuf.ListIndex = 0
If (cmbDataBuf.ItemData(0) - CLng(txtAddrPage.Text) * 128) < 128 Then
hexDataBuf.BufferSize = cmbDataBuf.ItemData(0) - CLng(txtAddrPage.Text) * 128
Else
hexDataBuf.BufferSize = 128
End If
End Sub
Private Sub cmbDataBuf_click()
If cmbDataBuf.ListIndex < 0 Then Exit Sub
If (cmbDataBuf.ItemData(0) - CLng(txtAddrPage.Text) * 128) < 128 Then
hexDataBuf.BufferSize = cmbDataBuf.ItemData(0) - CLng(txtAddrPage.Text) * 128
Else
hexDataBuf.BufferSize = 128
End If
txtAddrPage.Text = "0"
udAddrPage.Max = (cmbDataBuf.ItemData(cmbDataBuf.ListIndex) + 127) \ 128 - 1
End Sub
Private Sub Form_Load()
OpenReader
cmbCardType.ListIndex = 0
'读子卡型
If SC1604_GetSubType(hPort) = ICCSUBTYPE_SC1604E Then
cmbCardType.ListIndex = 1
Else
cmbCardType.ListIndex = 0
End If
End Sub
Private Sub txtAddrPage_Change()
If (cmbDataBuf.ItemData(0) - CLng(txtAddrPage.Text) * 128) < 128 Then
hexDataBuf.BufferSize = cmbDataBuf.ItemData(0) - CLng(txtAddrPage.Text) * 128
Else
hexDataBuf.BufferSize = 128
End If
End Sub
Private Sub txtCPZ_KeyPress(KeyAscii As Integer)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -