DeltaDirac
26-03-2011, 18:38
Ciao,
vorrei un consiglio per leggere in JAVA dei dati binari in uscita da un AD converter di uno strumento di misura. Non conosco molto bene il linguaggio e la difficoltà principale che incontro è nella corretta lettura del formato binario.
Lo strumento è basato su piattaforma Intel x86, quindi i dati sono salvati in memoria in formato little-endian come signed int a 32 bit.
Ho tentato vari approcci con DataInputStream, BufferedReader, metodo read() diretto... ma non riesco ad ottenere una lettura corretta: ottengo valori pazzi, molto alti o zero, quando il contenuto del file binario è di altro tipo.
Esiste una macro interna allo strumento che esporta i dati in formato ASCII e dal confronto mi rendo conto dell'errore.
Questa è la classe ReadBin che ho tentato di utilizzare:
// ReadBin.java
import java.io.DataInputStream;
import java.io.FileInputStream;
public class ReadBin {
public static void main(String args[]) {
try {
// Crea un data input stream
FileInputStream fis = new FileInputStream("fileName.dat");
DataInputStream dis = new DataInputStream(fis);
// Legge i primi venti dati dallo stream
for (int t=0; t<20; t++)
System.out.println(dis.readByte());
// Chiude il file input stream
fis.close();
} catch (Exception e)
{
System.out.println("Exception: " + e);
}
}
}
Il file binario è fileName.dat, che consta di 65536 dati di 4 bytes l'uno.
Al seguente LINK è reperibile il file fileName.zip che contiene il file binario (fileName.dat) e il file in formato ascii (fileName.txt).
http://dl.dropbox.com/u/21541796/fileName.zip
Grazie per ogni buon lume ;)
DD
vorrei un consiglio per leggere in JAVA dei dati binari in uscita da un AD converter di uno strumento di misura. Non conosco molto bene il linguaggio e la difficoltà principale che incontro è nella corretta lettura del formato binario.
Lo strumento è basato su piattaforma Intel x86, quindi i dati sono salvati in memoria in formato little-endian come signed int a 32 bit.
Ho tentato vari approcci con DataInputStream, BufferedReader, metodo read() diretto... ma non riesco ad ottenere una lettura corretta: ottengo valori pazzi, molto alti o zero, quando il contenuto del file binario è di altro tipo.
Esiste una macro interna allo strumento che esporta i dati in formato ASCII e dal confronto mi rendo conto dell'errore.
Questa è la classe ReadBin che ho tentato di utilizzare:
// ReadBin.java
import java.io.DataInputStream;
import java.io.FileInputStream;
public class ReadBin {
public static void main(String args[]) {
try {
// Crea un data input stream
FileInputStream fis = new FileInputStream("fileName.dat");
DataInputStream dis = new DataInputStream(fis);
// Legge i primi venti dati dallo stream
for (int t=0; t<20; t++)
System.out.println(dis.readByte());
// Chiude il file input stream
fis.close();
} catch (Exception e)
{
System.out.println("Exception: " + e);
}
}
}
Il file binario è fileName.dat, che consta di 65536 dati di 4 bytes l'uno.
Al seguente LINK è reperibile il file fileName.zip che contiene il file binario (fileName.dat) e il file in formato ascii (fileName.txt).
http://dl.dropbox.com/u/21541796/fileName.zip
Grazie per ogni buon lume ;)
DD