linux下開發NFC讀寫器

linux下使用NFC讀卡器,基于QT5開發

  • 創建工程,引入lib
    • 開始編寫代碼

創建工程,引入lib

創建一個QT工程,如果是控制臺程序,則去掉gui

QT -= gui

引入lib庫

LIBS += -L$$PWD/lib -lyw60x

這里需要將libyw60x.so庫文件放在工程目錄下的lib目錄下。
工程文件如下所示:

QT -= guiCONFIG += c++11 console
CONFIG -= app_bundle
CONFIG += static
CONFIG -= shared# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0SOURCES += \main.cpp# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += targetLIBS += -L$$PWD/lib -lyw60xHEADERS += \libyw60x.h

開始編寫代碼

Main程序如下所示:

int main(int argc, char *argv[])
{Yw60x yoworfid;std::string selection;unsigned short ATQA=0;unsigned char SAK=0;unsigned char uidlen;unsigned char UID[10];unsigned char Key[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};unsigned char BlockData[16];unsigned char writeBlockData[]={0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF};std::cout << "YOWO RFID USB HF Reader Demo(Console)\n " << std::endl;std::cout << "demo function\n1:read card serial no\n2:read  block data\n3:write block data\n4:exit\n " << std::endl;std::cout << "input your selection(1 or 2 or 3 or 4):" << std::endl;std::getline(std::cin, selection);if(selection=="1"){int rt =yoworfid.YW_USBHIDInitial();if(rt<=0){std::cout << "Open reader fail,exit\n " << std::endl;return 0;}rt =yoworfid.YW_RequestAntiandSelect(1,0x52,0,&ATQA,&SAK,&uidlen, UID);if(rt<0){std::cout << "request card fail,exit\n " << std::endl;yoworfid.YW_USBHIDFree();return 0;}yoworfid.YW_Buzzer(1,5,5,1);std::cout << "Card SerialNo: " <<HexToStr(UID,uidlen)<<"\n "<< std::endl;yoworfid.YW_USBHIDFree();}else if(selection=="2"){std::cout << "read block 4 with keymode=A and key=FFFFFFFFFFFF\n " << std::endl;int rt =yoworfid.YW_USBHIDInitial();if(rt<=0){std::cout << "Open reader fail,exit\n " << std::endl;return 0;}rt =yoworfid.YW_RequestAntiandSelect(1,0x52,0,&ATQA,&SAK,&uidlen, UID);std::cout << "Card SerialNo: " <<HexToStr(UID,uidlen)<<"\n "<< std::endl;if(rt<0){std::cout << "request card fail,exit\n " << std::endl;yoworfid.YW_USBHIDFree();return 0;}if(yoworfid.YW_KeyAuthorization(1,PASSWORD_A, 4, Key)<0){std::cout << "Key Error,exit\n " << std::endl;yoworfid.YW_USBHIDFree();return 0;}if(yoworfid.YW_ReadaBlock(1,4,16,BlockData)<0){std::cout << "Read block Error,exit\n " << std::endl;yoworfid.YW_USBHIDFree();return 0;}yoworfid.YW_Buzzer(1,5,5,1);std::cout << "block 4 data: " <<HexToStr(BlockData,16)<<"\n "<< std::endl;yoworfid.YW_USBHIDFree();}else if(selection=="3"){std::cout << "Write block 4 with keymode=A and key=FFFFFFFFFFFF,data=00112233445566778899AABBCCDDEEFF\n " << std::endl;int rt =yoworfid.YW_USBHIDInitial();if(rt<=0){std::cout << "Open reader fail,exit\n " << std::endl;return 0;}rt =yoworfid.YW_RequestAntiandSelect(1,0x52,0,&ATQA,&SAK,&uidlen, UID);std::cout << "Card SerialNo: " <<HexToStr(UID,uidlen)<<"\n "<< std::endl;if(rt<0){std::cout << "request card fail,exit\n " << std::endl;yoworfid.YW_USBHIDFree();return 0;}if(yoworfid.YW_KeyAuthorization(1,PASSWORD_A, 4, Key)<0){std::cout << "Key Error,exit\n " << std::endl;yoworfid.YW_USBHIDFree();return 0;}if(yoworfid.YW_WriteaBlock(1,4,16,writeBlockData)<0){std::cout << "Write block Error,exit\n " << std::endl;yoworfid.YW_USBHIDFree();return 0;}yoworfid.YW_Buzzer(1,5,5,1);std::cout << "Write block  4 data success\n "<< std::endl;yoworfid.YW_USBHIDFree();}else if(selection=="4"){std::cout << "Exit\n " << std::endl;}else{std::cout << "Wrong selection\n " << std::endl;}return 0;
}

