INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Binärdatei nach .txt datei



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

09.12.2011, 11:25
Beitrag #1

Martin Heller Offline
LVF-Stammgast
***


Beiträge: 250
Registriert seit: Feb 2010

2011 SP1
2008
EN

5232
Schweiz
Binärdatei nach .txt datei
Hallo Zusammen

Kann mir jmd helfen.
Ich habe eine Binärdatei, welche mit Matlab erstellt wurde und möchte diese in Labview einlesen und dann weiter bearbeiten.
Zur Zeit wurde es mit einem .c-Code umgewandelt. Leider sind meine .c Kenntnisse sehr bescheiden.
Gibt es eine einfache Variante, um diese Datei mit Labview umzuwandeln?

mfg Martin

PS: Habe diesen Link im Forum gefunden, jedoch habe ich kein Matlab

Anhang: Decode c-File;


c-Code:
Zitat:/*this decode program works under windows - no clue if this also works under linux - i doubt so...*/
/* syntax is decode.exe xxxxx.datalog */
/* this converts the datalog file to a textfile with max 50 spotentries - so if the file containes more spots you have to change this...*/
qa

# include <stdlib.h>
# include <stdio.h>
# include <string.h>

# define BUFF 64
# define MAXNBR 64

int main( int argc, char * argv[] )
{

int i[BUFF],j,counts,lastnbr,firstnbr;
int fsize,ii[20000],q,t;
char workstr[16],str[1024];
int maxspots=50;

FILE *fd;
FILE *fout;

fd = fopen (argv[1],"r");
if (fd == NULL)
{
printf( "Error opening infile: %s\n", argv[1] );
return 0;
}

fread (&ii,20000,1,fd);
close(fd);

/*create the filename of the outputfile*/
sprintf(str,"%s_txt",argv[1]);

fout = fopen (str,"w");
if (fd == NULL)
{
printf( "Error opening outfile: %s\n", str );
return 0;
}

/*
spot presappl delay mon1dose mon2dose usum tsum uexp ucal texp tcal ufwhexp ufwhcal tfwhexp tfwhcal hexp hcal x y z range1 range2 clockungat clockantia ADG3nominal ADG3actual clkSUMgat clkSUMungat mon1SUMungat mon1SUMgat mon2SUMungat ILK-Flag Kleak_corr mon2gt dmaf1 LBinzIC dmad1l dmad1r kma3 kma5 ama1 mon1ungat mongungat guardungat mon1gtA ame1 ame2 mmac3a alpha beta beta_ex fme1L fme1R mmec1a miniStrT0 miniStrT1 miniStrT2 miniStrT3 miniStrT4 miniStrU0 miniStrU1 miniStrU2 miniStrU3 miniStrU4
*/
firstnbr=lastnbr=counts=0;

q=0;
i[0]=1;
/*write first line*/
printf("spot presappl delay mon1dose mon2dose usum tsum uexp ucal texp tcal ufwhexp ufwhcal tfwhexp tfwhcal hexp hcal x y z range1 range2 clockungat clockantia ADG3nominal ADG3actual clkSUMgat clkSUMungat mon1SUMungat mon1SUMgat mon2SUMungat ILK-Flag Kleak_corr mon2gt dmaf1 LBinzIC dmad1l dmad1r kma3 kma5 ama1 mon1ungat mongungat guardungat mon1gtA ame1 ame2 mmac3a alpha beta beta_ex fme1L fme1R mmec1a miniStrT0 miniStrT1 miniStrT2 miniStrT3 miniStrT4 miniStrU0 miniStrU1 miniStrU2 miniStrU3 miniStrU4");
fputs("spot presappl delay mon1dose mon2dose usum tsum uexp ucal texp tcal ufwhexp ufwhcal tfwhexp tfwhcal hexp hcal x y z range1 range2 clockungat clockantia ADG3nominal ADG3actual clkSUMgat clkSUMungat mon1SUMungat mon1SUMgat mon2SUMungat ILK-Flag Kleak_corr mon2gt dmaf1 LBinzIC dmad1l dmad1r kma3 kma5 ama1 mon1ungat mongungat guardungat mon1gtA ame1 ame2 mmac3a alpha beta beta_ex fme1L fme1R mmec1a miniStrT0 miniStrT1 miniStrT2 miniStrT3 miniStrT4 miniStrU0 miniStrU1 miniStrU2 miniStrU3 miniStrU4",fout);

/*while (fread (&i,4*BUFF,1,fd)) */
while (i[0]>0)
{
for (t=0;t<BUFF;t++)
{
i[t]=ii[q*BUFF+t];
}

q++;

if (i[0] > 0)
{
if (firstnbr == 0) firstnbr=i[0];

if (lastnbr <= i[0]) /*spotnumbers are always increasing! */
{
lastnbr=i[0];
counts++;
sprintf(str,"\n");
for (j=0;j<MAXNBR;j++)
{
sprintf(workstr," %d",i[j]);
strcat(str,workstr);
}
fputs(str,fout);
printf("%s",str);
}
else if (i[0] == 1) /*more than 1 field in the binary file*/
{
printf("\n%d lines, Spot %d ... Spot %d\n",counts,firstnbr,lastnbr);
lastnbr=i[0];
counts=1;
sprintf(str,"\n");
for (j=0;j<MAXNBR;j++)
{
sprintf(workstr," %d",i[j]);
strcat(str,workstr);
}
fputs(str,fout);
}
}
}

fclose(fd);
fclose(fout);

printf("\n%d lines, Spot %d ... Spot %d\n",counts,firstnbr,lastnbr);


}


