浏览代码

init commit

majt123 4 年之前
当前提交
b992a14adf
共有 2 个文件被更改,包括 74 次插入0 次删除
  1. 16 0
      main.py
  2. 58 0
      reader.py

+ 16 - 0
main.py

@@ -0,0 +1,16 @@
+import webview
+import reader
+
+
+class Api:
+    # 查询标签编号
+    def read_uid(self):
+        card_service = reader.init()
+        uid = reader.read_uid(card_service)
+        return uid
+
+
+if __name__ == '__main__':
+    api = Api()
+    window = webview.create_window('中义NFC读写器', url='helloworld.html', js_api=api)
+    webview.start(debug=True)

+ 58 - 0
reader.py

@@ -0,0 +1,58 @@
+from smartcard.CardType import AnyCardType
+from smartcard.CardRequest import CardRequest
+from smartcard.util import toHexString
+from smartcard.ATR import ATR
+import logging
+
+# 通过下面的方式进行简单配置输出方式与日志级别
+logging.basicConfig(filename='logger.log', level=logging.INFO)
+
+
+# 初始化读卡器
+def init():
+  print('初始化读卡器')
+  card_type = AnyCardType()
+  card_request = CardRequest(timeout=500, cardType=card_type)
+  card_service = card_request.waitforcard()
+  card_service.connection.connect()
+  atr = ATR(card_service.connection.getATR())
+  return card_service
+
+def trace_command(apdu):
+    logging.info('sending: ' + toHexString(apdu))
+
+
+def trace_response(response, sw1, sw2):
+  if response is None:
+    response = []
+  print(
+    'serial no.: ',
+    toHexString(response),
+    ' status words: ',
+    "%x %x" % (sw1, sw2)
+  )
+  logging.info('serial no.: ' +
+               toHexString(response) +
+               ' status words: ' +
+               "%x %x" % (sw1, sw2))
+def bytes2hexstr(data_bytes):
+  data_number = len(data_bytes)
+  data_hex_str = ''
+  for i in range(0, data_number):
+    data_int = int(str(data_bytes[i]))
+    data_hex_str += "{:02X} ".format(data_int)
+  return data_hex_str
+
+#发送指令
+def sendCommand(card_service,command):
+    trace_command(command)
+    res, s1, s2 = card_service.connection.transmit(command)
+    trace_response(res, s1, s2)
+    return res,s1,s2
+
+
+# 读取芯片UID
+def read_uid(card_service):
+  rf_command_bytes = [0xFF,0xCA,0x00,0x00,0x00]
+  res,s1,s2 = sendCommand(card_service,rf_command_bytes)
+  return bytes2hexstr(res)