Hallo
Ich denke nicht, dass man das schon als genial bezeichenen kann:
In C werden Zeichenketten mit dem Zeichen 0 abgeschlossen, deshalb überprüft diese Version von SerPrint() lediglich, ob das nächste zu sendende Zeichen >0 ist. Das Beispiel oben funktioniert bei mir zufriedenstellend, die Ausgabe im Terminal sieht so aus:Code:#include "asuro-probot.h" #include "asuro-probot.c" void SerPrint(unsigned char *data) { unsigned char i = 0, j=0; UCSRB = 0x08; // enable transmitter while(data[i]) // nächstes Zeichen auf Endekennung 0 prüfen { if (UCSRA & 0x20) { // wait for empty transmit buffer UDR = data[i++]; // Zeichen ausgeben } } while (!(UCSRA & 0x40)); for (i = 0; i < 0xFE; i++) for(j = 0; j < 0xFE; j++); } int main(void) { int i; char zeichenkette[8]="testtext"; Init(); while(1) { SerWrite("SerWrite: abcABC123\n\r", 21); SerPrint("SerPrint: abcABC123\n\r"); SerPrint(zeichenkette); SerPrint("\n\r"); for(i=500; i--; Sleep(72)); } }
GrußCode:SerWrite: abcABC123 SerPrint: abcABC123 testtext SerWrite: abcABC123 SerPrint: abcABC123 testtext
mic






Zitieren


Lesezeichen