turbofizzl
Gebruiker
- Lid geworden
- 13 aug 2009
- Berichten
- 5
Beste mensen,
Ik ben nieuw hier dus allereerst iedereen de groeten en leuk te zien dat er nog meer tobbers zijn als ik.:shocked:
Ik ben een redelijke noob (groentje) met C programeren en ben bezig met een opdracht om een log bestand van de Vector CANoe om te zetten in een in EXCEL importeerdbare .txt file.
Wellicht zegt een Vector CANoe jullie niks maar dit is een aparaatje waarmee je een CAN-bus zogezegd kan afluisteren en de berichten kan loggen.
Deze gelogde data wordt in een .txt file als volgt opgeslagen:
Nu is mijn taak om dit bestand om te zetten naar een .txt bestand welke in rijen en colommen is gerangschikt volgens het volgende idee:
Zoals zichtbaar is zal ik de rijen waar Tx in voorkomt moeten "selecteren" en deze weg moeten schrijven in de gewenste kolommen in het nieuwe bestand.
Het openen en wegschrijven lukt wel maar ik krijg met geen mogelijkheid de juiste waardes in het nieuwe bestand.
Dit is de Code die ik nu heb gemaakt (even in kladblok zetten om et leesbaar te maken denk ik):
[cpp]
#include <stdio.h>
/* #include <conio.h> */
int main(void)
{
FILE *fpin, *fpout;
char flin[256],flout[256];
char rel,x; /* relavant data and new line variables */
signed char meetdata[13]; /* array for logdata */
/* clrscr; */ /* clear screen */
printf("This program converts standard Vector CANoe log files to Ecxel readable files\n\nPlease specify source filename:"); /* print programheader with programfunction and ask for input filename */
scanf("%s",flin); /* read input filename */
/* does inputfile exist ? */
if ((fpin = fopen(flin, "r"))== NULL)
{
printf("Cannot open source file!\n"); /* if not, show cannot open input */
return 1;
}
/* if inputfile does exist */
else
{
printf("Please specify destination filename:"); /* ask to specify destination filename */
scanf("%s",flout); /* read output filename */
fpout = fopen(flout, "w"); /* open outputfile */
x=0; /* select first line of logdata */
}
while((rel=fgetc(fpin))!=EOF) /* while relavant databyte = byte from inputfile and not end of file */
{
if (meetdata[3]=='Tx') /* if logdata colum 2 is 1 (synch) */
{
meetdata[x]=rel; /* logdata[x] is relavant databyte */
x++; /* select new line of logdata */
}
/* write in outputfile */
fprintf(fpout,"%f\t%X\t%d\t%X\t%X\t%X\t%X\t%X\t%X\t%X\t%X\n",meetdata[0],meetdata[2],meetdata[5],meetdata[6],meetdata[7],meetdata[8],meetdata[9],meetdata[10],meetdata[11],meetdata[12],meetdata[13]);
}
/* time\tid\tdlc\tbyte0\tbyte1\tbyte2\tbyte3\tbyte4\tbyte5\tbyte6\tbyte7\n */
fclose(fpin); /* close inputfile */
fclose(fpout); /* close outputfile */
return 0;
}
/*end of main*/
[/cpp]
Ik moet deze opdracht zeer binnenkort af hebben, maar kom er echt niet meer uit!!!
Mijn leraar is al ruim een maand en voorlopig nog zoiets niet bereikbaar vanwegen de vakantieperiode dus daar heb ik ook niets aan.
Please kan iemand mij helpen?
Alvast erg bedankt.
Ik ben nieuw hier dus allereerst iedereen de groeten en leuk te zien dat er nog meer tobbers zijn als ik.:shocked:
Ik ben een redelijke noob (groentje) met C programeren en ben bezig met een opdracht om een log bestand van de Vector CANoe om te zetten in een in EXCEL importeerdbare .txt file.
Wellicht zegt een Vector CANoe jullie niks maar dit is een aparaatje waarmee je een CAN-bus zogezegd kan afluisteren en de berichten kan loggen.
Deze gelogde data wordt in een .txt file als volgt opgeslagen:
Code:
date Tue May 26 03:12:51 pm 2009
base hex timestamps absolute
no internal events logged
// version 7.0.0
0.000000 EnvGearDown := 1
0.000000 EnvGearDown := 0
0.000000 EnvGearDown := 1
0.000000 EnvGearDown := 0
0.000000 EnvGearDown := 1
0.000000 EnvGearDown := 0
0.000000 EnvGearDown := 1
0.000000 EnvGearDown := 0
0.000000 EnvGearDown := 1
0.000000 EnvGearDown := 0
0.000000 EnvGwSwitchIgnition := 2
0.000000 EnvGwSwitchIgnition := 0
2.000000 EnvGwSwitchIgnition := 1
3.000000 EnvGwSwitchIgnition := 2
3.100158 1 110 Tx d 3 02 00 00
3.100158 EnvDashboardEngESPDsp_ := 1
3.100158 EnvDashboardEngABSDsp_ := 1
3.100158 EnvDashboardEngOilDsp_ := 1
3.100158 EnvDashboardEngWaterDsp_ := 1
3.100158 EnvDashboardEngBaterryDsp_ := 1
3.100158 EnvBusCommActiveDsp := 1
3.120180 1 1A0 Tx d 4 00 00 00 00
3.120300 1 1F0 Tx d 1 00
3.120416 1 1F1 Tx d 1 00
3.140180 1 1A0 Tx d 4 00 00 00 00
3.150120 1 1F0 Tx d 1 00
3.150236 1 1F1 Tx d 1 00
3.160180 1 1A0 Tx d 4 00 00 00 00
3.180180 1 1A0 Tx d 4 00 00 00 00
3.180300 1 1F0 Tx d 1 00
3.180416 1 1F1 Tx d 1 00
3.200158 1 110 Tx d 3 02 00 00
3.200338 1 1A0 Tx d 4 00 00 00 00
3.205529 1 41A Tx d 4 1A 01 01 FF
3.205529 EnvNMReceiver26 := 1a
3.205529 EnvNMStatusDsp26 := 1
3.210120 1 1F0 Tx d 1 00
3.210236 1 1F1 Tx d 1 00
Nu is mijn taak om dit bestand om te zetten naar een .txt bestand welke in rijen en colommen is gerangschikt volgens het volgende idee:
Code:
time id dlc byte0 byte1 byte2 byte3 byte4 byte5 byte6 byte7
3.100158 110 3 02 00 00
3.120180 1A0 4 00 00 00 00
3.120300 1F0 1 00
3.120416 1F1 1 00
3.140180 1A0 4 00 00 00 00
3.150120 1F0 1 00
3.150236 1F1 1 00
3.160180 1A0 4 00 00 00 00
3.180180 1A0 4 00 00 00 00
3.180300 1F0 1 00
3.180416 1F1 1 00
3.200158 110 3 02 00 00
3.200338 1A0 4 00 00 00 00
3.205529 41A 4 1A 01 01 FF
3.210120 1F0 1 00
3.210236 1F1 1 00
Het openen en wegschrijven lukt wel maar ik krijg met geen mogelijkheid de juiste waardes in het nieuwe bestand.
Dit is de Code die ik nu heb gemaakt (even in kladblok zetten om et leesbaar te maken denk ik):
[cpp]
#include <stdio.h>
/* #include <conio.h> */
int main(void)
{
FILE *fpin, *fpout;
char flin[256],flout[256];
char rel,x; /* relavant data and new line variables */
signed char meetdata[13]; /* array for logdata */
/* clrscr; */ /* clear screen */
printf("This program converts standard Vector CANoe log files to Ecxel readable files\n\nPlease specify source filename:"); /* print programheader with programfunction and ask for input filename */
scanf("%s",flin); /* read input filename */
/* does inputfile exist ? */
if ((fpin = fopen(flin, "r"))== NULL)
{
printf("Cannot open source file!\n"); /* if not, show cannot open input */
return 1;
}
/* if inputfile does exist */
else
{
printf("Please specify destination filename:"); /* ask to specify destination filename */
scanf("%s",flout); /* read output filename */
fpout = fopen(flout, "w"); /* open outputfile */
x=0; /* select first line of logdata */
}
while((rel=fgetc(fpin))!=EOF) /* while relavant databyte = byte from inputfile and not end of file */
{
if (meetdata[3]=='Tx') /* if logdata colum 2 is 1 (synch) */
{
meetdata[x]=rel; /* logdata[x] is relavant databyte */
x++; /* select new line of logdata */
}
/* write in outputfile */
fprintf(fpout,"%f\t%X\t%d\t%X\t%X\t%X\t%X\t%X\t%X\t%X\t%X\n",meetdata[0],meetdata[2],meetdata[5],meetdata[6],meetdata[7],meetdata[8],meetdata[9],meetdata[10],meetdata[11],meetdata[12],meetdata[13]);
}
/* time\tid\tdlc\tbyte0\tbyte1\tbyte2\tbyte3\tbyte4\tbyte5\tbyte6\tbyte7\n */
fclose(fpin); /* close inputfile */
fclose(fpout); /* close outputfile */
return 0;
}
/*end of main*/
[/cpp]
Ik moet deze opdracht zeer binnenkort af hebben, maar kom er echt niet meer uit!!!
Mijn leraar is al ruim een maand en voorlopig nog zoiets niet bereikbaar vanwegen de vakantieperiode dus daar heb ik ook niets aan.
Please kan iemand mij helpen?
Alvast erg bedankt.
Laatst bewerkt door een moderator: