Gast
#1057158
Hallo Leute,
ich hoffe, dass mir einer bei meinem Problem behilflich sein kann.
Und zwar versende ich bei einem Ereignis mehrere SMS über einen
Atmega32. Hierbei treten jedoch regelmäßig Fehler auf, so dass mehrer
SMS nicht gesendet werden. Um diese Fehler zu behandeln, möchte ich den
Ergebniscode den mir das Modem schickt gerne auslesen und darauf
dementsprechend reagieren. (So dass die SMS evt. nochmal gesendet wird)
Dies wollte ich mit folgenden Methoden realisieren:
/* Zeichen empfangen */
uint8_t uart_getc(void)
{
while (!(UCSRA & (1<<RXC))) // warten bis Zeichen verfuegbar
;
return UDR; // Zeichen aus UDR an Aufrufer
zurueckgeben
}
void uart_gets( char* Buffer, uint8_t MaxLen )
{
uint8_t NextChar;
uint8_t StringLen = 0;
NextChar = uart_getc(); // Warte auf und empfange das nächste
Zeichen
// Sammle solange Zeichen, bis:
// * entweder das String Ende Zeichen
kam
// * oder das aufnehmende Array voll
ist
while( NextChar != '\n' && StringLen < MaxLen - 1 ) {
*Buffer++ = NextChar;
StringLen++;
NextChar = uart_getc();
}
// Noch ein '\0' anhängen um einen
Standard
// C-String daraus zu machen
*Buffer = '\0';
}
Wenn ich zum testen Daten über das Hyperterminal sende, werden diese
durch die obenstehenden Methoden richtig erfasst. Die eigentliche
Aufgabe, den Ergebniscode des Modems abzufangen, wird jedoch nicht
erfüllt...dies funktioniert nicht. Er hängt sich bei: NextChar =
uart_getc(); Obwohl ja Daten vom Modem gesendet werden...!? Wie gesagt
über's Hyperterminal funktionierts.
Würde mich über jede Hilfe freuen!
Vielen Dank im Vorraus
Gruß Thomas