hallo, ich habe vor mir ein Programm zum Auslesen von Debug-Daten eines Mikrokontrollers zu schreiben. Die daten werden über eine Debug schnittstelle auf der platine durch einen Seriellen konverter zum pc gesendet. Wenn ich mit dem Programm MicroSPS Downloader die daten auslese kommt dieses heraus http://img511.imageshack.us/my.php?image=debugdatenty6.jpg. Anscheinend sind das mit der Base64 Funktion codierte daten. Leider habe ich nur einen code in C zum decodieren könnt ihr mir diesen code in einen VB code umwandeln?
#include <stdio.h>
#include <stdlib.h>
char DebugString[] = {'#','0','D','=','=','>','Z','=','{',']',
'?',']','=','I','L','=','m','E','=','F',
'M','>','_','|','q','M','=','=','=','=',
'=','=','=','=','=','=','=','=','=','=',
'=','=','=','=','=','=','=','=','=','=',
'=','=','=','=','=','=','=','=','=','=',
'=','=','=','=','=','=','=','=','=','=',
'=','=','=','=','=','=','=','=','=','=',
'=','=','=','=','=','=','=','=','=','=','='}; //Das sind die Decodierten Daten
unsigned int DebugStringLength=89;
unsigned int DebugString2Length=0;
char DebugString2[100]; //Hier kommen die mit decode64 umgewandelten Daten rein
char Digitaldaten[2];
int Analogdaten[100];
void Decode64(void);
void SaveAnalogDaten(void);
static void SaveDigitalData(void);
int CheckDebugString(void);
int main(void){
printf("start");
if(1){ //hier sollte CheckDebugString stehen
puts("check-OK");
Decode64();
SaveDigitalData();
SaveAnalogDaten();
}
puts("bereit zur Ausgabe");
int i;
for(i=0;i<50;i++){
printf("%d, ",(int)Analogdaten);
}
}
void SaveAnalogDaten(void){
int i;
for(i=0;i<32;i++)
{
Analogdaten=(int)((DebugString2[3+i*2]<<8) | DebugString2[2+i*2]);
}
}
static void SaveDigitalData(void){
Digitaldaten[0]=DebugString2[0];
Digitaldaten[1]=DebugString2[1];
}
void Decode64(void){
unsigned char a,b,c,d;
DebugString2Length = 0;
unsigned char x,y,z;
unsigned int StartByte = 3;
while(StartByte < DebugStringLength - 5)
{
a = DebugString[StartByte++] - '=';
b = DebugString[StartByte++] - '=';
c = DebugString[StartByte++] - '=';
d = DebugString[StartByte++] - '=';
x = (a << 2) | (b >> 4);
y = ((b & 0x0f) << 4) | (c >> 2);
z = ((c & 0x03) << 6) | d;
DebugString2[DebugString2Length++] = x;
DebugString2[DebugString2Length++] = y;
DebugString2[DebugString2Length++] = z;
}
DebugString2Length--;
}
int CheckDebugString(void){ //gibt true oder false zurück
int r=1;
if(DebugString[0]!='#')
r=0;
char sollCRC;
int i;
for(i=0;i<DebugStringLength-2;i++){
sollCRC+=DebugString;
}
if(DebugString[DebugStringLength-2]!= ('='+ sollCRC / 64))
r=0;
if(DebugString[DebugStringLength-1]!= ('='+ sollCRC % 64))
r=0;
return r;
} Wenn das Programm fertig ist soll mann die decodierten werte grafisch dargestellt sehen wie hier z.b.
http://img139.imageshack.us/my.php?image=darstellungdatenpj3.jpg
Ich hoffe ihr könnt mir ein wenig dabei helfen.
mfg |