NFC学习笔记——三(在windows操作系统上安装libnfc)

本篇翻译文章:

这篇文章主要是说明如何在windows操作系统上安装、配置和使用libnfc。

一、基本信息

1.操作系统:

Windows Vista Home Premium SP 2

2.硬件信息:

System: Dell Inspiron 1720
Processor: Intel Core 2 Duo CPU T9300 @ 2.5GHz 2.5GHz
System type: 32-bit Operating System

3.所需软件:

在windows操作系统上安装软件需要下列软件、库文件:

如果未安装doxygen,会遇到下面的警告:Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE),这个是可以忽略的。

二、安装过程

1.安装TDM

http://sourceforge.net/projects/tdm-gcc/  下载TDM-GCC MinGW  编译器,本篇下载版本为:tdm64-gcc-4.7.1-3.exe

关于TDM编译器更多的信息,可参看  http://tdm-gcc.tdragon.net/ 里面的介绍。

注:MinGW = windows系统上面最小的GNU

1)双击打开执行文件,按确认按钮

NFC学习笔记——三(在windows操作系统上安装libnfc)

2)选择MinGW-w64/TDM64 Experimental(32-bit and 64-bit),然后按下一步

注:

你需要安装"MinGW/TDM(32 bit)"版本, “MinGW-w64/TDM64 Experimental"版本将运行在32、64位操作系统上

NFC学习笔记——三(在windows操作系统上安装libnfc)

3)选择TDM-GCC安装目录,例如:D:/ProgramFiles/MinGW64

NFC学习笔记——三(在windows操作系统上安装libnfc)

4) 选择离你最近的下载服务器,单击下一步

NFC学习笔记——三(在windows操作系统上安装libnfc)

5)选择"TDM-GCC Recormmended,All Packages" ,按下一步

NFC学习笔记——三(在windows操作系统上安装libnfc)

6)等待TDM-GCC安装完成,点击下一步

NFC学习笔记——三(在windows操作系统上安装libnfc)

7)点击完成按钮,完成TDM-GCC的安装

NFC学习笔记——三(在windows操作系统上安装libnfc)

关于TDM-GCC的说明信息,可以参考README-gcc-tdm64.txt文件

2.安装libusb-win32

http://sourceforge.net/projects/libusb-win32/ 下载libusb-win32软件,可以下载版本:libusb-win32-bin-1.2.6.0.zip。关于这个库更多的信息可参看:http://sourceforge.net/apps/trac/libusb-win32/wiki

下载解压libusb-win32-bin-1.2.6.0zip文件到自己指定的目录即可,不需要再做其他操作了。

3.安装PCRE

在 http://sourceforge.net/projects/gunwin32/files/pcre/7.0/ 下载PCRE安装包(Perl-compatible regular-expression),关于PCRE更多的信息可以参看:http://www.pcre.org

1)双击运行可执行文件,点击下一步

NFC学习笔记——三(在windows操作系统上安装libnfc)

2)接收协议,点击下一步

NFC学习笔记——三(在windows操作系统上安装libnfc)

3)选择PCRE安装目录,例如:D:/ProgramFiles/GnuWin32,点击下一步

NFC学习笔记——三(在windows操作系统上安装libnfc)

4)选择“Full installation”,按下一步

NFC学习笔记——三(在windows操作系统上安装libnfc)

5)输入在开始菜单中的开始菜单的快捷方式,按下一步

NFC学习笔记——三(在windows操作系统上安装libnfc)

6)选择附加选项,单击下一步

NFC学习笔记——三(在windows操作系统上安装libnfc)

7)点击安装

NFC学习笔记——三(在windows操作系统上安装libnfc)

8)点击完成

NFC学习笔记——三(在windows操作系统上安装libnfc)

4.安装CMake

在 http://www.cmake.org/下载CMake windows平台二进制分发包(Win32 installer)。CMake是一个可跨平台的开源的连接库。可以下载版本:cmake-2.8.11.2-win32-x86.exe

1)双击可执行文件,点击我同意按钮

NFC学习笔记——三(在windows操作系统上安装libnfc)

2)选择添加CMake到当前用户系统路径,点击下一步

NFC学习笔记——三(在windows操作系统上安装libnfc)

3)选择CMake安装目录,例如:D:/ProgramFiles/Development/CMake,点击下一步

NFC学习笔记——三(在windows操作系统上安装libnfc)

4)选择开始菜单,点击安装

NFC学习笔记——三(在windows操作系统上安装libnfc)

5)等待CMake安装完成,点击下一步

NFC学习笔记——三(在windows操作系统上安装libnfc)

6)点击完成按钮,完成安装

NFC学习笔记——三(在windows操作系统上安装libnfc)

5.安装Doxygen

http://www.doxygen.org 下载doxygen,比如下载版本:doxygen-1.8.4.-setup.exe

注:安装Doxygen不是必须的,如果没有安装,在用CMake配置libnfc的时候会显示警告,但是你可以将此警告忽略。

