Hallo zusammen,
ich war gerade dabei ein paar Zeilen Code für Arduino umzuschreiben.
Dabei bin ich auf folgende Probleme gestoßen, wo ich gerade nicht so recht weiß wie man das mit dem Arduino bewerkstelligt.
Es geht um eine Serielle Kommunikation über die ein Protokoll ausgetauscht werden soll. Das heißt, ich brauche teilweise formatierte "Strings" beim senden, als auch eine Formatierung der empfangenen Daten.
In dem ursprünglichen Projekt wurde mit fdevopen ein Kanal für stdio geöffnet, und man konnte mit printf bzw scanf die Daten formatiert senden und empfangen.
Beispiel:
fdevopen (uart_putchar, uart_getchar, 0);
int uart_putchar (char c){
if (c == '\n')
uart_putchar('\r');
//Warten solange bis Zeichen gesendet wurde
while(!(USR & (1<<UDRE)));
//Ausgabe des Zeichens
UDR = c;
return (0);
};
int uart_getchar (void){
while(!(USR & (1<<RXC)));
return(UDR);
};
void Time ( unsigned char *year,unsigned char *month,
unsigned char *day,unsigned char *hour,
unsigned char *minute,unsigned char *secound){
unsigned char tmp[30];
unsigned int var[5];
uart_clear();
printf("at+cclk?\r\n");
gets(tmp);
scanf("+CCLK: \"%2d/%2d/%2d,%2d:%2d:%2d+ \"\r\n",&var[0],&var[1],
&var[2],&var[3],
&var[4],&var[5]);
*year = var[0];
*month = var[1];
*day = var[2];
*hour= var[3];
*minute = var[4];
*secound = var[5];
};
oder:
//Senden Nachrichten String
for (tmp1 = 0;tmp1<tmp2;tmp1++){
printf("%02X", nachrichtneu[tmp1]);
};
printf("%c",0x1a);
Jetzt habe ich erst festgestellt, das fdevopen gar nicht mit Arduino genutzt werden kann.
Also Serial.print und Serial.read....
Aber wie erledige ich jetzt die formatierung? Sprich welchen Ersatz gibt es für printf, gets bzw. scanf?
Schonmal vielen Dank!
VG
Matthias