我有一个 ACS ACR122T-E2 NFC 读卡器。我从http://www.acs.com.hk/en/products/109/acr122t-usb-tokens-nfc-reader/下载了linux驱动程序和ct-api库 。
我已从 ct-api 库存档文件中给出的标头中提取了示例 C 程序。我编译了它。我还创建了包含以下内容的 ctacs.ini 文件:
[CardTerminal]
CTN1=ACR122T
[ACR122T]
ICC1=ACS ACR122 25 00
Run Code Online (Sandbox Code Playgroud)
当我运行编译后的可执行文件时,我得到:
Error: CT_init failed with error -8
Run Code Online (Sandbox Code Playgroud)
其中 -8 表示基于头文件中的文档的“CT 错误”。
有人对 ACR122T-E2 以及为其提供的官方 C API 有一些经验吗?有人知道我应该检查什么或应该尝试做什么吗?
我猜我可能出错的唯一一件事是 ctacs.ini 文件。我不太确定是否
ICC1=ACS ACR122 25 00
Run Code Online (Sandbox Code Playgroud)
线是对的。我使用“lsusb -t”显示:
Bus 03.Port 1: Dev 25, If 0, Class=Chip/SmartCard, Driver=pn533, 12M
Run Code Online (Sandbox Code Playgroud)
当然我已经尝试过了
ICC1=ACS ACR122 03 01
Run Code Online (Sandbox Code Playgroud)
配置行,但没有帮助。
有人知道这个配置行应该是什么吗?
经过几个小时阅读不同站点的不同帖子,研究 Ubuntu 上可用的 NFC 相关软件包,并且还从官方 ACS 驱动程序的维护者/开发人员那里得到了一些帮助,我设法让这个示例程序运行起来。
解决方案是卸载/删除内核的默认驱动程序。
modprobe -r np533
modprobe -r nfc
Run Code Online (Sandbox Code Playgroud)
然后安装并运行 pcscd:
apt-get install pcscd
service start pcscd
Run Code Online (Sandbox Code Playgroud)
安装 pcsc_scan:
apt-get install pcsc-tools
Run Code Online (Sandbox Code Playgroud)
现在 pcsc_scan 可用于找出 ini 文件的正确 ICC 行:
...
Reader 0: ACS ACR122U 00 00
...
Run Code Online (Sandbox Code Playgroud)
因此 ini 文件的正确内容是:
[CardTerminal]
CTN1=ACR122T
[ACR122T]
ICC1=ACS ACR122U 00 00
Run Code Online (Sandbox Code Playgroud)
现在运行编译后的示例 C 程序(来自从 ACS 下载的 ct-api 库存档文件),输出为:
Response: 62 00
Run Code Online (Sandbox Code Playgroud)
不多,但至少它现在可以工作了,我可以继续探索这个 NFC 世界。
| 归档时间: |
|
| 查看次数: |
2771 次 |
| 最近记录: |