1)双击可执行文件,点击下一步

NFC学习笔记——三(在windows操作系统上安装libnfc)

2)接收协议,点击下一步

NFC学习笔记——三(在windows操作系统上安装libnfc)

3)选择Doxygen的安装目录,如:D:/ProgramFiles/DevelopmentToos/Doxygen

NFC学习笔记——三(在windows操作系统上安装libnfc)

4)选择"Full installation" ,点击下一步

NFC学习笔记——三(在windows操作系统上安装libnfc)

5) 输入开始菜单Doxygen快捷方式,点击下一步

NFC学习笔记——三(在windows操作系统上安装libnfc)

6)点击安装

NFC学习笔记——三(在windows操作系统上安装libnfc)

7)Doxygen正在安装

NFC学习笔记——三(在windows操作系统上安装libnfc)

8)阅读Doxygen信息,点击下一步

NFC学习笔记——三(在windows操作系统上安装libnfc)

9)点击完成

NFC学习笔记——三(在windows操作系统上安装libnfc)

6.安装libnfc

在 http://code.google.com/p/libnfc 下载近场通信库文件,如:libnfc-1.7.0-rc7.tar.gz,解压到相应目录下

关于此库的更多的信息可以看:http://nfc-tools.org

7.配置libnfc

libnfc目前只支持使用简单的USB到UART的适配器工具FTDI的UART通信。在编译前需要配置libnfc支持UART和PN532指令集。

需要做如下修改:

1)在用mingw32-make时会出现下面的错误信息 “C:\libnfc-build\windows\libnfc.rc:25:37: warning: missing terminating " character [enabled by default]”,编辑libnfc-1.7.0-rc7/CMakeLists.txt文件,将:

MACRO (GET_CURRENT_YEAR RESULT)
   EXECUTE_PROCESS(COMMAND "cmd" " /C date /T" OUTPUT_VARIABLE ${RESULT})
   STRING(REGEX REPLACE ".*(..)/(..)/(....).*" "\\3" ${RESULT} ${${RESULT}})
ENDMACRO (GET_CURRENT_YEAR)

修改为:

MACRO (GET_CURRENT_YEAR RESULT)
   EXECUTE_PROCESS(COMMAND "cmd" " /C date /T" OUTPUT_VARIABLE ${RESULT})
   STRING(REGEX REPLACE "\n" "" ${RESULT} ${${RESULT}})
   STRING(REGEX REPLACE ".*(..)/(..)/(....).*" "\\3" ${RESULT} ${${RESULT}})
ENDMACRO (GET_CURRENT_YEAR)

2)除非附加驱动,否则pn532默认的超时时间是不够用的,NFC阅读器是无法读取的。需要较长时间的等待来PN532唤醒这个是必要的。因此需要在发送0x55后跟随30个 0x00

将:

const uint8_t pn532_wakeup_preamble[] = { 0x55, 0x55, 0x00, 0x00, 0x00 };

修改为:

const uint8_t pn532_wakeup_preamble[] = { 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

3)如果复制libnfc-1.7.0-rc7\libnfic.config.sample为libnfc.conf,这个文件不会被读到。不要复制libnfc.conf.sample,有另外一种方式,修改libnfc-1.7.0-rc7/libnfc/nfc-internal.c文件,将:

res->allow_intrusive_scan = false

修改为:

res->allow_intrusive_scan = true;

8.设置系统路径

打开“系统属性”窗口:

右键点击“计算机“

选择”属性“

点击“高级系统设置”,打开“高级”窗口,点击"环境变量"

NFC学习笔记——三(在windows操作系统上安装libnfc)

在系统变量子窗口中选择“,点击编辑

NFC学习笔记——三(在windows操作系统上安装libnfc)

编辑系统环境变量“path”,添加下面的路径(如果没有添加)

D:\ProgramFiles\DevelopmentTools\doxygen\bin;      (Only if you installed Doxygen)
D:\ProgramFiles\DevelopmentTools\MinGW64\bin;
D:\ProgramFiles\DevelopmentTools\MinGW64\x86_64-w64-mingw32\lib32;
D:\ProgramFiles\DevelopmentTools\MinGW64\x86_64-w64-mingw32\include;
D:\ProgramFiles\DevelopmentTools\CMake\bin;
D:\ProgramFiles\DevelopmentTools\GnuWin32\bin;

测试是否所需要的软件和库都安装了以及系统变量是否配置正确,打开dos窗口,运行cmake命令:

NFC学习笔记——三(在windows操作系统上安装libnfc)

9.配置cmake libnfc工程

1)创建libnfc-build文件夹

2)打开dos窗口进入"libnfc-build"文件夹下,输入cmake-gui命令

cmake用于配置和生产软件工程所需的编译文件。配置一个工程的基本步骤如下:

A.选择工程源码目录,这个目录应该包括CMakeLists.txt文件,在本篇中libnfc源码目录是D:\ProgramFiles\DevelopmentToos\libnfc-1.7.0-rc7

B.选择工程的编译目录。这个目录是工程编译的目录,它可以与源码目录一个目录,也可以是不同的目录。为了清理时方便,建议使用单独的目录。如果目录不存在,CMake会自动创建目录。在本篇中的编译目录是libnfc-build

NFC学习笔记——三(在windows操作系统上安装libnfc)

源码和二进制目录选择完,点击"Configure"安装,打开配置窗口:

a.选择“MinGW Makefiles”生产器

b.选择"Use default native compilers"

c.点击完成按钮

NFC学习笔记——三(在windows操作系统上安装libnfc)

这会让CMake读取所有的输入文件从而发现所有工程被用到的变量。第一次变量将以红色背景显示,我们需要将探测到的红色的变量修改正确。对于一些工程配置需要进行多次,因此继续点击Configure按钮,知道没有红色为止。

NFC学习笔记——三(在windows操作系统上安装libnfc)

修正这些错误:

A.点击 PCRE_INCLUDE_DIRS,填入:D:/ProgramFiles/DevelopmentTools/GunWin32/include

B.点击PCRE_LIBRARIES,填入:D:/ProgramFiles/DevelopmentTools//GunWin32lib/libpcre.dll.a

C.点击Configure按钮

NFC学习笔记——三(在windows操作系统上安装libnfc)

修改错误:

A.点击LIBUSB_INCLUDE_DIRS变量,填入:D:/ProgramFiles/DevelopmentTools/libusb-win32-bin-1.2.6.0/include

B.点击LIBUSB_LIBRARIES变量,选择文件:D:/ProgramFiles/DevelopmentToolslibusb-win32-bin-1.2.6.0/lib/gcc/libusb.a

通过以上步骤,你可以编译一个32位的程序。对于64位系统,32位、64位的应用程序都可以运行,但是64位的程序只能运行在64位的操作系统上。

a.32位 MinGW GCC

libusb-win32-bin-1.2.6.0\lib\gcc\libusb.a

b.64位 MinGW GCC

直接连接libusb0.dll或者创建自己的导入lib

c.32位 MSVC(=Microsoft Visual C++)

libusb-win32-bin-1.2.6.0\lib\msvc\libusb.lib

d.64位 MSVC

libusb-win32-bin-1.2.6.0\lib\msvc_x64\libusb.lib

c.64位 MSVC for IA64

libusb-win32-bin-1.2.6.0\lib\bcc\libusb.lib

d.Borland C(仅32位)

libusb-win32-bin-1.2.6.0/lib/bcc/libusb.lib

e. 其他编译器,使用动态的

libusb-win32-bin-1.2.6.0\lib\dynamic\libusb-dyn.c

再次单击Configure按钮

NFC学习笔记——三(在windows操作系统上安装libnfc)

根据自己的需要配置libnfc,知道没有了红色的警告。在我的环境中我将以连接Adafruit PN532 RFID/NFC通过FTDI面板到windows vista。因为libnfc目前只支持通过UART的通信,我做了如下的改动:

A.设置CMAKE_BUILD_TYPE=Debug

B.设置CMAKE_ISNTALL_PREFIX=C:/Program Files/libnfc/

C.设置LIBNFC_DEBUG_MODE=ON

D.设置LIBNFC_DRIVER_PN532_UART=ON

E.设置所有的 LIBNFC_DRIVER_NNN=OFF

F.设置LIBNFC_SYSCONFDIR=C:/Program Files/libnfc/config

点击Configure按钮,然后点击Generate按钮

它将会在libnfc-build目录生成文件

10.用mingw32-make编译window 执行文件和libnfc.dll文件

进入libnfc-build目录,输入mingw32-make,执行文件被创建:

libnfc-build\utils目录下有:nfc-emulate-forum-tag4.exe、nfc-list.ext、nfc-mfclassic.exe、nfc-mfultralight.exe、nfc-read-forum-tag3.exe、nfc-relay-picc.exe、nfc-scan-devicxe.exe

libnfc-build\examples目录下有:nfc-anticol.exe、nfc-dep-initator.exe、nfc-dep-target.exe、nfc-emulate-forum-tag2.exe、nfc-emulate-tag.exe、nfc-emulate-uid.exe、nfc-mfsetuid.exe、nfc-poll.exe、nfc-relay.exe

libnfc.dll也被生成了

11.复制libnfc.dll到C:\Windows\System32下

通过上面的步骤,运行nfc-list.exe会报下面的错误:

This application has failed to start because libnfc.dll was not found. Re-installing the application may fix this problem.

将libnfc.dll文件复制到System32下后,修复这个错误。


NFC学习笔记——三(在windows操作系统上安装libnfc),布布扣,bubuko.com

NFC学习笔记——三(在windows操作系统上安装libnfc)

上一篇:【解决】UEFI+GPT模式下装系统(WIN7/WIN8)


下一篇:Boost-ioservices介绍