NFC學習筆記——三(在windows作業系統上安裝libnfc)

來源:互聯網
上載者:User

標籤:nfc   libnfc   c++   

本篇翻譯文章:

這篇文章主要是說明如何在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作業系統上安裝軟體需要下列軟體、庫檔案:

  • TDM-GCC MinGW Compiler
  • libusb-win32
  • PCRE for Windows
  • CMake
  • Doxygen(不是必須的)
如果未安裝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)雙擊開啟執行檔案,按確認按鈕


2)選擇MinGW-w64/TDM64 Experimental(32-bit and 64-bit),然後按下一步

註:

你需要安裝"MinGW/TDM(32 bit)"版本, “MinGW-w64/TDM64 Experimental"版本將運行在32、64位作業系統上


3)選擇TDM-GCC安裝目錄,例如:D:/ProgramFiles/MinGW64


4) 選擇離你最近的下載伺服器,單擊下一步


5)選擇"TDM-GCC Recormmended,All Packages" ,按下一步


6)等待TDM-GCC安裝完成,點擊下一步


7)點擊完成按鈕,完成TDM-GCC的安裝


關於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)雙擊運行可執行檔,點擊下一步


2)接收協議,點擊下一步


3)選擇PCRE安裝目錄,例如:D:/ProgramFiles/GnuWin32,點擊下一步


4)選擇“Full installation”,按下一步


5)輸入在開始菜單中的開始菜單的捷徑,按下一步


6)選擇附加選項,單擊下一步


7)點擊安裝


8)點擊完成


4.安裝CMake

在 http://www.cmake.org/下載CMake windows平台二進位分發包(Win32 installer)。CMake是一個可跨平台的開源的串連庫。可以下載版本:cmake-2.8.11.2-win32-x86.exe

1)雙擊可執行檔,點擊我同意按鈕


2)選擇添加CMake到目前使用者系統路徑,點擊下一步


3)選擇CMake安裝目錄,例如:D:/ProgramFiles/Development/CMake,點擊下一步


4)選擇開始菜單,點擊安裝


5)等待CMake安裝完成,點擊下一步


6)點擊完成按鈕,完成安裝


5.安裝Doxygen

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

註:安裝Doxygen不是必須的,如果沒有安裝,在用CMake配置libnfc的時候會顯示警告,但是你可以將此警告忽略。

1)雙擊可執行檔,點擊下一步


2)接收協議,點擊下一步


3)選擇Doxygen的安裝目錄,如:D:/ProgramFiles/DevelopmentToos/Doxygen


4)選擇"Full installation" ,點擊下一步


5) 輸入開始菜單Doxygen捷徑,點擊下一步


6)點擊安裝


7)Doxygen正在安裝


8)閱讀Doxygen資訊,點擊下一步


9)點擊完成


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.設定系統路徑

開啟“系統屬性”視窗:

右鍵點擊“電腦“

選擇”屬性“

點擊“進階系統設定”,開啟“進階”視窗,點擊"環境變數"


在系統變數子視窗中選擇“,點擊編輯


編輯系統內容變數“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命令:


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


源碼和二進位目錄選擇完,點擊"Configure"安裝,開啟配置視窗:

a.選擇“MinGW Makefiles”生產器

b.選擇"Use default native compilers"

c.點擊完成按鈕


這會讓CMake讀取所有的輸入檔案從而發現所有工程被用到的變數。第一次變數將以紅色背景顯示,我們需要將探測到的紅色的變數修改正確。對於一些工程配置需要進行多次,因此繼續點擊Configure按鈕,知道沒有紅色為止。


修正這些錯誤:

A.點擊 PCRE_INCLUDE_DIRS,填入:D:/ProgramFiles/DevelopmentTools/GunWin32/include

B.點擊PCRE_LIBRARIES,填入:D:/ProgramFiles/DevelopmentTools//GunWin32lib/libpcre.dll.a

C.點擊Configure按鈕


修改錯誤:

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按鈕


根據自己的需要配置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下後,修複這個錯誤。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.