Form1.frm 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. VERSION 5.00
  2. Begin VB.Form Form1
  3. Caption = "Form1"
  4. ClientHeight = 5895
  5. ClientLeft = 60
  6. ClientTop = 450
  7. ClientWidth = 10470
  8. LinkTopic = "Form1"
  9. ScaleHeight = 5895
  10. ScaleWidth = 10470
  11. StartUpPosition = 3 '窗口缺省
  12. Begin VB.CommandButton Command4
  13. Caption = "CPU"
  14. Height = 495
  15. Left = 360
  16. TabIndex = 4
  17. Top = 3360
  18. Width = 1335
  19. End
  20. Begin VB.CommandButton Command3
  21. Caption = "M1"
  22. Height = 495
  23. Left = 360
  24. TabIndex = 3
  25. Top = 1920
  26. Width = 1335
  27. End
  28. Begin VB.CommandButton Command2
  29. Caption = "断开连接"
  30. Height = 495
  31. Left = 360
  32. TabIndex = 2
  33. Top = 4800
  34. Width = 1335
  35. End
  36. Begin VB.ListBox List1
  37. Height = 5280
  38. Left = 2160
  39. TabIndex = 1
  40. Top = 240
  41. Width = 7695
  42. End
  43. Begin VB.CommandButton Command1
  44. Caption = "连接设备"
  45. Height = 495
  46. Left = 360
  47. TabIndex = 0
  48. Top = 480
  49. Width = 1335
  50. End
  51. End
  52. Attribute VB_Name = "Form1"
  53. Attribute VB_GlobalNameSpace = False
  54. Attribute VB_Creatable = False
  55. Attribute VB_PredeclaredId = True
  56. Attribute VB_Exposed = False
  57. Dim status As String * 18
  58. Dim cardtype As Integer
  59. Dim snr(5) As Byte
  60. Dim size As Integer
  61. Dim data As String
  62. Dim databuff As String * 16
  63. Dim keyA(6) As Byte
  64. Dim keyB(6) As Byte
  65. Dim key As String
  66. Dim asnr As String * 9
  67. Dim val As Long
  68. Dim intrval As Long
  69. Dim readVal As Long
  70. Dim resetData(50) As Byte
  71. Dim reset_data As String * 50
  72. Dim sendcmd(9) As Byte
  73. Dim returnData(255) As Byte
  74. Dim return_data As String * 500
  75. Private Sub Command1_Click()
  76. '初始化设备
  77. icdev = rf_init(0, 9600)
  78. If (icdev > 0) Then
  79. st = rf_get_status(icdev, status)
  80. If (st = 0) Then
  81. List1.AddItem (status)
  82. End If
  83. '鸣响
  84. st = rf_beep(icdev, 50)
  85. List1.AddItem ("rf_init success")
  86. Else
  87. List1.AddItem ("rf_init error" + Str(st))
  88. End If
  89. '加载密码
  90. '验证密码的方式为先将卡片的密码加载到读写器里,再通过设备里的密码来验证,一般因所有的卡片密码相同,所以在初始化设备后加载一次密码即可
  91. key = "ffffffffffff"
  92. For sector = 0 To 15
  93. st = rf_load_key_hex(icdev, 0, sector, key)
  94. If (st <> 0) Then
  95. List1.AddItem (Str(sector) + " rf_load_key_hex error")
  96. 'Else
  97. 'List1.AddItem ("rf_losd_key_hex ok")
  98. End If
  99. Next
  100. End Sub
  101. Private Sub Command2_Click()
  102. st = rf_exit(icdev)
  103. If (st = 0) Then
  104. List1.AddItem ("断开连接")
  105. End If
  106. End Sub
  107. Private Sub Command3_Click()
  108. '寻卡
  109. '对卡片的操作为先寻卡,再验证密码,验证密码成功后才可对卡片进行读,写,加减值操作
  110. st = rf_card(icdev, 1, snr(0))
  111. If (st = 0) Then
  112. st = hex_a(snr(0), asnr, 4)
  113. List1.AddItem ("rf_card ok " + asnr)
  114. Else
  115. List1.AddItem ("rf_card error")
  116. End If
  117. '验证密码
  118. 'M1卡有16个扇区,每个扇区都有一套独立的密码
  119. sector = 2
  120. st = rf_authentication(icdev, 0, sector)
  121. If (st = 0) Then
  122. List1.AddItem ("rf_authentication ok")
  123. Else
  124. List1.AddItem ("rf_authentication error")
  125. End If
  126. '写数据
  127. data = "深圳明华澳汉科技"
  128. st = rf_write(icdev, sector * 4, data)
  129. If (st = 0) Then
  130. List1.AddItem ("rf_write ok")
  131. Else
  132. List1.AddItem ("rf_write error")
  133. End If
  134. '读数据
  135. st = rf_read(icdev, sector * 4, databuff)
  136. If (st = 0) Then
  137. List1.AddItem ("rf_read ok" + databuff)
  138. Else
  139. List1.AddItem ("rf_read error")
  140. End If
  141. '改写密码
  142. keyA(0) = &HFF
  143. keyA(1) = &HFF
  144. keyA(2) = &HFF
  145. keyA(3) = &HFF
  146. keyA(4) = &HFF
  147. keyA(5) = &HFF
  148. keyB(0) = &HFF
  149. keyB(1) = &HFF
  150. keyB(2) = &HFF
  151. keyB(3) = &HFF
  152. keyB(4) = &HFF
  153. keyB(5) = &HFF
  154. st = rf_changeb3(icdev, sector, keyA(0), 0, 0, 0, 1, 0, keyB(0)) '中间的几个参数00010按默认即可
  155. If (st = 0) Then
  156. List1.AddItem ("rf_changeb3 ok")
  157. Else
  158. List1.AddItem ("rf_changeb3 error")
  159. End If
  160. '初始化值(充值)
  161. val = 1000
  162. intrval = 100
  163. st = rf_initval(icdev, sector * 4 + 2, val)
  164. If (st = 0) Then
  165. List1.AddItem ("rf_initval ok")
  166. Else
  167. List1.AddItem ("rf_initval error")
  168. End If
  169. '加值
  170. st = rf_increment(icdev, sector * 4 + 2, val)
  171. If (st = 0) Then
  172. List1.AddItem ("rf_increment ok")
  173. Else
  174. List1.AddItem ("rf_increment error")
  175. End If
  176. '减值
  177. st = rf_decrement(icdev, sector * 4 + 2, val)
  178. If (st = 0) Then
  179. List1.AddItem ("rf_decrement ok")
  180. Else
  181. List1.AddItem ("rf_decrement error")
  182. End If
  183. '读值
  184. st = rf_readval(icdev, sector * 4 + 2, readVal)
  185. If (st = 0) Then
  186. List1.AddItem ("rf_readval ok! value: " + Str(readVal))
  187. Else
  188. List1.AddItem ("rf_readval error")
  189. End If
  190. st = rf_beep(icdev, 30)
  191. End Sub
  192. Private Sub Command4_Click()
  193. sendcmd(0) = 0
  194. sendcmd(1) = 0
  195. sendcmd(2) = 0 '前三个字节可以默认为0
  196. sendcmd(3) = &H5 '第四个字节是命令的长度
  197. sendcmd(4) = 0
  198. sendcmd(5) = &H84
  199. sendcmd(6) = 0
  200. sendcmd(7) = 0
  201. sendcmd(8) = &H8
  202. st = rf_card(icdev, 1, snr(0)) '寻卡
  203. If (st = 0) Then
  204. Call hex_a(snr(0), snr1, 4)
  205. List1.AddItem ("rf_card ok " + snr1)
  206. Else
  207. List1.AddItem ("rf_card error")
  208. End If
  209. st = rf_pro_rst(icdev, resetData(0)) '复位
  210. If (st = 0) Then
  211. Call hex_a(resetData(0), reset_data, resetData(0))
  212. List1.AddItem ("rf_pro_rst ok " + reset_data)
  213. Else
  214. List1.AddItem ("rf_pro_rst error")
  215. End If
  216. st = rf_pro_trn(icdev, sendcmd(0), returnData(0)) '发送命令
  217. If (st = 0) Then
  218. Call hex_a(returnData(0), return_data, returnData(3) + 4) '返回的数据前三个字节无用,第四个字节为返回数据的长度,
  219. List1.AddItem ("rf_pro_trn ok " + return_data)
  220. Else
  221. List1.AddItem ("rf_pro_trn error")
  222. End If
  223. End Sub