Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过读卡器使用Java激活/打开ICC卡?_Java_Smartcard_Smartcard Reader - Fatal编程技术网

如何通过读卡器使用Java激活/打开ICC卡?

如何通过读卡器使用Java激活/打开ICC卡?,java,smartcard,smartcard-reader,Java,Smartcard,Smartcard Reader,我正在编写一个应用程序来与当前使用Java的智能卡交互。我有一个欧姆龙V2BF系列读卡器。该应用程序在Debian上运行 我已尝试使用建立与智能卡的连接 但我无法检测/获取任何使用 TerminalFactory factory = TerminalFactory.getDefault(); List<CardTerminal> terminals = factory.terminals().list(); TerminalFactory工厂=TerminalFac

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

我已尝试使用建立与智能卡的连接

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

    TerminalFactory factory = TerminalFactory.getDefault();
    List<CardTerminal> terminals = factory.terminals().list();
TerminalFactory工厂=TerminalFactory.getDefault();
列表端子=工厂.terminals().List();
我还尝试通过向欧姆龙阅读器发送命令包来使用“按下并激活(冷复位)ICC”,但响应总是“否定”

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

factory.terminals().list()
默认情况下仅显示与PCSC兼容的设备。我看不到任何关于当前阅读器对PCSC支持的信息。请查阅相关文件或供应商

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

您可能无法使用读卡器制造商提供的接口规范通过串行接口与读卡器通信。您可以使用Java通信API来实现这一点

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


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

非常感谢。我已经与读卡器进行了串行通信,但由于某些原因,当我尝试激活读卡器时,读卡器总是响应失败。(响应代码描述:“当C/R激活ICC时,C/R检测到供应Vcc短路。”“当C/R激活ICC时,出现超时或奇偶校验错误。”)知道怎么回事吗?我只有制造商提供的数据传输规范。在我看来,卡或读卡器可能有问题。我确实知道,有时测试卡会附带虚拟芯片,这可能会触发此错误。可能卡的触点或读卡器的引脚确实短路。奇偶校验错误也是极低级别故障的指示,例如在ICC硬件中。尝试不同的卡片,并检查它们是否完全被读卡器吞没。