編譯完成后,執行
linux執行NFC讀寫器程序
這樣一個簡單的NFC讀寫器程序就可以在linux上運行了,你可以下載本篇的全部代碼,https://www.youwokeji.com.cn/LinuxReader/

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

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

相關文章

Linux基礎使用-筆記

1. 文件和目錄操作 查看當前目錄&#xff1a;pwd 命令用于顯示當前工作目錄的完整路徑。 pwd切換目錄&#xff1a;cd 命令用于切換工作目錄。 # 切換到指定目錄 cd /home/user/Documents # 切換到上一級目錄 cd .. # 切換到用戶主目錄 cd ~列出目錄內容&#xff1a;ls 命令用…

DAG(有向無環圖)計算模型面試內容整理-拓撲排序(Topological Sort)和節點依賴與并行度

拓撲排序(Topological Sort) 拓撲排序(Topological Sort): 拓撲排序是針對有向無環圖(DAG)的一種線性排序方法。這種排序方法的特點是,對于DAG中的每一條有向邊 (A → B),在拓撲排序中節點A總是排在節點B之前。

23種設計模式-結構型模式之享元模式(Java版本)

Java 享元模式&#xff08;Flyweight Pattern&#xff09;詳解 &#x1f98b; 什么是享元模式&#xff1f; 享元模式是一種結構型模式&#xff0c;它通過共享相同的對象來減少內存消耗&#xff0c;適用于大量細粒度對象的場景。關鍵思想是緩存重復出現的對象&#xff0c;避免…

瀏覽器訪問背后的秘密:從加載到關閉,數據是否會丟失?

? 一次瀏覽器訪問 www.xxx.com 背后發生了什么&#xff1f; —— 以及“我點了 &#xff0c;數據會不會丟&#xff1f;”的深度剖析 適讀人群&#xff1a;Web 開發者、運維工程師、性能調優/安全從業者 1?? 打開瀏覽器敲下網址&#xff1a;鏈路是如何啟動的&#xff1f; 階…

【HDFS入門】深入解析DistCp:Hadoop分布式拷貝工具的原理與實踐

目錄 1 DistCp概述與應用場景 2 DistCp架構設計解析 2.1 系統架構圖 2.2 執行流程圖 3 DistCp核心技術原理 3.1 并行拷貝機制 3.2 斷點續傳實現原理 4 DistCp實戰指南 4.1 常用命令示例 4.2 性能優化策略 5 異常處理與監控 5.1 常見錯誤處理流程 5.2 監控指標建議…

hbuilderx云打包生成的ipa文件如何上架

使用hbuilderx打包&#xff0c;會遇到一個問題。開發的ios應用&#xff0c;需要上架到app store&#xff0c;因此&#xff0c;就需要APP store的簽名證書&#xff0c;并且還需要一個像xcode那樣的工具來上架app store。 我們這篇文章說明下&#xff0c;如何在windows電腦&…

第十五屆藍橋杯 2024 C/C++組 拼正方形

目錄 題目&#xff1a; 題目描述&#xff1a; 題目鏈接&#xff1a; 思路&#xff1a; 思路詳解&#xff1a; 易錯點&#xff1a; 代碼&#xff1a; 代碼詳解&#xff1a; 題目&#xff1a; 題目描述&#xff1a; 題目鏈接&#xff1a; P10898 [藍橋杯 2024 省 C] 拼正…

華為云獲取IAM用戶Token的方式及適用分析

&#x1f9e0; 一、為什么要獲取 IAM 用戶 Token&#xff1f; 我們用一個生活中的比喻來解釋&#x1f447;&#xff1a; &#x1f3e2; 比喻場景&#xff1a; 你要去一個 高級寫字樓&#xff08;華為云物聯網平臺&#xff09; 辦事&#xff08;調用接口管理設備&#xff09;&…

樂聚機器人與地瓜機器人達成戰略合作,聯合發布Aelos Embodied具身智能

要聞 4月19日&#xff0c;在CCF人形機器人與人工智能技術巡回研討會&#xff08;武漢站&#xff09;上&#xff0c;樂聚機器人與地瓜機器人達成戰略合作&#xff0c;雙方將基于RDK X5、RDK S100以及更高性能的國產大算力平臺&#xff0c;就夸父&#xff08;KUAVO&#xff09;、…

Web3架構下的數據隱私與保護

在這個信息爆炸的時代&#xff0c;Web3的概念如同一股清流&#xff0c;以其去中心化的特性&#xff0c;為數據隱私與保護帶來了新的希望。Web3&#xff0c;也被稱作下一代互聯網&#xff0c;它通過區塊鏈技術實現數據的去中心化存儲和處理&#xff0c;旨在提高數據的安全性和隱…

