在linux下对ACR122T-E2进行编程

csj*_*ter 5 nfc

我有一个 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)

配置行,但没有帮助。

有人知道这个配置行应该是什么吗?

csj*_*ter 4

经过几个小时阅读不同站点的不同帖子,研究 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 世界。