libnfc工具库完整安装与使用教程

libnfc工具库完整安装与使用教程

【免费下载链接】libnfc Platform independent Near Field Communication (NFC) library 【免费下载链接】libnfc 项目地址: https://gitcode.com/gh_mirrors/li/libnfc

libnfc是一个跨平台的近场通信(NFC)用户空间库,为开发者提供了完整的NFC功能开发解决方案。本文将详细介绍libnfc的安装配置、核心功能和使用方法。

项目概述

libnfc是一个自由/开源的近场通信库,允许用户空间应用程序访问NFC设备。它支持多种NFC硬件设备,包括PN532、ACR122、PN71xx等,并提供丰富的API接口。

系统要求

在安装libnfc之前,请确保系统满足以下要求:

  • POSIX系统(Linux、FreeBSD等)
  • C编译器(gcc或clang)
  • 相关依赖库
    • libusb-0.1(用于pn53x_usb和acr122_usb驱动)
    • pcsc-lite(用于acr122_pcsc驱动)

安装步骤

1. 获取源代码

首先从代码仓库获取libnfc源代码:

git clone https://gitcode.com/gh_mirrors/li/libnfc
cd libnfc

2. 生成配置脚本

如果直接从git仓库获取代码,需要先生成配置文件:

autoreconf -vis

3. 编译安装

执行以下命令完成编译和安装:

./configure
make
sudo make install

4. 设备权限配置

为了让普通用户能够使用NFC设备,需要配置相应的权限规则:

在Linux系统上:

sudo cp contrib/udev/93-pn53x.rules /lib/udev/rules.d/

在FreeBSD系统上:

sudo cp contrib/devd/pn53x.conf /usr/local/etc/devd/

配置说明

libnfc支持通过配置文件和环境变量进行灵活配置。

配置文件

创建配置文件目录并复制示例配置:

sudo mkdir /etc/nfc
sudo cp libnfc.conf.sample /etc/nfc/libnfc.conf

配置文件示例内容:

# 允许设备自动检测(默认:true)
allow_autoscan = true

# 允许侵入式自动检测(默认:false)
allow_intrusive_scan = false

# 设置日志级别(默认:error)
log_level = 1

# 手动设置默认设备
device.name = "microBuilder.eu"
device.connstring = "pn532_uart:/dev/ttyUSB0"

环境变量

可以通过环境变量覆盖配置选项:

  • LIBNFC_DEFAULT_DEVICE=<connstring>:设置默认设备
  • LIBNFC_DEVICE=<connstring>:忽略配置文件中的所有设备,仅使用变量中定义的设备
  • LIBNFC_AUTO_SCAN=<true|false>:覆盖配置文件中的allow_autoscan选项
  • LIBNFC_LOG_LEVEL=<0|1|2|3>:设置日志级别

核心功能示例

设备轮询示例

libnfc提供了丰富的示例程序,其中nfc-poll是一个典型的设备轮询示例:

#include <nfc/nfc.h>

int main(void) {
    nfc_context *context;
    nfc_device *device;
    
    nfc_init(&context);
    device = nfc_open(context, NULL);
    
    if (device != NULL) {
        // 初始化设备
        nfc_initiator_init(device);
        
        // 设置调制参数
        const nfc_modulation modulations[] = {
            { .nmt = NMT_ISO14443A, .nbr = NBR_106 },
            { .nmt = NMT_ISO14443B, .nbr = NBR_106 },
            { .nmt = NMT_FELICA, .nbr = NBR_212 },
            { .nmt = NMT_FELICA, .nbr = NBR_424 },
            { .nmt = NMT_JEWEL, .nbr = NBR_106 },
            { .nmt = NMT_ISO14443BICLASS, .nbr = NBR_106 },
        };
        
        nfc_target target;
        // 轮询目标设备
        int res = nfc_initiator_poll_target(device, modulations, 6, 20, 2, &target);
        
        nfc_close(device);
    }
    
    nfc_exit(context);
    return 0;
}

工具程序

libnfc附带了一系列实用的命令行工具:

  • nfc-list:列出可用的NFC设备
  • nfc-poll:轮询NFC目标设备
  • nfc-mfclassic:MIFARE Classic卡操作
  • nfc-mfultralight:MIFARE Ultralight卡操作
  • nfc-scan-device:扫描NFC设备

驱动程序支持

libnfc支持多种NFC设备驱动程序:

  • pn53x_usb:支持PN53x系列USB设备
  • acr122_usb:支持ACR122 USB设备
  • acr122_pcsc:支持ACR122 PC/SC设备
  • pn532_uart:支持PN532 UART设备
  • pcsc:支持PC/SC兼容读卡器

故障排除

常见问题解决方案

Touchatag/ACR122设备检测失败: 确保PCSC-lite守护进程(pcscd)已安装并正在运行。

PN533 USB设备在Linux >= 3.1上的问题: 需要阻止内核自动加载相关模块:

sudo cp contrib/linux/blacklist-libnfc.conf /etc/modprobe.d/

调试技巧

启用调试模式获取详细信息:

LIBNFC_LOG_LEVEL=3 nfc-list -v

进阶使用

多设备配置

要配置多个设备,可以在/etc/nfc/devices.d/目录下为每个设备创建单独的配置文件:

sudo mkdir -p /etc/nfc/devices.d/

# 第一个设备
echo 'name = "My first device"
connstring = "pn532_uart:/dev/ttyACM0"' | sudo tee /etc/nfc/devices.d/first.conf

# 第二个设备  
echo 'name = "My second device"
connstring = "pn532_uart:/dev/ttyACM1"' | sudo tee /etc/nfc/devices.d/second.conf

总结

libnfc为NFC应用开发提供了强大而灵活的工具集。通过本文介绍的安装配置方法和使用示例,开发者可以快速上手并构建自己的NFC应用。建议在实际开发中多参考示例代码和官方文档,以获得最佳开发体验。

【免费下载链接】libnfc Platform independent Near Field Communication (NFC) library 【免费下载链接】libnfc 项目地址: https://gitcode.com/gh_mirrors/li/libnfc

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值