基于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讀卡器的數據!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/73634.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/73634.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/73634.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深度學習 Deep Learning 第1章 深度學習簡介

第1章 深度學習簡介 概述 本章介紹人工智能(AI)和深度學習領域,討論其歷史發展、關鍵概念和應用。解釋深度學習如何從早期的AI和機器學習方法演變而來,以及如何有效解決之前方法無法應對的挑戰。 關鍵概念 1. 人工智能的演變 …

python實現簡單的圖片去水印工具

python實現簡單的圖片去水印工具 使用說明: 點擊"打開圖片"選擇需要處理的圖片 在圖片上拖拽鼠標選擇水印區域(紅色矩形框) 點擊"去除水印"執行處理 點擊"保存結果"保存處理后的圖片 運行效果 先簡要說明…

軟件功能性測試有哪些步驟和挑戰?軟件測評服務機構分享

軟件功能性測試是對軟件系統進行驗證的一種基本方法。其主要目標是確保軟件系統能夠按照預期的要求和功能進行操作。從用戶的角度看,功能性測試旨在檢查軟件是否實現了所有要求的功能,保證用戶體驗的順暢與滿意。 一、軟件功能性測試的測試步驟   1、…

《C#上位機開發從門外到門內》3-4:基于TCP/IP的遠程監控系統設計與實現

文章目錄 一、項目概述二、系統架構設計三、通信協議設計四、功能模塊實現五、系統安全性與穩定性六、性能優化與測試七、實際應用案例八、結論 隨著信息技術的飛速發展,遠程監控系統在工業自動化、智能家居、環境監測等領域的應用日益廣泛。基于TCP/IP協議的遠程監…

在react當中利用IntersectionObserve實現下拉加載數據

目錄 一、傳統的下拉加載方案 二、存在問題 1.性能較差 2.不夠精確 三、IntersectionObserve版本下拉加載 1、callback 2、options 四、IntersectionObserver實例 1、Intersection的優勢 2、實現思路 3、代碼實現 在進行前端開發的過程中,常常會碰到下拉…

深入理解C++編程:從內存管理到多態與算法實現

C 是一門功能強大的編程語言,廣泛應用于系統編程、游戲開發和高性能計算等領域。本文將通過一系列經典問題,深入探討 C 的核心知識點,包括內存管理、多態(結合函數重載與覆蓋)、多線程、TCP/IP 模型、軟鏈接與硬鏈接的…

相對論之光速

然而,基礎物理學的進步很少全部由實驗取得。為了解實驗結果背后的機制,法拉第問道,既然磁鐵沒有接觸導線,導線中怎么會產生電流?一股電流又怎么能使指南針指針發生偏轉?有某種作用因素必然在磁鐵、導線和指南針之間的空隙中傳遞…

文本檢測-文本內容審核-文本過濾接口如何用PHP調用?

一、什么是文本檢測接口呢? 文本內容審核過濾,提供對敏感事件、違規詞語及監管要求封禁詞語的識別審核能力,包含海量歷史數據,有效過濾違禁違規、惡意推廣、低俗辱罵、低質灌水、廣告法審核,該接口應用場景廣泛&#…

突破極限:獵板PCB在HDI盲埋孔樹脂塞孔工藝中的創新與挑戰

在高端電子制造領域,HDI(高密度互連)技術憑借其高精度、高可靠性的特點,已成為5G通信、航空航天、智能汽車等領域的核心技術支撐。作為HDI板制造的核心環節,盲埋孔樹脂塞孔工藝直接決定了電路板的信號完整性、散熱性能…

群體智能優化算法-?魚優化算法 (Remora Optimization Algorithm, ROA,含Matlab源代碼)

摘要 ?魚優化算法(Remora Optimization Algorithm,ROA)是一種基于?魚在海洋中寄生與捕食者間交互關系而提出的元啟發式算法。通過模擬?魚在宿主附近進行寄生、吸附和隨機機動等行為,ROA 在全局與局部搜索之間取得平衡。本文提…

【數學建模】一致矩陣的應用及其在層次分析法(AHP)中的性質

一致矩陣在層次分析法(AHP)中的應用與性質 在層次分析法(AHP)中,一致矩陣是判斷矩陣的一種理想狀態,它反映了決策者判斷的完全合理性和一致性,也就是為了避免決策者認為“A比B重要,B比C重要,但是C又比A重要”的矛盾。…

DeepSeek R1 與 ktransformers:結合蘋果 M4 Mac 的 LLM 推理深度分析

引言 大型語言模型(LLM)的快速發展為人工智能領域帶來了革命性變化。DeepSeek R1 和 ktransformers 代表了軟件層面的最新突破,而蘋果在 2025 年 3 月 12 日發布的 M4 Mac 系列則提供了硬件支持。本文將深入分析這些技術的交匯點&#xff0c…

JavaScript基本知識

文章目錄 一、JavaScript基礎1.變量(重點)1-1 定義變量及賦值1-2 變量的命名規則和命名規范判斷數據類型: 2.數據類型轉換2-1 其他數據類型轉成數值2-2 其他數據類型轉成字符串2-3 其他數據類型轉成布爾 3.函數3-1函數定義階段3-2函數調用階段…

[IP]UART

UART 是一個簡易串口ip,用戶及配置接口簡單。 波特率從9600至2000000。 該 IP 支持以下特性: 異步串行通信:標準 UART 協議(1 起始位,8 數據位,1 停止位,無奇偶校驗)。 參數化配置…

K8s集群的環境部署

1.測試環境所需要的主機名和IP和扮演的角色 harbor 172.25.254.200 harbor倉庫 k8s-master 172.25.254.100 k8s集群控制節點 k8s-node1 172.25.254.10 k8s集群工作節點 k8s-node2 172.25.254.20 k8集群工作節點 注意:所有節點禁用selinux和防火墻 所有節點同步…

pytest自動化測試[面試篇]

pytest是python的測試框架,它提供了許多功能, 測試運行 組織pytest的測試用例代碼:模塊名稱以test_開頭,類名以Test開頭,函數名以test_開頭, 然后用pytest命令即可運行測試用例。 可以在命令行中,用pyte…

樹莓派急速安裝ubuntu;映射磁盤與儲存磁盤文件;ubuntu映射整個工程;保存系統工作狀態

一、用途 在使用樹莓派上下載ubuntu時,需要一張sd卡,當你需要給這張卡做備份的時候,可以是使用磁盤映射軟件,從而達到備份的目的 同時有一些大佬發布了ubuntu的映射文件,可以直接使用該文件,然后還原他的整…

Python學習第十九天

Django-分頁 后端分頁 Django提供了Paginator類來實現后端分頁。Paginator類可以將一個查詢集(QuerySet)分成多個頁面,每個頁面包含指定數量的對象。 from django.shortcuts import render, redirect, get_object_or_404 from .models impo…

Windows下安裝Git客戶端

① 官網地址:https://git-scm.com/。 ② Git的優勢 大部分操作在本地完成,不需要聯網;完整性保證;盡可能添加數據而不是刪除或修改數據;分支操作非常快捷流暢;與Linux 命令全面兼容。 ③ Git的安裝 從官網…

刷題練習筆記

目錄 1、消失的數字 2、旋轉數組 3、原地移除元素 4、刪除排序數組中的重復項 1、消失的數字 oj:面試題 17.04. 消失的數字 - 力扣(LeetCode) 思路(參考評論區): 利用異或的特性,ret ret …