【OceanBase相關】02-OceanBase數據庫NFS備份實踐

文章目錄 一、前言1、概述2、備份方式3、備份流程4、恢復流程二、NFS備份1、注意事項2、服務端配置3、客戶端配置4、備份策略配置三、常用操作四、Q&A1、數據備份任務執行失敗,提示`start log archive backup when not STOP is not supported`1.1、問題說明1.2、解決措施2…

一行命令打開iOS模擬器

要在 Mac 命令行打開 iPhone 15 Pro 模擬器&#xff0c;需滿足已安裝 Xcode 這一前提條件&#xff0c;以下是具體操作步驟&#xff1a; 步驟一&#xff1a;列出所有可用模擬器設備 打開終端&#xff08;Terminal&#xff09;&#xff0c;輸入并執行以下命令&#xff0c;用于列…

Java虛擬機(JVM)家族發展史及版本對比

Java虛擬機&#xff08;JVM&#xff09;家族發展史及版本對比 一、JVM家族發展史 1. 早期階段&#xff08;1996-2000&#xff09; Classic VM&#xff08;Java 1.0-1.1&#xff09;&#xff1a; 廠商&#xff1a;Sun Microsystems&#xff08;Oracle前身&#xff09;。特點&…

嘻游電玩三端客戶端部署實戰:PC + Android + iOS 環境全覆蓋教程

本篇文章將針對“網狐系列嘻游電玩組件”的三端客戶端&#xff08;PC端、安卓端、iOS端&#xff09;進行詳細部署實操講解。文章將以實測部署為核心&#xff0c;提供資源結構說明、平臺適配調整、打包配置、常見問題修復&#xff0c;并輔以必要的關鍵配置代碼。 一、客戶端資源…

LabVIEW實現Voronoi圖繪制功能

該 LabVIEW 虛擬儀器&#xff08;VI&#xff09;借助 MathScript 節點&#xff0c;實現基于手機信號塔位置計算 Voronoi 圖的功能。通過操作演示&#xff0c;能直觀展示 Voronoi 圖在空間劃分上的應用。 各部分功能詳細說明 隨機地形創建部分 功能&#xff1a;根據 “Maximum a…

web刷題筆記

2024isctf ezrce 禁用了一些關鍵字符&#xff0c;查詢函數&#xff0c;系統執行函數&#xff0c;執行函數都有&#xff0c;空格也和斜桿也禁用了&#xff0c;但是其他一些很大一部分字符都沒有禁用&#xff0c;屬于關鍵詞禁用的類型&#xff0c;正常的步驟是去查一下列表&#…

集結號海螺捕魚游戲源碼解析(第二篇):水滸傳捕魚模塊邏輯與服務器幀同步詳解

本篇將全面解構“水滸傳”子游戲的服務端核心邏輯、幀同步機制、魚群刷新規則、客戶端命中表現與服務器計算之間的協同方式&#xff0c;聚焦于 C 與 Unity3D 跨端同步的真實實現過程。 一、水滸傳捕魚模塊資源結構 該模塊包含三部分核心目錄&#xff1a; 子游戲/game_shuihuz…

【產品經理從0到1】原型及Axure介紹

原型分類 原型的三種分類&#xff1a; 草圖原型&#xff1a;?繪稿&#xff0c;制作?便&#xff0c;修改不?便&#xff1b;低保真原型&#xff1a;簡單交互&#xff0c;?設計圖&#xff1b; 最好的原型是??灰的&#xff1b;?保真原型&#xff1a;復雜交互&#xff0c;有…

CVE-2024-23897-Jenkins 2.441之前版本存在任意文件讀取漏洞

1.漏洞介紹 Jenkins 2.441及更早版本&#xff0c;以及LTS 2.426.2及更早版本沒有禁用其CLI命令解析器的一個功能&#xff0c;該功能會將參數中字符后跟的文件路徑替換為該文件的內容&#xff0c;允許未經身份驗證的攻擊者讀取Jenkins控制器文件系統上的任意文件。 2.poc利用 下…

PostgreSQL性能調優與內核優化怎么做?

PostgreSQL 的高級性能調優和內核優化是PGCM認證的核心能力之一&#xff0c;也是企業級數據庫場景中解決性能瓶頸的關鍵手段。以下是直白易懂的實戰解析&#xff1a; 一、性能調優&#xff1a;讓數據庫“跑得更快” 1. 執行計劃優化 問題場景&#xff1a;一個復雜查詢耗時10秒…