我使用Windows.Devices.SmartCards命名空间与智能卡进行通信。我找到了读卡器还有卡片。我也可以发送APDU命令到卡。但问题是,经过几个ADPU后,我收到响应0x63 00,而不是0x90 00。大多数情况下,它在第二次或第三次APDU之后停止接收命令,在此之后,响应始终为0x63 00,直到我移除卡并重新连接为止。
这是我发送的代码:
String^ NFC::transmit(Array<unsigned char>^ outgoing)
{
String^ response = "";
IBuffer^ out = CryptographicBuffer::CreateFromByteArray(outgoing);
auto task = create_task(connection->TransmitAsync(out)).then([](IBuffer^ buffer) {
return buffer;
});
IBuffer^ responseBuffer = task.get();
response = CryptographicBuffer::EncodeToHexString(responseBuffer);
return response;
}connection是一个有效的SmartCardConnection^对象。
create_task函数来自concurrency命名空间。
发布于 2018-03-16 15:15:29
您需要捕获异常,才能看到实际发生的事情。
例如,当您获得缓冲区时,尝试这样的操作:
try
{
IBuffer^ responseBuffer = task.get();
}
catch (COMException ^ex)
{
std::cout << "Transmit APDU failed with exception:" + ex->ToString() << std::endl;
}https://stackoverflow.com/questions/49323475
复制相似问题