当前位置: 首页 > news >正文

基于Python pyscard库采集ACS ACR122U NFC读卡器数据的详细操作步骤

步骤1:安装驱动

1. 下载驱动:

   - 访问ACS官网的驱动下载页面:[ACR122U驱动下载](https://www.acs.com.hk/en/drivers/6/acr122u-nfc-reader/)。

   - 选择适用于Windows的驱动(如 ACR122U Driver (Windows) V3.05.02.zip)。

2. 安装驱动:

   - 解压下载的压缩包,运行 Setup.exe。

   - 按照向导完成安装。

   - 插入ACR122U读卡器,Windows会自动识别并加载驱动。

3. 验证设备识别:

   - 打开 设备管理器,检查是否有 ACS ACR122U PICC Interface或类似设备,无感叹号即表示驱动正常。

步骤2:安装Python库

使用 pyscard 库(基于PC/SC标准):

pip install pyscard

步骤3:编写Python代码

# 基础代码(读取卡片UID)

from smartcard.System import readers

from smartcard.util import toHexString

# 获取所有读卡器列表

reader_list = readers()

if not reader_list:

    print("未检测到读卡器!请检查设备连接。")

    exit()

# 选择第一个读卡器(通常为ACR122U)

reader = reader_list[0]

print("已连接读卡器:", reader)

# 建立连接

connection = reader.createConnection()

try:

    connection.connect()

    print("读卡器连接成功!")

except Exception as e:

    print("连接失败:", e)

    exit()

# 定义获取UID的APDU指令(ACS ACR122U专用)

GET_UID_APDU = [0xFF, 0xCA, 0x00, 0x00, 0x00]

# 发送指令并获取响应

data, sw1, sw2 = connection.transmit(GET_UID_APDU)

# 检查响应状态码

if sw1 == 0x90 and sw2 == 0x00:

    print("卡片UID:", toHexString(data))

else:

    print("读取失败,状态码:", hex(sw1), hex(sw2))

 

步骤4:读取MIFARE Classic卡片数据

# 定义块号和密钥(默认密钥为6个0xFF)

BLOCK_NUMBER = 4

KEY = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]

# 1. 发送认证指令

AUTH_APDU = [

    0xFF, 0x86, 0x00, 0x00,

    0x05, 0x01, 0x00, BLOCK_NUMBER, 0x60, 0x00

] + KEY

# 合并密钥到指令

auth_data, auth_sw1, auth_sw2 = connection.transmit(AUTH_APDU)

if auth_sw1 != 0x90:

    print("认证失败!请检查密钥或块号。")

    exit()

# 2. 读取块数据

READ_APDU = [0xFF, 0xB0, 0x00, BLOCK_NUMBER, 0x10]

data, sw1, sw2 = connection.transmit(READ_APDU)

if sw1 == 0x90:

    print(f"块 {BLOCK_NUMBER} 数据:", toHexString(data))

else:

    print("读取失败,状态码:", hex(sw1), hex(sw2))

步骤5:轮询检测卡片(持续监控)

import time

while True:

    try:

        # 重新连接读卡器(检测卡片状态变化)

        connection.reconnect()

        data, sw1, sw2 = connection.transmit(GET_UID_APDU)

        if sw1 == 0x90:

            print("检测到卡片,UID:", toHexString(data))

        else:

            print("未检测到卡片")

    except Exception as e:

        print("通信错误:", e)

    time.sleep(1) # 每秒检测一次

 

完整示例代码

# 保存为 `acr122u_read.py`

from smartcard.System import readers

from smartcard.util import toHexString

import time

def main():

    # 获取读卡器

    reader_list = readers()

    if not reader_list:

        print("未检测到读卡器!")

        return

    reader = reader_list[0]

    print("已连接读卡器:", reader)

    # 连接读卡器

    connection = reader.createConnection()

    try:

        connection.connect()

    except Exception as e:

        print("连接失败:", e)

        return

    # 持续轮询检测卡片

    GET_UID_APDU = [0xFF, 0xCA, 0x00, 0x00, 0x00]

    while True:

        try:

            connection.reconnect()

            data, sw1, sw2 = connection.transmit(GET_UID_APDU)

            if sw1 == 0x90 and sw2 == 0x00:

                print("检测到卡片,UID:", toHexString(data))

            else:

                print("等待卡片靠近...")

            time.sleep(1)

        except KeyboardInterrupt:

            print("已退出")

            break

        except Exception as e:

            print("错误:", e)

if __name__ == "__main__":

    main()

运行方法

1. 保存代码为 .py文件(如 nfc_reader.py)。

2. 打开命令行,运行:

   python nfc_reader.py

3. 将NFC卡片靠近读卡器,观察输出结果。

通过以上步骤,你可以在Windows系统下使用Python成功采集ACS ACR122U NFC读卡器的数据!

相关文章:

  • AI日报 - 2025年3月18日
  • java,poi,提取ppt文件中的文字内容
  • Launcher3 Hotseat区域动态插入All Apps按钮实现方案
  • 理解Akamai EdgeGrid认证在REST API中的应用
  • 数字孪生概念及示例【清晰易懂】
  • 【并发编程】synchronized 的底层原理
  • 微服务》》Kubernetes (K8S)安装
  • go语言学习教程推荐,零基础到做项目
  • 【JavaScript】一、JS的引入与输入输出
  • 0基础 | 直流稳压电源专题3
  • 牛客竞赛记录——小紫的优势博弈(Python3题解)
  • CentOS 7 更换 YUM 源为国内
  • 高中信息技术学科核心素养评价体系的构建与实践研究
  • RESTful API 简介与使用
  • 数据结构——排序
  • 【探寻C++之旅】第九章:二叉搜索树
  • GetX 中GetView、GetXController 和 Bindings的联合使用
  • minikube部署Go应用
  • 蓝桥杯备考-----》差分数组+二分答案 借教室
  • deepseek连续对话与API调用机制
  • 浙江一家长称小学老师打孩子还威胁要从3楼扔下,当地警方已立案
  • 四川内江警方通报一起持刀伤人致死案:因车辆停放引起,嫌犯被抓获
  • 舱位已排到月底,跨境电商忙补货!美线订单大增面临爆舱,6月运价或翻倍
  • 四个“从未如此”使巴以加沙战火绵延时间创下历史之最
  • “远践”项目启动公益生态圈,上海青少年公益力量蓬勃生长
  • 王毅人民日报撰文:共商发展振兴,共建中拉命运共同体