0

我正在编写一个应用程序来与当前使用 Java 的智能卡进行交互。我有一个 OMRON V2BF 系列读卡器。该应用程序在 Debian 上运行。

我尝试使用Java Smart Card I/O API来尝试建立与智能卡的连接。

但我无法检测/获取任何卡终端使用

    TerminalFactory factory = TerminalFactory.getDefault();
    List<CardTerminal> terminals = factory.terminals().list();

我还尝试通过向 OMRON 阅读器发送命令数据包来使用“按下并激活(冷重置)ICC”,但响应始终为“否定”。

我可以知道我做错了哪一部分吗?任何建议将不胜感激!

4

1 回答 1

2

factory.terminals().list()默认情况下只会向您显示 PCSC 兼容设备。我没有看到有关当前阅读器的 PCSC 支持的任何信息。请咨询相关文档或供应商。

您的智能卡应该是兼容 ISO 7816-4 的智能卡才能与 javax.smartcardio 一起使用,存储卡将无法使用。javax.smartcardio 基本上与 CommandAPDU 和 ResponseAPDU 一起使用,它们是“处理器”卡的 ISO 7816-4 兼容数据结构。

您可能无法使用阅读器制造商提供的接口规范通过串行接口与阅读器进行通信。您可以使用 Java Communications API 来执行此操作。

请注意,许多制造商将提供 C/C++ 甚至 .NET 的示例代码和库,在这种情况下,可以选择切换编程语言/平台或围绕本机代码创建 JNI 包装器。

如果您正在编写处理器卡(例如信用卡),您甚至可以自己创建一个 javax.smartcardio 兼容终端并将其插入终端列表。

于 2012-01-06T03:52:05.240 回答