Hallo
Ich denke nicht, dass man das schon als genial bezeichenen kann:
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));
}
}
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:
SerWrite: abcABC123
SerPrint: abcABC123
testtext
SerWrite: abcABC123
SerPrint: abcABC123
testtext
Gruß
mic
Lesezeichen