UWP — C ++ SmartCard связь

Я использую пространство имен 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 Пространство имен.

  1. Я что-то упускаю в общении?
  2. Как я обнаружил, 0x63 00 означает общую ошибку. Вы знаете больше об этом?
  3. Я ничего не нашел в этом пространстве имен, как использовать протокол t = 0 или t = 1. Это важно или он находит автоматически?

0

Решение

Вы должны поймать исключения, чтобы увидеть, что на самом деле происходит.

Например, попробуйте что-то вроде этого, когда вы получите буфер:

    try
{
IBuffer^ responseBuffer = task.get();
}
catch (COMException ^ex)
{
std::cout << "Transmit APDU failed with exception:" + ex->ToString() << std::endl;
}

ссылка

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]