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





 
			
			
 ) hab ich keine Lust jedes mal wenn ich SerWrite benutze (ich benutze sehr viele davon um den Programmablauf dann am Hyperterminal beobachten zu können) jedesmall die Zeichen zu zählen.
 ) hab ich keine Lust jedes mal wenn ich SerWrite benutze (ich benutze sehr viele davon um den Programmablauf dann am Hyperterminal beobachten zu können) jedesmall die Zeichen zu zählen. 
 
 
					
					
					
						 Zitieren
Zitieren


Lesezeichen