PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 0x00 und das Ende des Strings


pippo
2009-02-21, 13:25:06
Sitz hier grad vor nem kleinen Problem und weiß nicht weiter. Ich will ein Handy mit einem uC ansteuern und muss dazu die Daten in ein bestimmtes Format umwandeln, die sog. PDU. Diese PDU speichere ich in einem char-Array und sieht z.B. so aus:

00 25 00 0C 91947112325476 00 00 0B D4F29C4E2FE3E9BA4D19

Wie unschwer zu erkennen ist, wird zwischendrin auch 0x00 übertragen, was mir die Probleme mit dieser Funktion bereitet:

void uart_puts(char *string) {

while (*string) {

while (!(UCSRA & (1<<UDRE))) ;

UDR = *string++;
}
}

Beim ersten 0x00 wird natürlich sofort abgebrochen. Hab mir schon überlegt das Array z.B. mit 0x40 (@) vorzubelegen, aber zum einen wäre es möglich, dass dieses Zeichen selbst mal im Array vorkommt, andererseits wird die Funktion z.B. auch durch

uart_puts("AT+CMGF=0");

aufgerufen und hätte wieder 0x00 als String-Ende. Wie könnt ich das anders lösen? Würde schon gern den String übergeben, da die Funktion bereits fertig ist.

Berni
2009-02-21, 13:52:09
Übergib der Funktion halt einfach die Länge des char-Arrays als int. Dann kannst du entsprechend mitzählen ob das Ende erreicht ist oder nicht.