readMF1 static method
Implementation
static Future<List> readMF1(
int sectorIndex, int blockIndex, Uint8List key) async {
var llaves = await channel.invokeMethod('readMF1', [3, 0, key]);
if (llaves == null) {
key = Uint8List.fromList([255, 255, 255, 255, 255, 255]);
print('Tarjeta Nueva');
return [1];
} else {
var tipo = await channel.invokeMethod('readMF1', [39, 0, key]);
print("TIPO TARJETA");
print(tipo);
if (tipo == null) {
var _resultado = new List.filled(
64, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
var _lectura;
var cont = 0;
for (var i = 0; i < 16; i++) {
for (var j = 0; j < 4; j++) {
/*if (i == 1 || i == 0) {
_lectura = await channel.invokeMethod('readMF1', [
i,
j,
Uint8List.fromList([255, 255, 255, 255, 255, 255])
]);
} else {
_lectura = await channel.invokeMethod('readMF1', [i, j, key]);
}*/
_lectura = await channel.invokeMethod('readMF1', [i, j, key]);
print('Sector' +
i.toString() +
'Bloque' +
j.toString() +
'-' +
_lectura.toString());
if (_lectura == null) {
_lectura = 'Login Fail';
}
try {
_resultado[cont] = _lectura;
cont = cont + 1;
} catch (e) {
print(e.toString() + '-' + i.toString() + '-' + j.toString());
return [0];
}
if (cont == 64) {
print('Lectura Completa');
return await procesar(_resultado);
}
}
}
} else {
var serial = await channel.invokeMethod('readMF1', [9, 1, key]);
print(serial);
if (serial[3] != 5) {
print("Tarjeta No Asignada");
return [2];
} else if (serial == null) {
print('Tarjeta Nueva');
return [1];
} else {
var _resultado = new List.filled(
256, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
var _lectura;
var cont = 0;
for (var i = 0; i < 32; i++) {
for (var j = 0; j < 4; j++) {
if (i == 1 || i == 0) {
_lectura = await channel.invokeMethod('readMF1', [
i,
j,
Uint8List.fromList([255, 255, 255, 255, 255, 255])
]);
} else {
_lectura = await channel.invokeMethod('readMF1', [i, j, key]);
}
print(_lectura);
if (_lectura == null) {
_lectura = 'Login Fail';
}
try {
_resultado[cont] = _lectura;
cont = cont + 1;
} catch (e) {
print(e.toString() + '-' + i.toString() + '-' + j.toString());
return [0];
}
if (cont == 128) {
for (var k = 32; k < 40; k++) {
for (var h = 0; h < 16; h++) {
_lectura =
await channel.invokeMethod('readMF1', [k, h, key]);
print(_lectura);
if (_lectura == null) {
_lectura = 'Login Fail';
}
try {
_resultado[cont] = _lectura;
cont = cont + 1;
} catch (e) {
print(e.toString() +
'-' +
i.toString() +
'-' +
j.toString());
return [0];
}
if (cont == 256) {
print('Lectura Terminada');
return await procesar4k(_resultado);
}
}
}
}
}
}
}
}
}
return [];
}