У меня проблема, которая смутила меня на пару дней. Я хочу отправить данные размером более 255 байт со смарт-карты в хост-приложение. Я видел блок кода на каком-то сайте. этот код выглядит следующим образом:
private void sendData(APDU apdu) {
// work out how many bytes to send this time and how many will be left
BUF_IN_OFFSET[0] = 0;
short remain = (short) ((short)372 - BUF_IN_OFFSET[0]);
boolean chain = remain > MAX_APDU;
short sendLen = chain ? MAX_APDU : remain;
Util.arrayCopy(data, (short) 0, apdu.getBuffer(), (short) 0, sendLen);
// Get ready to send
apdu.setOutgoing();
apdu.setOutgoingLength((short)sendLen);
apdu.sendBytesLong(apdu.getBuffer(), BUF_IN_OFFSET[0], sendLen);
// Check to see if there are more APDU's to send
if (chain) {
BUF_IN_OFFSET[0] += sendLen; // count the bytes sent
remain -=sendLen;
ISOException.throwIt((short)((ISO7816.SW_BYTES_REMAINING_00) + remain));
} else {
BUF_IN_OFFSET[0] = 0; // no more bytes to send
}
}
Когда я отправляю apdu на карту в симуляторе netbeans, он отправляет 6100 правильно. но когда я отправляю его на реальную карту (smartcafe 3.2). мне прислали 9000. значит в симуляторе работает, а на реальной карте не работает. Я предполагаю, что это связано с протоколом T=0 или T=1. Я не нашел кода для T=1. выше код для T = 0.
заранее спасибо.
GET LENGTH
и инструкциюREAD BINARY
с параметром смещения.) - person martijno   schedule 23.10.2013