内容
int SCardTransmit(
int hCard,
Pointer<SCARD_IO_REQUEST> pioSendPci,
Pointer<Uint8> pbSendBuffer,
int cbSendLength,
Pointer<SCARD_IO_REQUEST> pioRecvPci,
Pointer<Uint8> pbRecvBuffer,
Pointer<Uint32> pcbRecvLength)
我写的代码
int SCARD_PROTOCOL = 0;
switch (pdwActiveProtocol.value) {
case SCARD_PROTOCOL_T0:
SCARD_PROTOCOL = SCARD_PROTOCOL_T0;
break;
case SCARD_PROTOCOL_T1:
SCARD_PROTOCOL = SCARD_PROTOCOL_T1;
break;
default:
print("Unknown protocol");
break;
}
int hCard = phCard.value;
List<int> data = [0xff, 0xca, 0x00, 0x00, 0x00];
Uint8List bytes = Uint8List.fromList(data);
Pointer<Uint8> pbSendBuffer = bytes.allocatePointer();
Pointer<Uint8> pbRecvBuffer = calloc<Uint8>();
int cbSendLength = bytes.length;
Pointer<Uint32> pcbRecvLength = pbRecvBuffer.cast<Uint32>();
Pointer<SCARD_IO_REQUEST> pioSendPci = calloc<SCARD_IO_REQUEST>()
..ref.cbPciLength = sizeOf<SCARD_IO_REQUEST>()
..ref.dwProtocol = SCARD_PROTOCOL;
ret = SCardTransmit(hCard, pioSendPci, pbSendBuffer, cbSendLength, nullptr,
pbRecvBuffer, pcbRecvLength);
这很成功,但我无法获得 UID。问题是什么?
我知道有什么遗漏或错误,但我不知道它是什么。
我们使用的是:https://pub.dev/packages/win32
使用的读卡器:RC-380
添加
Uint8List byte = pbRecvBuffer.asTypedList(pcbRecvLength.value);
1:[0, 0, 0, 0, 0, 0, 0, 0, 224, 159]
2:[0, 0, 0, 0, 0, 0, 0, 0, 204, 107]
与第一次和第二次不同。