我正在编写一个当前使用Java与智能卡交互的应用程序。我有一个欧姆龙V2BF系列读卡器。该应用程序在Debian上运行。
我已尝试使用Java Smart Card I/O API尝试与智能卡建立连接。
但是我无法检测/获取任何使用
TerminalFactory factory = TerminalFactory.getDefault();
List<CardTerminal> terminals = factory.terminals().list();我也试着通过发送一个命令包到OMRON阅读器来使用“按下并激活(冷重置) ICC”,但是响应总是“否定”。
我能知道我哪里做错了吗?任何建议都将不胜感激!
发布于 2012-01-06 11:52:05
默认情况下,factory.terminals().list()仅向您显示与PCSC兼容的设备。我没有看到任何关于PCSC支持当前阅读器的信息。请查阅文档或咨询供应商。
您的智能卡应该是与javax.smartcardio兼容的ISO7816-4智能卡,存储卡将无法工作。javax.smartcardio基本上与CommandAPDU和ResponseAPDU一起使用,这是用于“处理器”卡的ISO7816-4兼容数据结构。
您可能无法使用读卡器制造商提供的接口规范通过串行接口与读卡器通信。您可以使用Java Communications API来完成此操作。
请注意,许多制造商将以C/C++甚至.NET提供示例代码和库,在这种情况下,可以选择切换编程语言/平台或围绕本机代码创建JNI。
如果您正在为处理器卡(例如信用卡)写作,您甚至可以自己创建一个与javax.smartcardio兼容的终端并将其插入终端列表中。
https://stackoverflow.com/questions/8753042
复制相似问题