linux下开发NFC读写器

linux下使用NFC读卡器,基于QT5开发

创建工程,引入lib

创建一个QT工程,如果是控制台程序,则去掉gui

QT -= gui

引入lib库

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

这里需要将libyw60x.so库文件放在工程目录下的lib目录下。
工程文件如下所示:

QT -= gui

CONFIG += 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.0

SOURCES += \
        main.cpp

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target


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

HEADERS += \
    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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值