000
14.11.2005, 16:07 Uhr
~fallen0ne
Gast
|
Hallo zusammen!
Ich bin gerade dabei über die COM Schnittstelle Strings, die die Größe, ein Keyword und eine Anzahl von Integer Werten enthalten, zu senden auch auch zu empfangen. Das klappt eigentlich auch relativ gut, nur fängt der an zu spinnen, sobald sich eine "10" darin befindet.
Der String ist folgendermaßen deklariert:
unsigned char send_buffer[255];
und wird dann in einer anderen Funktion über eineen Pointer folgendermaßen gefüllt:
ptr[0]=7; ptr[1]=0x52; ptr[2]=20; *((unsigned short*)&ptr[3])=10; *((unsigned short*)&ptr[5])=100;
Hier wird die 10 auf 2 Bytes verteilt, was jedoch keine Rolle spielt..selbst wenn ich in nur einem Byte die "10" eintrage, kommt beim empfangenen String folgendes raus:
com_buffer[0]=0x52; com_buffer[1]=20; com_buffer[2]=13; <--?!?!? com_buffer[3]=10; com_buffer[5]=100;
also wird an den Index vor der 10 eine 13 eingefügt..warum auch immer
Ich vermute den Fehler beim Empfangen-Teil des Programmes, da der Debugger das "Senden-Array" ja noch richtig anzeigt..
Hier der Quelltest des "Empfängers":..
Code: |
int main (void) {
int size; uint8 s; uint8 com_buffer[255]; uint8 *ptr=com_buffer;
FILE* com;
com=fopen("COM1:","r"); if(com==NULL){ printf("Not opened\n"); } else printf("Opened\n");
size=fgetc(com); fread(&com_buffer, sizeof(s), size, com); fclose(com); }
|
Gesendet wird der String mit :
fwrite(&send_buffer, sizeof(f), k, com)
Hat irgendjemand ne Idee was da los ist?? :-)
Vielen dank schonmal gruss |