BatchSetup.frm
上传用户:djzm888
上传日期:2013-02-15
资源大小:867k
文件大小:16k
源码类别:

其他数据库

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{6B7E6392-850A-101B-AFC0-4210102A8DA7}#1.3#0"; "COMCTL32.OCX"
  3. Begin VB.Form frmNewCard 
  4.    BackColor       =   &H00C0C0C0&
  5.    BorderStyle     =   3  'Fixed Dialog
  6.    Caption         =   "发新卡"
  7.    ClientHeight    =   5295
  8.    ClientLeft      =   45
  9.    ClientTop       =   330
  10.    ClientWidth     =   5790
  11.    BeginProperty Font 
  12.       Name            =   "宋体"
  13.       Size            =   10.5
  14.       Charset         =   134
  15.       Weight          =   400
  16.       Underline       =   0   'False
  17.       Italic          =   0   'False
  18.       Strikethrough   =   0   'False
  19.    EndProperty
  20.    Icon            =   "BatchSetup.frx":0000
  21.    LinkTopic       =   "Form1"
  22.    MaxButton       =   0   'False
  23.    MinButton       =   0   'False
  24.    ScaleHeight     =   5295
  25.    ScaleWidth      =   5790
  26.    StartUpPosition =   1  '所有者中心
  27.    Begin ComctlLib.StatusBar sbrState 
  28.       Align           =   2  'Align Bottom
  29.       Height          =   315
  30.       Left            =   0
  31.       TabIndex        =   17
  32.       Top             =   4980
  33.       Width           =   5790
  34.       _ExtentX        =   10213
  35.       _ExtentY        =   556
  36.       SimpleText      =   ""
  37.       _Version        =   327682
  38.       BeginProperty Panels {0713E89E-850A-101B-AFC0-4210102A8DA7} 
  39.          NumPanels       =   1
  40.          BeginProperty Panel1 {0713E89F-850A-101B-AFC0-4210102A8DA7} 
  41.             Object.Width           =   10372
  42.             MinWidth        =   10372
  43.             Key             =   "State"
  44.             Object.Tag             =   ""
  45.             Object.ToolTipText     =   "状态提示"
  46.          EndProperty
  47.       EndProperty
  48.       BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
  49.          Name            =   "宋体"
  50.          Size            =   9
  51.          Charset         =   134
  52.          Weight          =   400
  53.          Underline       =   0   'False
  54.          Italic          =   0   'False
  55.          Strikethrough   =   0   'False
  56.       EndProperty
  57.    End
  58.    Begin VB.Frame fraSetup 
  59.       BeginProperty Font 
  60.          Name            =   "宋体"
  61.          Size            =   9
  62.          Charset         =   134
  63.          Weight          =   400
  64.          Underline       =   0   'False
  65.          Italic          =   0   'False
  66.          Strikethrough   =   0   'False
  67.       EndProperty
  68.       Height          =   4590
  69.       Left            =   210
  70.       TabIndex        =   10
  71.       Top             =   120
  72.       Width           =   3915
  73.       Begin VB.TextBox txtName 
  74.          Height          =   345
  75.          Left            =   2370
  76.          TabIndex        =   4
  77.          Top             =   2550
  78.          Width           =   1245
  79.       End
  80.       Begin VB.TextBox txtPassWord 
  81.          Height          =   345
  82.          IMEMode         =   3  'DISABLE
  83.          Left            =   2385
  84.          MaxLength       =   6
  85.          PasswordChar    =   "*"
  86.          TabIndex        =   5
  87.          Text            =   "b62307"
  88.          Top             =   3345
  89.          Width           =   1245
  90.       End
  91.       Begin VB.TextBox txtNewPassWord 
  92.          Height          =   345
  93.          Left            =   2385
  94.          MaxLength       =   6
  95.          TabIndex        =   7
  96.          Top             =   3855
  97.          Visible         =   0   'False
  98.          Width           =   1245
  99.       End
  100.       Begin VB.CheckBox chkChangePass 
  101.          Caption         =   "更改密码"
  102.          Enabled         =   0   'False
  103.          Height          =   315
  104.          Left            =   285
  105.          TabIndex        =   6
  106.          Top             =   3870
  107.          Width           =   1230
  108.       End
  109.       Begin VB.TextBox txtSetup 
  110.          Enabled         =   0   'False
  111.          Height          =   345
  112.          Index           =   3
  113.          Left            =   2370
  114.          MaxLength       =   5
  115.          TabIndex        =   3
  116.          Text            =   "0"
  117.          Top             =   1875
  118.          Width           =   1245
  119.       End
  120.       Begin VB.TextBox txtSetup 
  121.          Enabled         =   0   'False
  122.          Height          =   345
  123.          Index           =   2
  124.          Left            =   2370
  125.          MaxLength       =   3
  126.          TabIndex        =   2
  127.          Text            =   "0"
  128.          Top             =   1395
  129.          Width           =   1245
  130.       End
  131.       Begin VB.TextBox txtSetup 
  132.          Height          =   345
  133.          Index           =   1
  134.          Left            =   2370
  135.          MaxLength       =   4
  136.          TabIndex        =   1
  137.          Top             =   825
  138.          Width           =   1245
  139.       End
  140.       Begin VB.TextBox txtSetup 
  141.          Enabled         =   0   'False
  142.          Height          =   345
  143.          Index           =   0
  144.          Left            =   2370
  145.          MaxLength       =   4
  146.          TabIndex        =   0
  147.          Text            =   "WZMG"
  148.          Top             =   345
  149.          Width           =   1245
  150.       End
  151.       Begin VB.Label lblSetup 
  152.          AutoSize        =   -1  'True
  153.          Caption         =   "姓名:"
  154.          Height          =   210
  155.          Index           =   4
  156.          Left            =   285
  157.          TabIndex        =   18
  158.          Top             =   2617
  159.          Width           =   630
  160.       End
  161.       Begin VB.Label lblNewPassWord 
  162.          AutoSize        =   -1  'True
  163.          Caption         =   "新密码:"
  164.          Height          =   210
  165.          Left            =   1575
  166.          TabIndex        =   16
  167.          Top             =   3915
  168.          Visible         =   0   'False
  169.          Width           =   735
  170.       End
  171.       Begin VB.Label lblPassWord 
  172.          AutoSize        =   -1  'True
  173.          Caption         =   "IC卡校验密码:"
  174.          Height          =   210
  175.          Left            =   285
  176.          TabIndex        =   15
  177.          Top             =   3405
  178.          Width           =   1365
  179.       End
  180.       Begin VB.Label lblSetup 
  181.          AutoSize        =   -1  'True
  182.          Caption         =   "交易数据(0-65535):"
  183.          Height          =   210
  184.          Index           =   3
  185.          Left            =   285
  186.          TabIndex        =   14
  187.          Top             =   1935
  188.          Width           =   1890
  189.       End
  190.       Begin VB.Label lblSetup 
  191.          AutoSize        =   -1  'True
  192.          Caption         =   "状态代码(0-255):"
  193.          Height          =   210
  194.          Index           =   2
  195.          Left            =   285
  196.          TabIndex        =   13
  197.          Top             =   1455
  198.          Width           =   1680
  199.       End
  200.       Begin VB.Label lblSetup 
  201.          AutoSize        =   -1  'True
  202.          Caption         =   "个人代码(4个字符):"
  203.          Height          =   210
  204.          Index           =   1
  205.          Left            =   285
  206.          TabIndex        =   12
  207.          Top             =   885
  208.          Width           =   1890
  209.       End
  210.       Begin VB.Label lblSetup 
  211.          AutoSize        =   -1  'True
  212.          Caption         =   "IC卡代码(4个字符):"
  213.          Height          =   210
  214.          Index           =   0
  215.          Left            =   285
  216.          TabIndex        =   11
  217.          Top             =   405
  218.          Width           =   1890
  219.       End
  220.    End
  221.    Begin VB.CommandButton cmdExit 
  222.       Caption         =   "退出(&X)"
  223.       Height          =   420
  224.       Left            =   4380
  225.       TabIndex        =   9
  226.       Top             =   780
  227.       Width           =   1155
  228.    End
  229.    Begin VB.CommandButton cmdWrite 
  230.       Caption         =   "写卡(&W)"
  231.       Height          =   420
  232.       Left            =   4380
  233.       TabIndex        =   8
  234.       Top             =   240
  235.       Width           =   1125
  236.    End
  237. End
  238. Attribute VB_Name = "frmNewCard"
  239. Attribute VB_GlobalNameSpace = False
  240. Attribute VB_Creatable = False
  241. Attribute VB_PredeclaredId = True
  242. Attribute VB_Exposed = False
  243. Const CID = 0
  244. Const PID = 1
  245. Const SID = 2
  246. Const DATA = 3
  247. Const Emp_Name = 4
  248. 'Public mblnIsBatch As Boolean
  249. Const mstrParaErr = "写卡参数不能为空,请输入!"
  250. Const mstrDataErr = "交易数据超出范围(0-65535)!,请重输!"
  251. Const mstrWriteErr = "写卡错误"
  252. Const mstrCIDErr = "IC卡代码必须是4个字符!"
  253. Const mstrPIDErr = "个人代码必须是4个字符!"
  254. Const mstrSIDErr = "状态代码超出范围(0-255)!,请重输!"
  255. Const mstrPSWErr = "IC卡检验密码必须是6个字符!"
  256. Const mstrNoCardErr = "无卡,请插入卡后再操作!"
  257. Const mstrPowerOnErr = "无法上电,请检查电源及其他相关硬件后,再试!"
  258. Const mstrCheckPSWErr = "校验密码不正确"
  259. Const mstrWriteMainErr = "写主存储区错误"
  260. Const mstrChgPswErr = "更改密码错误"
  261. Const mstrReadMainErr = "读主存储区错误"
  262. Const mstrCheckDataErr = "所读数据与所写数据不同错误"
  263. Const mstrSuccessMsg = "写卡成功,请取出卡!"
  264. Const mstrPSWCheck = "检查密码..."
  265. Const mstrWMainCheck = "写主存储区..."
  266. Const mstrRMainCheck = "读主存储区..."
  267. Const mstrChgPSWCheck = "更改密码..."
  268. 'Const mstrWriteToDatabase = "正在写数据库..."
  269. Const mstrReady = "等待开始写卡..."
  270. Private Sub chkChangePass_Click()
  271.     If chkChangePass.Value = 1 Then
  272.         lblNewPassWord.Visible = True
  273.         txtNewPassWord.Visible = True
  274.     Else
  275.         lblNewPassWord.Visible = False
  276.         txtNewPassWord.Visible = False
  277.     End If
  278. End Sub
  279. Private Sub chkChangePass_KeyDown(KeyCode As Integer, Shift As Integer)
  280.     If KeyCode = 13 Then
  281.         SendKeyTab KeyCode
  282.     End If
  283. End Sub
  284. Private Sub cmdExit_Click()
  285.     Unload Me
  286. End Sub
  287. Private Sub cmdWrite_Click()
  288.     Dim strTemp As String
  289.     Dim strWrite As String
  290.     Dim strWriteDot As String
  291.     Dim i As Integer
  292.     Dim nRet As Integer
  293.     Dim strEncode As String
  294.     Dim nData(3) As Byte
  295.     Dim strCID As String
  296.     Dim strPID As String
  297.     Dim strSID As String
  298.     Dim strDATA As String
  299.     Dim strPSW As String
  300.     Dim strNewPSW As String
  301.     Dim blnIsToMsg As Boolean
  302.     Dim strMsgTitle As String
  303.     Dim blnIsOpen As Boolean
  304.     
  305.     blnIsOpen = False
  306.     blnIsToMsg = False
  307.     strCID = Trim(txtSetup(CID))
  308.     strPID = Trim(txtSetup(PID))
  309.     strSID = Trim(txtSetup(SID))
  310.     strDATA = Trim(txtSetup(DATA))
  311.     strPSW = Trim(txtPassword)
  312.     If chkChangePass.Value = 1 Then
  313.         strNewPSW = Trim(txtNewPassWord)
  314.     End If
  315.     On Error GoTo WriteErr
  316.     For i = 0 To 3
  317.         If txtSetup(i).Text = "" Then
  318.             MsgBox mstrParaErr, vbInformation, gTitle
  319.             txtSetup(i).SetFocus
  320.             Exit Sub
  321.         End If
  322.     Next i
  323.     
  324.     If Len(strCID) <> 4 Then
  325.         MsgBox mstrCIDErr, vbInformation, gTitle
  326.         txtSetup(CID).SetFocus
  327.         Exit Sub
  328.     End If
  329.     
  330.     If Len(strPID) <> 4 Then
  331.         MsgBox mstrPIDErr, vbInformation, gTitle
  332.         txtSetup(PID).SetFocus
  333.         Exit Sub
  334.     End If
  335.     
  336.     If Val(strSID) < 0 Or Val(strSID) > 255 Then
  337.         MsgBox mstrSIDErr, vbInformation, gTitle
  338.         txtSetup(SID).SetFocus
  339.         Exit Sub
  340.     End If
  341.     
  342.     If Val(strDATA) < 0 Or Val(strDATA) > 65535 Then
  343.         MsgBox mstrDataErr, vbInformation, gTitle
  344.         txtSetup(DATA).SetFocus
  345.         Exit Sub
  346.     End If
  347.     
  348.     If Len(strPSW) <> 6 Then
  349.         MsgBox mstrPSWErr, vbInformation, gTitle
  350.         txtPassword.SetFocus
  351.         Exit Sub
  352.     End If
  353.     
  354.     If OpenComm(gCommPort) <> 0 Then
  355.         MsgBox mstrOpenCommErr, vbInformation, gTitle
  356.         GoTo WriteErr
  357.     End If
  358.     blnIsOpen = True
  359.     
  360.     nRet = CardExist
  361.     If nRet = 0 Then
  362.         MsgBox mstrNoCardErr, vbInformation, gTitle
  363.         Exit Sub
  364.     End If
  365.     
  366.     blnIsToMsg = True
  367.     strWrite = ""
  368.     For i = 1 To 4
  369.         strTemp = Hex(Asc(Mid(strCID, i, 1)))
  370.         strWrite = strWrite & IIf(Len(strTemp) = 1, "0" & strTemp, strTemp)
  371.     Next
  372.     
  373.     For i = 1 To 4
  374.         strTemp = Hex(Asc(Mid(strPID, i, 1)))
  375.         strWrite = strWrite & IIf(Len(strTemp) = 1, "0" & strTemp, strTemp)
  376.     Next
  377.     
  378.     strTemp = Hex(Val(strSID))
  379.     strWrite = strWrite & IIf(Len(strTemp) = 1, "0" & strTemp, strTemp)
  380.     'strEncode = txtSetup(PID) 'Only for Test!!!!!!
  381.     nData(0) = Val(strDATA)  256
  382.     nData(1) = Val(strDATA) Mod 256
  383.     nData(2) = (((Asc(Mid(strPID, 1, 1)) + Asc(Mid(strPID, 2, 1))) Xor nData(0)) + nData(1)) Mod 256
  384.     nData(3) = ((Asc(Mid(strPID, 3, 1)) + Asc(Mid(strPID, 4, 1)) Xor nData(1)) + nData(2)) Mod 256
  385.    
  386.     For i = 0 To 3
  387.         strTemp = Hex(nData(i))
  388.         strWrite = strWrite & IIf(Len(strTemp) = 1, "0" & strTemp, strTemp)
  389.     Next
  390.     
  391.     nRet = PowerOn
  392.     If nRet <> 0 Then
  393.         MsgBox mstrPowerOnErr, vbInformation, gTitle
  394.         Exit Sub
  395.     End If
  396.     
  397.     chgLblState mstrPSWCheck
  398.     
  399.     nRet = IC_PSCCheck(strPSW)
  400.     If nRet <> 0 Then
  401.         strMsgTitle = mstrCheckPSWErr
  402.         GoTo WriteErr
  403.     End If
  404.     
  405.     chgLblState mstrWMainCheck
  406.     
  407.     nRet = IC_WriteMain(dwOffset, dwLength, strWrite)
  408.     If nRet <> 0 Then
  409.         strMsgTitle = mstrWriteMainErr
  410.         GoTo WriteErr
  411.     End If
  412.     strTemp = Space(64)
  413.     strWriteDot = ""
  414.     For i = 1 To Len(txtName.Text)
  415.         nRet = ReadDot(Asc(Mid(txtName.Text, i, 1)), strTemp)
  416.         strWriteDot = strWriteDot & strTemp
  417.     Next
  418.     If Len(strWriteDot) < 192 Then
  419.         strWriteDot = strWriteDot & String(192 - Len(strWriteDot), "0")
  420.     End If
  421.     nRet = IC_WriteMain(dwNameOffset, dwNameLength, strWriteDot)
  422.     If nRet <> 0 Then
  423.         strMsgTitle = mstrWriteMainErr
  424.         GoTo WriteErr
  425.     End If
  426.     If chkChangePass.Value = 1 Then
  427.         chgLblState mstrChgPSWCheck
  428.         nRet = IC_ChangePass(strNewPSW)
  429.         If nRet <> 0 Then
  430.             'MsgBox "Password Change Error"
  431.             strMsgTitle = mstrChgPswErr
  432.             GoTo WriteErr
  433.         End If
  434.     End If
  435.     strTemp = Space(2 * dwLength)
  436.     
  437.     chgLblState mstrRMainCheck
  438.     
  439.     nRet = IC_ReadMain(dwOffset, dwLength, strTemp)
  440.     If nRet <> 0 Then
  441.         strMsgTitle = mstrReadMainErr
  442.         GoTo WriteErr
  443.     End If
  444.     If strTemp <> strWrite Then
  445.         strMsgTitle = mstrCheckDataErr
  446.         Exit Sub
  447.     End If
  448.     nRet = PowerOff
  449.     CloseComm
  450.     blnIsOpen = False
  451.         
  452.     chgLblState mstrReady
  453.     'If mblnIsBatch Then Unload Me
  454.     Exit Sub
  455. WriteErr:
  456.     If blnIsOpen Then
  457.         PowerOff
  458.         CloseComm
  459.     End If
  460.     If blnIsToMsg Then
  461.         Dim strTitle As String
  462.         If isEmpty(strMsgTitle) Then
  463.             strTitle = mstrWriteErr
  464.         Else
  465.             strTitle = strMsgTitle
  466.         End If
  467.         MsgBox strTitle, vbCritical, mstrWriteErr
  468.     End If
  469.     Exit Sub
  470. End Sub
  471. Private Sub chgLblState(strMsg As String)
  472.     With sbrState.Panels(1)
  473.         .Text = strMsg
  474.     End With
  475. End Sub
  476. Private Sub Form_Load()
  477.     sbrState.Panels(1).Width = Me.ScaleWidth
  478.     chgLblState mstrReady
  479. End Sub
  480. Private Sub txtNewPassWord_GotFocus()
  481.     GotFocus txtNewPassWord
  482. End Sub
  483. Private Sub txtNewPassWord_KeyDown(KeyCode As Integer, Shift As Integer)
  484.     If KeyCode = 13 Then
  485.         SendKeyTab KeyCode
  486.     End If
  487. End Sub
  488. Private Sub txtNewPassWord_KeyPress(KeyAscii As Integer)
  489.     KeyAscii = KeyFilter(KeyAscii, True)
  490. End Sub
  491. Private Sub txtPassword_GotFocus()
  492.     GotFocus txtPassword
  493. End Sub
  494. Private Sub txtPassword_KeyDown(KeyCode As Integer, Shift As Integer)
  495.     If KeyCode = 13 Then
  496.         SendKeyTab KeyCode
  497.     End If
  498. End Sub
  499. Private Sub txtSetup_GotFocus(Index As Integer)
  500.     GotFocus txtSetup(Index)
  501. End Sub
  502. Private Sub txtSetup_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
  503.     If KeyCode = 13 Then
  504.         SendKeyTab KeyCode
  505.     End If
  506. End Sub
  507. Private Sub txtSetup_KeyPress(Index As Integer, KeyAscii As Integer)
  508.     Select Case Index
  509.         Case SID, DATA
  510.             KeyAscii = ValiText(KeyAscii, "0123456789", True)
  511.         Case Else
  512.             KeyAscii = KeyFilter(KeyAscii, False)
  513.     End Select
  514. End Sub