C++智能卡通信
C++ SmartCard communication
我正在使用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
命名空间。
- 我在沟通中错过了什么吗?
- 正如我发现的那样,0x63 00 意味着一般错误。你知道更多吗?
- 我在这个命名空间中没有发现如何使用协议 t=0 或 t=1。这很重要还是自动找到?
您需要捕获异常以查看实际发生的情况。
例如,在获取缓冲区时尝试如下操作:
try
{
IBuffer^ responseBuffer = task.get();
}
catch (COMException ^ex)
{
std::cout << "Transmit APDU failed with exception:" + ex->ToString() << std::endl;
}
裁判
相关文章:
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 是否可以使用winusb同时与多个相同的usb设备进行通信
- 混淆了如何使用IDL与Ethovision进行通信
- C++ Boost::asio串行通信与Arduino无法写入
- 我是否需要包含隐式使用/与 WindowsAPI 通信"Windows.h"?
- 通过TCP的PvP通信问题
- C++一个线程如何正确通信其任务已完成?
- 如何将 Firebase 与基于 Linux 的客户端应用配合使用,以便与服务器进行双向消息通信
- 删除功能不适用于串行通信后多个循环中的多个实例
- 网站和C++程序在同一台 Linux PC 上的通信
- 通过插槽和信号在不同线程中的两个qt对象之间进行通信
- 使用 pybind11 共享 MPI 通信器
- 进程间通信堆内存
- C++ TCP 套接字通信 - 连接按预期工作,几秒钟后失败,没有收到新数据,read() 和 recv() 块
- C++ 两台不同机器之间通过wifi进行套接字通信
- 提升::Asio 异步聊天客户端停止与服务器通信
- 与SPI NAND闪存(STM32L4,QSPI)的通信问题
- 线程之间的通信不起作用 - C++
- 如何在此功能中没有通信过程?
- C++智能卡通信