Después de algun tiempo desaparecido vuelvo a retomar el proyecto aparcado que tenia por las circunstancias de la vida.
Aqui os dejo un fragmento del codigo en la que el fichero del conductor del tacografo lo divido y analizo las diferentes partes en la que se compone segun BOE 105 de 2005 pag. 15127 observando un error en FID 500 que define Application_indentification cuyo FID es 501(hex 0x0500).
Codigo:
Aqui os dejo un fragmento del codigo en la que el fichero del conductor del tacografo lo divido y analizo las diferentes partes en la que se compone segun BOE 105 de 2005 pag. 15127 observando un error en FID 500 que define Application_indentification cuyo FID es 501(hex 0x0500).
Codigo:
- FileInputStream fis = null;
- DataInputStream entrada = null;
- DataOutputStream salida = null;
- File fichero = new File("a.TGD");
- System.out.println("numero de byte del fichero: " + fichero.length());
- byte[] array_byte = new byte[(int) fichero.length()];
- byte n;
- try {
- String cadena;
- fis = new FileInputStream("a.TGD");
- entrada = new DataInputStream(fis);
- boolean ok = true;
- CardIccIdentification icc;
- while (true) {
- ArchivoElemental ae = new ArchivoElemental();
- // *************** id del archivo *********************
- cadena = String.format("0x%02x", entrada.readByte());
- cadena += String.format("%02x", entrada.readByte());
- ae.FIDhex = cadena;
- if (FIDtoStr(ae.FIDhex) != "") {
- ae.FID = FIDtoStr(cadena);
- }
- // **************** tipo de archivo (elemental o firma)
- // ********************
- ae.tipo = entrada.readByte();
- // **************** longitud del archivo (elemental o firma=128)
- // *************
- char longitud = entrada.readChar();
- int total = Integer.valueOf(longitud);
- ae.longitud = total;
- // ***************** datos archivo elemental
- // **************************************
- byte[] datos = new byte[total];
- entrada.read(datos, 0, total);
- ae.datos = datos;
- if (ae.tipo == 00 ) {
- System.out.println("FID : " + ae.FID);
- System.out.println(" FID HEX:" + ae.FIDhex);
- System.out.println("Longitud: " + ae.longitud);
- // salida=new DataOutputStream(new
- // FileOutputStream(ae.FID,true));
- // salida.write(datos);
- // salida.close();
- // for (byte da : datos) {
- // System.out.format("%h", da);
- // }
- }
- lista.add(ae);
- }
- } catch (FileNotFoundException e) {
- System.out.println(e.getMessage());
- } catch (EOFException e) {
- System.out.println("Fin de fichero");
- } catch (IOException e) {
- System.out.println(e.getMessage());
- } finally {
- try {
- if (fis != null) {
- fis.close();
- }
- if (entrada != null) {
- entrada.close();
- }
- } catch (IOException e) {
- System.out.println(e.getMessage());
- }
- }
- }
- public static String FIDtoStr(String word) {
- String cadena = "";
- switch (word) {
- case "0x0002":
- cadena = "ICC";
- break;
- case "0x0005":
- cadena = "IC";
- break;
- case "0x0501":
- cadena = "Application identification";
- break;
- case "0xc100":
- cadena = "Card certificate";
- break;
- case "0xc108":
- cadena = "CA certificate";
- break;
- case "0x0520":
- cadena = "Identification";
- break;
- case "0x050E":
- cadena = "Card download";
- break;
- case "0x0521":
- cadena = "Driving license info";
- break;
- case "0x0502":
- cadena = "Events data";
- break;
- case "0x0503":
- cadena = "Faults data";
- break;
- case "0x0504":
- cadena = "Driver activity data";
- break;
- case "0x0505":
- cadena = "Vehicles uses";
- break;
- case "0x0506":
- cadena = "Places";
- break;
- case "0x0507":
- cadena = "Currents usage";
- break;
- case "0x0508":
- cadena = "Control activity data";
- break;
- case "0x0522":
- cadena = "Specific conditions";
- break;
- default:
- cadena = "cadena desconocida";
- break;
- }
- return cadena;
- }
- }
Una vez identificadas las partes de que se compone los archivos ahora viene estudiar algo de ASN.1 para el mapeo con las clases java arduo trabajo.

No hay comentarios:
Publicar un comentario