【问题标题】:CadClientInterface.powerUp() hangs while connecting smart card using Serial Port使用串行端口连接智能卡时 CadClientInterface.powerUp() 挂起
【发布时间】:2018-05-08 09:40:19
【问题描述】:

我正在尝试使用以下代码使用串行端口连接到我的智能卡:

String port = "COM1"; // serial port
CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier(port);

String appname = "CadClient";
int timeout = 30000;

CommPort commPort = portId.open(appname, timeout);              
InputStream is = commPort.getInputStream(); 
OutputStream os = commPort.getOutputStream();

cad = CadDevice.getCadClientInstance(CadDevice.PROTOCOL_T1, is, os);

//...hangs here for unlimited time
cad.powerUp();

任何帮助为什么它卡在 powerUp() 上。谢谢

【问题讨论】:

    标签: smartcard javacard smartcard-reader contactless-smartcard


    【解决方案1】:

    转到您的设备属性并选中“不要打开 APDU 控制台”复选框。

    这应该是这样的:

    【讨论】:

    • 感谢您的输入,但我没有看到此选项。你能详细说明一下吗?
    • 你用什么IDE?什么模拟器?
    • 我正在使用eclipse IDE并使用物理设备:omni智能卡
    • 您的设备是否出现在 IDE 中? (我用一些图片编辑了我的答案)。
    • 感谢您的努力,但此选项仅适用于模拟器而非实际设备。
    【解决方案2】:

    它挂起的最常见原因是卡没有响应重置,即没有从卡收到 ATR。这是在 powerUP() 上完成的。

    这可能是由于一些其他 APDU 客户端正在使用非开放端口或端口。

    【讨论】:

    • 我假设 cadClient 只打开了一次端口,但是如何确保呢?
    • 我相信某些 cad 设备或正在运行的模拟器已打开 PORT(用于服务)。您的代码是连接到该端口的客户端,从而将 APDU 发送到正在运行的服务。
    • 请问你有什么建议?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    相关资源
    最近更新 更多