Angehängte Datei(en)
0.0 .zip  MatlabDatei.zip (Größe: 4,9 KB / Downloads: 289)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
09.12.2011, 12:28
Beitrag #2

Martin Heller Offline
LVF-Stammgast
***


Beiträge: 250
Registriert seit: Feb 2010

2011 SP1
2008
EN

5232
Schweiz
RE: Binärdatei nach .txt datei
Edit: Diese Binärdatei wurde nicht mit Matlab erstellt. Habe eine falsche Information bekommen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.12.2011, 22:54
Beitrag #3

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
RE: Binärdatei nach .txt datei
Beim Einlesen von Binärdateien muss man auf die Reihenfolge der Bytes achten. Es gibt das Big-Endian (Motorola) und das Little-Endian (Intel) Format. Ggf. muss man die Bytefolge beim Einlesen umtauschen. LabView arbeitet mit Big-Endian und Windows c- und c++ Programme in der Regel mit Little-Endian.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.12.2011, 15:53
Beitrag #4

gentos Offline
LVF-Grünschnabel
*


Beiträge: 46
Registriert seit: Dec 2011

2011
2007
DE

41462
Deutschland
RE: Binärdatei nach .txt datei
Scheint ne Datenbank-Datei zu sein...
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.12.2011, 09:02
Beitrag #5

Martin Heller Offline
LVF-Stammgast
***


Beiträge: 250
Registriert seit: Feb 2010

2011 SP1
2008
EN

5232
Schweiz
RE: Binärdatei nach .txt datei
Vielen Dank für eure Antworten

Zitat:Beim Einlesen von Binärdateien muss man auf die Reihenfolge der Bytes achten. Es gibt das Big-Endian (Motorola) und das Little-Endian (Intel) Format. Ggf. muss man die Bytefolge beim Einlesen umtauschen. LabView arbeitet mit Big-Endian und Windows c- und c++ Programme in der Regel mit Little-Endian.
Leider gibt es keine Veränderung, wenn ich zwischen Little-und Big-Endian wechsle.
es kommt "nur" 'Kabis' raus...
gibt es noch etwas anderes, welches ich beachten muss?

mfg Martin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.12.2011, 11:07
Beitrag #6

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Binärdatei nach .txt datei
Um das Problem zu lösen, müßtest Du jemand finden, der die das gepostete C-Programm analysiert und herausfindet, in welchen Formaten welche Variablentypen in welcher Reihenfolge gespeichert werden. Das hier ist ein Labview-Forum, da kannst Du nicht unbedingt erwarten dass das jemand macht. Wenn das dann klar ist, dann ist es ein Klacks, die Daten mit Labview zurückzulesen - und dabei kann Dir auch das Labview-Forum helfen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Binäre Datei nach Stromausfall leer M.M.H. 6 7.054 16.11.2021 12:52
Letzter Beitrag: GerdW
  UnZip - Datei schließen nach dem UnZip angry_Nameless 6 8.512 15.01.2021 13:33
Letzter Beitrag: Martin.Henz
  In Word Datei (*.doc) nach String/Zeichen/regulären Ausdruck suchen Lessy2205 10 13.097 19.03.2013 11:24
Letzter Beitrag: GerdW
  Auslesen aus Binärdatei. Hasenfuss 1 5.403 14.01.2013 19:49
Letzter Beitrag: Lucki
  Seltsame Zahlen beim Einlesen einer Binärdatei Peer 3 4.531 28.04.2011 15:43
Letzter Beitrag: Peer
  Datei nach Stichworten durchsuchen holistic 7 11.864 15.12.2010 14:39
Letzter Beitrag: Napoleon

Gehe zu: