IDCard.frm 31 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037
  1. VERSION 5.00
  2. Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
  3. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
  4. Begin VB.Form MainForm
  5. BorderStyle = 1 'Fixed Single
  6. Caption = "智能接口身份证阅读演示程序"
  7. ClientHeight = 8115
  8. ClientLeft = 30
  9. ClientTop = 330
  10. ClientWidth = 10965
  11. BeginProperty Font
  12. Name = "宋体"
  13. Size = 10.5
  14. Charset = 134
  15. Weight = 700
  16. Underline = 0 'False
  17. Italic = 0 'False
  18. Strikethrough = 0 'False
  19. EndProperty
  20. Icon = "IDCard.frx":0000
  21. LinkTopic = "Form1"
  22. LockControls = -1 'True
  23. MaxButton = 0 'False
  24. MinButton = 0 'False
  25. Moveable = 0 'False
  26. ScaleHeight = 8115
  27. ScaleWidth = 10965
  28. StartUpPosition = 2 '屏幕中心
  29. Begin VB.CommandButton Command1
  30. Caption = "Command1"
  31. Height = 375
  32. Left = 9360
  33. TabIndex = 27
  34. Top = 2160
  35. Visible = 0 'False
  36. Width = 855
  37. End
  38. Begin VB.CommandButton RdCmd
  39. Caption = "读 卡"
  40. BeginProperty Font
  41. Name = "宋体"
  42. Size = 9
  43. Charset = 134
  44. Weight = 400
  45. Underline = 0 'False
  46. Italic = 0 'False
  47. Strikethrough = 0 'False
  48. EndProperty
  49. Height = 975
  50. Left = 9240
  51. Picture = "IDCard.frx":030A
  52. Style = 1 'Graphical
  53. TabIndex = 26
  54. Top = 3120
  55. Width = 1095
  56. End
  57. Begin VB.CheckBox Check2
  58. Caption = "相片解码"
  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 = 255
  69. Left = 9240
  70. TabIndex = 25
  71. Top = 1440
  72. Value = 1 'Checked
  73. Width = 1095
  74. End
  75. Begin VB.CommandButton NewAddCmd
  76. Caption = "最新住址"
  77. BeginProperty Font
  78. Name = "宋体"
  79. Size = 9
  80. Charset = 134
  81. Weight = 400
  82. Underline = 0 'False
  83. Italic = 0 'False
  84. Strikethrough = 0 'False
  85. EndProperty
  86. Height = 975
  87. Left = 9240
  88. Picture = "IDCard.frx":074C
  89. Style = 1 'Graphical
  90. TabIndex = 22
  91. Top = 4560
  92. Width = 1095
  93. End
  94. Begin VB.CheckBox Check1
  95. Caption = "连续读卡"
  96. BeginProperty Font
  97. Name = "宋体"
  98. Size = 9
  99. Charset = 134
  100. Weight = 400
  101. Underline = 0 'False
  102. Italic = 0 'False
  103. Strikethrough = 0 'False
  104. EndProperty
  105. Height = 255
  106. Left = 9240
  107. TabIndex = 19
  108. Top = 1080
  109. Value = 1 'Checked
  110. Width = 1095
  111. End
  112. Begin VB.Timer Timer2
  113. Enabled = 0 'False
  114. Interval = 1
  115. Left = 0
  116. Top = 1800
  117. End
  118. Begin MSComctlLib.StatusBar StatusBar1
  119. Align = 2 'Align Bottom
  120. Height = 495
  121. Left = 0
  122. TabIndex = 2
  123. Top = 7620
  124. Width = 10965
  125. _ExtentX = 19341
  126. _ExtentY = 873
  127. _Version = 393216
  128. BeginProperty Panels {8E3867A5-8586-11D1-B16A-00C0F0283628}
  129. NumPanels = 3
  130. BeginProperty Panel1 {8E3867AB-8586-11D1-B16A-00C0F0283628}
  131. Object.Width = 7057
  132. MinWidth = 7057
  133. Key = "pg_status"
  134. EndProperty
  135. BeginProperty Panel2 {8E3867AB-8586-11D1-B16A-00C0F0283628}
  136. Object.Width = 3528
  137. MinWidth = 3528
  138. Text = "连接RS-232C口"
  139. TextSave = "连接RS-232C口"
  140. Key = "status"
  141. EndProperty
  142. BeginProperty Panel3 {8E3867AB-8586-11D1-B16A-00C0F0283628}
  143. Object.Width = 13759
  144. MinWidth = 13759
  145. Text = "公安部第一研究所 版权所有 2005年12月"
  146. TextSave = "公安部第一研究所 版权所有 2005年12月"
  147. EndProperty
  148. EndProperty
  149. BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851}
  150. Name = "宋体"
  151. Size = 12
  152. Charset = 134
  153. Weight = 400
  154. Underline = 0 'False
  155. Italic = 0 'False
  156. Strikethrough = 0 'False
  157. EndProperty
  158. End
  159. Begin VB.Timer Timer1
  160. Enabled = 0 'False
  161. Interval = 1500
  162. Left = 120
  163. Top = 120
  164. End
  165. Begin VB.CommandButton EndCmd
  166. Caption = "退 出"
  167. BeginProperty Font
  168. Name = "宋体"
  169. Size = 9
  170. Charset = 134
  171. Weight = 400
  172. Underline = 0 'False
  173. Italic = 0 'False
  174. Strikethrough = 0 'False
  175. EndProperty
  176. Height = 975
  177. Left = 9240
  178. Picture = "IDCard.frx":0B8E
  179. Style = 1 'Graphical
  180. TabIndex = 0
  181. Top = 6000
  182. Width = 1095
  183. End
  184. Begin MSCommLib.MSComm MSComm1
  185. Left = 0
  186. Top = 1080
  187. _ExtentX = 794
  188. _ExtentY = 794
  189. _Version = 393216
  190. DTREnable = -1 'True
  191. InBufferSize = 2048
  192. InputLen = 1
  193. ParityReplace = 0
  194. BaudRate = 115200
  195. EOFEnable = -1 'True
  196. InputMode = 1
  197. End
  198. Begin VB.Label IINSNDN
  199. BackStyle = 0 'Transparent
  200. BeginProperty Font
  201. Name = "宋体"
  202. Size = 12
  203. Charset = 134
  204. Weight = 700
  205. Underline = 0 'False
  206. Italic = 0 'False
  207. Strikethrough = 0 'False
  208. EndProperty
  209. ForeColor = &H00008000&
  210. Height = 375
  211. Left = 2520
  212. TabIndex = 24
  213. Top = 7200
  214. Width = 5055
  215. End
  216. Begin VB.Label Label11
  217. AutoSize = -1 'True
  218. BackStyle = 0 'Transparent
  219. Caption = "提示信息:"
  220. BeginProperty Font
  221. Name = "宋体"
  222. Size = 12
  223. Charset = 134
  224. Weight = 700
  225. Underline = 0 'False
  226. Italic = 0 'False
  227. Strikethrough = 0 'False
  228. EndProperty
  229. ForeColor = &H00808000&
  230. Height = 240
  231. Left = 1200
  232. TabIndex = 23
  233. Top = 7200
  234. Width = 1275
  235. End
  236. Begin VB.Label NewAdd
  237. BackStyle = 0 'Transparent
  238. BeginProperty Font
  239. Name = "宋体"
  240. Size = 12
  241. Charset = 134
  242. Weight = 700
  243. Underline = 0 'False
  244. Italic = 0 'False
  245. Strikethrough = 0 'False
  246. EndProperty
  247. ForeColor = &H000080FF&
  248. Height = 735
  249. Left = 2400
  250. TabIndex = 21
  251. Top = 6000
  252. Width = 3255
  253. End
  254. Begin VB.Label Label10
  255. AutoSize = -1 'True
  256. BackStyle = 0 'Transparent
  257. Caption = "最新住址"
  258. BeginProperty Font
  259. Name = "宋体"
  260. Size = 12
  261. Charset = 134
  262. Weight = 700
  263. Underline = 0 'False
  264. Italic = 0 'False
  265. Strikethrough = 0 'False
  266. EndProperty
  267. ForeColor = &H00808000&
  268. Height = 240
  269. Left = 1080
  270. TabIndex = 20
  271. Top = 6000
  272. Width = 1020
  273. End
  274. Begin VB.Label ValidDate
  275. BackStyle = 0 'Transparent
  276. BeginProperty Font
  277. Name = "宋体"
  278. Size = 12
  279. Charset = 134
  280. Weight = 700
  281. Underline = 0 'False
  282. Italic = 0 'False
  283. Strikethrough = 0 'False
  284. EndProperty
  285. Height = 375
  286. Left = 2400
  287. TabIndex = 18
  288. Top = 5400
  289. Width = 2895
  290. End
  291. Begin VB.Label reg
  292. BackStyle = 0 'Transparent
  293. BeginProperty Font
  294. Name = "宋体"
  295. Size = 12
  296. Charset = 134
  297. Weight = 700
  298. Underline = 0 'False
  299. Italic = 0 'False
  300. Strikethrough = 0 'False
  301. EndProperty
  302. Height = 375
  303. Left = 2400
  304. TabIndex = 17
  305. Top = 4800
  306. Width = 5175
  307. End
  308. Begin VB.Label IDN
  309. BackStyle = 0 'Transparent
  310. BeginProperty Font
  311. Name = "宋体"
  312. Size = 15.75
  313. Charset = 134
  314. Weight = 700
  315. Underline = 0 'False
  316. Italic = 0 'False
  317. Strikethrough = 0 'False
  318. EndProperty
  319. Height = 375
  320. Left = 3360
  321. TabIndex = 16
  322. Top = 4080
  323. Width = 3255
  324. End
  325. Begin VB.Label address
  326. BackStyle = 0 'Transparent
  327. BeginProperty Font
  328. Name = "宋体"
  329. Size = 12
  330. Charset = 134
  331. Weight = 700
  332. Underline = 0 'False
  333. Italic = 0 'False
  334. Strikethrough = 0 'False
  335. EndProperty
  336. Height = 735
  337. Left = 1800
  338. TabIndex = 15
  339. Top = 3120
  340. Width = 3255
  341. End
  342. Begin VB.Label born
  343. BackStyle = 0 'Transparent
  344. BeginProperty Font
  345. Name = "宋体"
  346. Size = 12
  347. Charset = 134
  348. Weight = 700
  349. Underline = 0 'False
  350. Italic = 0 'False
  351. Strikethrough = 0 'False
  352. EndProperty
  353. Height = 255
  354. Left = 1800
  355. TabIndex = 14
  356. Top = 2520
  357. Width = 2415
  358. End
  359. Begin VB.Label nation
  360. BackStyle = 0 'Transparent
  361. BeginProperty Font
  362. Name = "宋体"
  363. Size = 12
  364. Charset = 134
  365. Weight = 700
  366. Underline = 0 'False
  367. Italic = 0 'False
  368. Strikethrough = 0 'False
  369. EndProperty
  370. Height = 255
  371. Left = 3480
  372. TabIndex = 13
  373. Top = 1920
  374. Width = 2655
  375. End
  376. Begin VB.Label namet
  377. BackStyle = 0 'Transparent
  378. BeginProperty Font
  379. Name = "宋体"
  380. Size = 12
  381. Charset = 134
  382. Weight = 700
  383. Underline = 0 'False
  384. Italic = 0 'False
  385. Strikethrough = 0 'False
  386. EndProperty
  387. Height = 255
  388. Left = 1800
  389. TabIndex = 12
  390. Top = 1320
  391. Width = 3855
  392. End
  393. Begin VB.Label sex
  394. BackStyle = 0 'Transparent
  395. BeginProperty Font
  396. Name = "宋体"
  397. Size = 12
  398. Charset = 134
  399. Weight = 700
  400. Underline = 0 'False
  401. Italic = 0 'False
  402. Strikethrough = 0 'False
  403. EndProperty
  404. Height = 255
  405. Left = 1800
  406. TabIndex = 11
  407. Top = 1920
  408. Width = 975
  409. End
  410. Begin VB.Label Label9
  411. BackStyle = 0 'Transparent
  412. Caption = "有效期限"
  413. BeginProperty Font
  414. Name = "宋体"
  415. Size = 12
  416. Charset = 134
  417. Weight = 700
  418. Underline = 0 'False
  419. Italic = 0 'False
  420. Strikethrough = 0 'False
  421. EndProperty
  422. ForeColor = &H00808000&
  423. Height = 375
  424. Left = 1080
  425. TabIndex = 10
  426. Top = 5400
  427. Width = 1455
  428. End
  429. Begin VB.Label Label8
  430. BackStyle = 0 'Transparent
  431. Caption = "签发机关"
  432. BeginProperty Font
  433. Name = "宋体"
  434. Size = 12
  435. Charset = 134
  436. Weight = 700
  437. Underline = 0 'False
  438. Italic = 0 'False
  439. Strikethrough = 0 'False
  440. EndProperty
  441. ForeColor = &H00808000&
  442. Height = 375
  443. Left = 1080
  444. TabIndex = 9
  445. Top = 4800
  446. Width = 1215
  447. End
  448. Begin VB.Label Label7
  449. BackStyle = 0 'Transparent
  450. Caption = "公民身份号码"
  451. BeginProperty Font
  452. Name = "宋体"
  453. Size = 14.25
  454. Charset = 134
  455. Weight = 700
  456. Underline = 0 'False
  457. Italic = 0 'False
  458. Strikethrough = 0 'False
  459. EndProperty
  460. ForeColor = &H00808000&
  461. Height = 375
  462. Left = 1080
  463. TabIndex = 8
  464. Top = 4080
  465. Width = 1935
  466. End
  467. Begin VB.Label Label6
  468. BackStyle = 0 'Transparent
  469. Caption = "住址"
  470. BeginProperty Font
  471. Name = "宋体"
  472. Size = 12
  473. Charset = 134
  474. Weight = 700
  475. Underline = 0 'False
  476. Italic = 0 'False
  477. Strikethrough = 0 'False
  478. EndProperty
  479. ForeColor = &H00808000&
  480. Height = 375
  481. Left = 1080
  482. TabIndex = 7
  483. Top = 3120
  484. Width = 615
  485. End
  486. Begin VB.Label Label5
  487. BackStyle = 0 'Transparent
  488. Caption = "出生"
  489. BeginProperty Font
  490. Name = "宋体"
  491. Size = 12
  492. Charset = 134
  493. Weight = 700
  494. Underline = 0 'False
  495. Italic = 0 'False
  496. Strikethrough = 0 'False
  497. EndProperty
  498. ForeColor = &H00808000&
  499. Height = 375
  500. Left = 1080
  501. TabIndex = 6
  502. Top = 2520
  503. Width = 615
  504. End
  505. Begin VB.Label Label4
  506. BackStyle = 0 'Transparent
  507. Caption = "民族"
  508. BeginProperty Font
  509. Name = "宋体"
  510. Size = 12
  511. Charset = 134
  512. Weight = 700
  513. Underline = 0 'False
  514. Italic = 0 'False
  515. Strikethrough = 0 'False
  516. EndProperty
  517. ForeColor = &H00808000&
  518. Height = 375
  519. Left = 2760
  520. TabIndex = 5
  521. Top = 1920
  522. Width = 615
  523. End
  524. Begin VB.Label Label3
  525. BackStyle = 0 'Transparent
  526. Caption = "性别"
  527. BeginProperty Font
  528. Name = "宋体"
  529. Size = 12
  530. Charset = 134
  531. Weight = 700
  532. Underline = 0 'False
  533. Italic = 0 'False
  534. Strikethrough = 0 'False
  535. EndProperty
  536. ForeColor = &H00808000&
  537. Height = 375
  538. Left = 1080
  539. TabIndex = 4
  540. Top = 1920
  541. Width = 615
  542. End
  543. Begin VB.Label Label2
  544. BackColor = &H80000009&
  545. BackStyle = 0 'Transparent
  546. Caption = "姓名"
  547. BeginProperty Font
  548. Name = "宋体"
  549. Size = 12
  550. Charset = 134
  551. Weight = 700
  552. Underline = 0 'False
  553. Italic = 0 'False
  554. Strikethrough = 0 'False
  555. EndProperty
  556. ForeColor = &H00808000&
  557. Height = 375
  558. Left = 1080
  559. TabIndex = 3
  560. Top = 1320
  561. Width = 615
  562. End
  563. Begin VB.Image Photo
  564. Height = 1965
  565. Left = 6120
  566. Stretch = -1 'True
  567. Top = 1560
  568. Width = 1545
  569. End
  570. Begin VB.Shape Shape2
  571. BackColor = &H00FFFFFF&
  572. BorderColor = &H00808080&
  573. BorderStyle = 6 'Inside Solid
  574. BorderWidth = 2
  575. Height = 6015
  576. Left = 600
  577. Top = 960
  578. Width = 8055
  579. End
  580. Begin VB.Label Label1
  581. BackStyle = 0 'Transparent
  582. Caption = "身份证阅读演示程序"
  583. BeginProperty Font
  584. Name = "楷体_GB2312"
  585. Size = 36
  586. Charset = 134
  587. Weight = 400
  588. Underline = 0 'False
  589. Italic = 0 'False
  590. Strikethrough = 0 'False
  591. EndProperty
  592. ForeColor = &H00FF0000&
  593. Height = 735
  594. Left = 1440
  595. TabIndex = 1
  596. Top = 120
  597. Width = 6735
  598. End
  599. End
  600. Attribute VB_Name = "MainForm"
  601. Attribute VB_GlobalNameSpace = False
  602. Attribute VB_Creatable = False
  603. Attribute VB_PredeclaredId = True
  604. Attribute VB_Exposed = False
  605. Const ReadState = "读卡状态"
  606. Const DebugState = "调试状态"
  607. Const OpenPortError = "打开串口失败!"
  608. Const TimeOutError = "通讯超时!"
  609. Const RecError = "操作失败!"
  610. Const XpError = "相片解码错误!"
  611. Const FileExtError = "wlt文件后缀错误!"
  612. Const FileOpenError = "wlt文件打开错误!"
  613. Const FileFormatError = "wlt文件格式错误!"
  614. Const JmError = "软件未授权!"
  615. Const CardError = "卡认证错误!"
  616. Const UnknowError = "未知错误!"
  617. Const Swipe = "请放卡..."
  618. Const ReadOK = "读卡成功!请放下一张卡..."
  619. Const ReadError = "读卡失败!请重新放卡..."
  620. Const NewAddError = "读最新住址失败!"
  621. Const IINSNDNError = "读芯片号失败!"
  622. Const Reading = "正在读卡..."
  623. Const strPathName = "C:\"
  624. Dim bcc, TimeOutFlag As Byte
  625. Dim state As Boolean
  626. Dim OutByte() As Byte
  627. Dim RecCount, i, j As Long
  628. Dim ReadResult, PortNum As Integer
  629. Dim ComPort, ReadMode, tmp As String
  630. Dim nametmp, sextmp, nationtmp, borntmp, addresstmp, IDNtmp, regtmp, datetmp As String
  631. Dim RecTmp(), RecByte() As String
  632. Dim iFlag As Integer
  633. Dim bFlagUSB As Boolean
  634. '设置是否连续读卡
  635. Private Sub Check1_Click()
  636. If Check1.Value = 0 Then
  637. RdCmd.Enabled = True
  638. NewAddCmd.Enabled = True
  639. ' If Not bFlagUSB Then cmdReadIINSNDN.Enabled = True
  640. Timer2.Enabled = False '关定时器2
  641. Else
  642. RdCmd.Enabled = False
  643. NewAddCmd.Enabled = False
  644. cmdReadIINSNDN.Enabled = False
  645. Timer2.Enabled = True '开定时器2
  646. End If
  647. End Sub
  648. Private Sub Command1_Click()
  649. Dim ans1 As Integer
  650. ans1 = GetPhoto("E:\科研项目\项目开发\身份证阅读器\身份证阅读器SDK源代码\指纹版SDK\termbRS232ok20130305\xp.wlt") '解码
  651. End Sub
  652. 'Private Sub Command2_Click()
  653. 'Dim a As String * 20
  654. 'Dim b As String * 20
  655. '
  656. 'Dim c As String * 28
  657. '
  658. 'Dim d As String * 28
  659. '
  660. 'MfrInfo a, b, c, d
  661. 'End Sub
  662. '开始
  663. Private Sub Form_Load()
  664. If Check1.Value = 0 Then
  665. RdCmd.Enabled = True
  666. NewAddCmd.Enabled = True
  667. Else
  668. RdCmd.Enabled = False
  669. NewAddCmd.Enabled = False
  670. End If
  671. bFlagUSB = False
  672. Dim strSAMID As String * 16
  673. For PortNum = 1 To 4
  674. ans = InitComm(PortNum) '开串口
  675. If ans = 1 Then Exit For
  676. Next
  677. If ans <> 1 Then
  678. For PortNum = 1001 To 1004
  679. ans = InitComm(PortNum) '开串口
  680. If ans = 1 Then Exit For
  681. Next
  682. End If
  683. If ans <> 1 Then
  684. ret = MsgBox("打开端口失败!", , "错误")
  685. End
  686. End If
  687. If PortNum >= 1001 Then
  688. MainForm.StatusBar1.Panels("status").Text = "连接USB口"
  689. bFlagUSB = True
  690. End If
  691. Timer1.Interval = 2000 '2s
  692. Timer2.Interval = 300 '300ms
  693. ' Timer2.Enabled = True '开定时器2
  694. If Check1.Value = 0 Then
  695. RdCmd.Enabled = True
  696. NewAddCmd.Enabled = True
  697. Timer2.Enabled = False '关定时器2
  698. Else
  699. RdCmd.Enabled = False
  700. NewAddCmd.Enabled = False
  701. Timer2.Enabled = True '开定时器2
  702. End If
  703. ReadResult = 0
  704. iFlag = 0
  705. state = True '刷卡状态
  706. '
  707. End Sub
  708. Private Sub RdCmd_Click()
  709. namet.Caption = ""
  710. sex.Caption = ""
  711. nation.Caption = ""
  712. born.Caption = ""
  713. address.Caption = ""
  714. IDN.Caption = ""
  715. reg.Caption = ""
  716. ValidDate.Caption = ""
  717. NewAdd.Caption = ""
  718. IINSNDN.Caption = ""
  719. Photo.Picture = LoadPicture()
  720. MainForm.StatusBar1.Panels("pg_status").Text = Reading
  721. ans = AuthenticateExt() '卡认证
  722. If Check2.Value = 1 Then
  723. ans = Read_Content(1) '读基本信息
  724. Else
  725. ans = Read_Content(2) '只读文字信息,不进行相片解码
  726. End If
  727. Select Case ans
  728. Case 1 '读卡成功
  729. Call Display(App.Path)
  730. MainForm.StatusBar1.Panels("pg_status").Text = ReadOK
  731. Case 3 '读卡成功
  732. ReadResult = 1
  733. Call Display(App.Path)
  734. IINSNDN.Caption = "有指纹信息"
  735. MainForm.StatusBar1.Panels("pg_status").Text = ReadOK
  736. Case -1 '相片解码错误
  737. Call Display(App.Path)
  738. Photo.Picture = LoadPicture()
  739. MainForm.StatusBar1.Panels("pg_status").Text = XpError
  740. Case -2 'wlt文件后缀错误
  741. MainForm.StatusBar1.Panels("pg_status").Text = FileExtError
  742. Case -3 'wlt文件打开错误
  743. MainForm.StatusBar1.Panels("pg_status").Text = FileOpenError
  744. Case -4 'wlt文件格式错误
  745. MainForm.StatusBar1.Panels("pg_status").Text = FileFormatError
  746. Case -5 '软件未授权
  747. MainForm.StatusBar1.Panels("pg_status").Text = JmError
  748. Case Else '读卡失败
  749. MainForm.StatusBar1.Panels("pg_status").Text = ReadError
  750. End Select
  751. End Sub
  752. '定时器1事件
  753. Private Sub Timer1_Timer()
  754. TimeOutFlag = 1
  755. End Sub
  756. '定时器2事件(卡认证/读数据)
  757. Private Sub Timer2_Timer()
  758. '显示状态
  759. If state = True Then '读卡状态
  760. Select Case ReadResult
  761. Case 0
  762. MainForm.StatusBar1.Panels("pg_status").Text = Swipe
  763. Case 1
  764. MainForm.StatusBar1.Panels("pg_status").Text = ReadOK
  765. Case -1 '相片解码错误
  766. Call Display(strPathName)
  767. Photo.Picture = LoadPicture()
  768. MainForm.StatusBar1.Panels("pg_status").Text = XpError
  769. Case -2 '解码错
  770. MainForm.StatusBar1.Panels("pg_status").Text = FileExtError
  771. Case -3 '解码错
  772. MainForm.StatusBar1.Panels("pg_status").Text = FileOpenError
  773. Case -4 '解码错
  774. MainForm.StatusBar1.Panels("pg_status").Text = FileFormatError
  775. Case -5 '软件未授权
  776. MainForm.StatusBar1.Panels("pg_status").Text = JmError
  777. Case Else '读卡失败
  778. MainForm.StatusBar1.Panels("pg_status").Text = ReadError
  779. End Select
  780. End If
  781. Dim start
  782. Dim endtime
  783. start = Time
  784. ans = Authenticate() '卡认证
  785. '卡认证成功
  786. If ans = 1 Then
  787. namet.Caption = ""
  788. sex.Caption = ""
  789. nation.Caption = ""
  790. born.Caption = ""
  791. address.Caption = ""
  792. IDN.Caption = ""
  793. reg.Caption = ""
  794. ValidDate.Caption = ""
  795. NewAdd.Caption = ""
  796. IINSNDN.Caption = ""
  797. Photo.Picture = LoadPicture()
  798. MainForm.StatusBar1.Panels("pg_status").Text = Reading
  799. If Check2.Value = 0 Then
  800. ' ans = Read_Content(2) '只读文字信息,不进行相片解码
  801. ans = Read_Content_Path(strPathName, 2)
  802. Else
  803. ' ans = Read_Content_Path(strPathName, 1)
  804. ans = Read_Content(1) '读基本信息
  805. End If
  806. Select Case ans
  807. Case 1 '读卡成功
  808. ReadResult = 1
  809. ' Call Display(App.Path)
  810. Call Display(strPathName)
  811. Case 3 '读卡成功
  812. ReadResult = 1
  813. ' Call Display(App.Path)
  814. Call Display(strPathName)
  815. IINSNDN.Caption = "有指纹信息"
  816. Case -1 '相片解码错误
  817. ' Call Display(App.Path)
  818. Call Display(strPathName)
  819. Photo.Picture = LoadPicture()
  820. ReadResult = -1
  821. Case -2 'wlt文件后缀错误
  822. ReadResult = -2
  823. Case -3 'wlt文件打开错误
  824. ReadResult = -3
  825. Case -4 'wlt文件格式错误
  826. ReadResult = -4
  827. Case -5 '软件未授权
  828. ReadResult = -5
  829. ' Case -12 '路径名太长
  830. ' ReadResult = -12
  831. Case Else '读卡失败
  832. ReadResult = 2
  833. End Select
  834. ' MsgBox Time - start
  835. End If
  836. End Sub
  837. '显示信息
  838. Private Sub Display(ByRef strFilePath As String)
  839. Dim tmp1 As Byte
  840. Dim tmp2 As Byte
  841. Dim rddata As String
  842. Open strFilePath & "\wz.txt" For Binary As #1
  843. Do While Not EOF(1) ' 检查文件尾。
  844. Get #1, , tmp1
  845. Get #1, , tmp2
  846. rddata = rddata + ChrW(tmp2 * CLng(256) + tmp1)
  847. Loop
  848. Close #1
  849. '姓名
  850. nametmp = Mid(rddata, 1, 15)
  851. '性别
  852. sextmp = Mid(rddata, 16, 1)
  853. '民族
  854. nationtmp = Mid(rddata, 17, 2)
  855. '出生日期
  856. borntmp = Mid(rddata, 19, 8)
  857. '住址
  858. addresstmp = Mid(rddata, 27, 35)
  859. '公民身份号码
  860. IDNtmp = Mid(rddata, 62, 18)
  861. '签发机关
  862. regtmp = Mid(rddata, 80, 15)
  863. '有效期限
  864. ValidDatetmp = Mid(rddata, 95, 16)
  865. '显示文字信息
  866. namet.Caption = nametmp
  867. '性别
  868. Select Case sextmp
  869. Case "0"
  870. sex.Caption = "未知"
  871. Case "1"
  872. sex.Caption = "男"
  873. Case "2"
  874. sex.Caption = "女"
  875. Case Else
  876. sex.Caption = "未说明"
  877. End Select
  878. '民族
  879. Dim nationtmp1 As String
  880. ans = GetNation(nationtmp, nationtmp1)
  881. nation.Caption = nationtmp1
  882. born.Caption = Mid(borntmp, 1, 4) + "年" + Mid(borntmp, 5, 2) + "月" + Mid(borntmp, 7, 2) + "日"
  883. address.Caption = addresstmp
  884. IDN.Caption = IDNtmp
  885. reg.Caption = regtmp
  886. If Mid(ValidDatetmp, 9, 2) = "长期" Then
  887. ValidDate.Caption = Mid(ValidDatetmp, 1, 4) + "." + Mid(ValidDatetmp, 5, 2) + "." + Mid(ValidDatetmp, 7, 2) + "-" + Mid(ValidDatetmp, 9, 2)
  888. Else
  889. ValidDate.Caption = Mid(ValidDatetmp, 1, 4) + "." + Mid(ValidDatetmp, 5, 2) + "." + Mid(ValidDatetmp, 7, 2) + "-" + Mid(ValidDatetmp, 9, 4) + "." + Mid(ValidDatetmp, 13, 2) + "." + Mid(ValidDatetmp, 15, 2)
  890. End If
  891. '显示照片
  892. If Check2.Value = 1 Then Photo.Picture = LoadPicture(strFilePath & "\zp.bmp")
  893. End Sub
  894. '民族代码查表
  895. Public Function GetNation(ByVal strNationcode As String, ByRef strNation As String)
  896. Dim strNationArray As Variant
  897. strNationArray = Array("汉", "蒙古", "回", "藏", "维吾尔", "苗", "彝", "壮", "布依", "朝鲜", _
  898. "满", "侗", "瑶", "白", "土家", "哈尼", "哈萨克", "傣", "黎", "傈僳", _
  899. "佤", "畲", "高山", "拉祜", "水", "东乡", "纳西", "景颇", "柯尔克孜", "土", _
  900. "达斡尔", "仫佬", "羌", "布朗", "撒拉", "毛南", "仡佬", "锡伯", "阿昌", "普米", _
  901. "塔吉克", "怒", "乌孜别克", "俄罗斯", "鄂温克", "德昂", "保安", "裕固", "京", "塔塔尔", _
  902. "独龙", "鄂伦春", "赫哲", "门巴", "珞巴", "基诺")
  903. If Trim(strNationcode) <> "" Then
  904. If ((CByte(Trim(strNationcode)) - 1) >= 0) And ((CByte(Trim(strNationcode)) - 1) <= 55) Then
  905. strNation = strNationArray(CByte(Trim(strNationcode)) - 1)
  906. Else
  907. strNation = "其他"
  908. End If
  909. End If
  910. End Function
  911. '读最新住址按钮
  912. Private Sub NewAddCmd_Click()
  913. NewAdd.Caption = ""
  914. MainForm.StatusBar1.Panels("pg_status").Text = Reading
  915. ans = Authenticate() '卡认证
  916. ans = Read_Content(3) '读最新住址
  917. Select Case ans
  918. Case 1 '读卡成功
  919. Dim tmp1 As Byte
  920. Dim tmp2 As Byte
  921. Dim addresstmp As String
  922. Open "newadd.txt" For Binary As #1
  923. Do While Not EOF(1) ' 检查文件尾。
  924. Get #1, , tmp1
  925. Get #1, , tmp2
  926. addresstmp = addresstmp + ChrW(tmp2 * CLng(256) + tmp1)
  927. Loop
  928. Close #1
  929. NewAdd.Caption = addresstmp
  930. MainForm.StatusBar1.Panels("pg_status").Text = ReadOK
  931. Case 2 '软件未授权
  932. MainForm.StatusBar1.Panels("pg_status").Text = "没有最新住址!"
  933. Case -5 '软件未授权
  934. MainForm.StatusBar1.Panels("pg_status").Text = JmError
  935. Case Else '读卡失败
  936. MainForm.StatusBar1.Panels("pg_status").Text = NewAddError
  937. End Select
  938. End Sub
  939. '退出按钮
  940. Private Sub EndCmd_Click()
  941. ret = CloseComm '关串口
  942. End
  943. End Sub
  944. '关闭窗口
  945. Private Sub Form_Unload(Cancel As Integer)
  946. ret = CloseComm '关串口
  947. End
  948. End Sub