Gast
#952982
hi, mein projekt wächst und immer wieder befinden sich neue steine auf dem weg zur großen erleuchtung. vorab möchte ich auf meinen anderen beitrag hinweisen in dem ihr mir schon geholfen habt und der für die weitere problemlösung vielleicht hilfreich ist. Beitrag "UART empfängt nur einmal." nun möchte ich ja auch gerne per sms befehle schicken können, auf die der µC dann reagiert. dafür würde ich ja wie immer uart_gets() benutzem um etwas vom modem einzulesen. jedoch weiß ich ja nicht wann eine sms eintrifft und um dies zu erkennen müsste der µC ja permanent an der seriellen schnittstelle auf text warten. dies wäre mit dem aufruf von uart_gets() erledigt da die funktion erst beendet wird wenn die max string länge erreicht wurde oder ein string endzeichen erkannt wird. eine ausgabe vom modem wäre z.B. +CMTI:"SM",3 diese zeile sagt mir das eine neue sms im speicherbereich 3 gespeichert wurde. die darauf folgende antwort vom µC wäre dann (öffne SMS 3)-->AT+CMGR=3. folglich wird der inhalt der sms ausgegeben mit dem sich dann arbeiten ließe. mein problem ist nun: nach dem aufruf der funktion uart_gets() wartet der µC auf zeichen. falls aber keine sms eintrifft empfängt der µC keine zeichen vom modem, wartet bis ins nächste jahrhundert und beendet nicht die uart_gets() funktion um mit dem weiteren programm fortzufahren. heißt: in der zeit zwischen aufruf der funktion und eingehender sms beobachtet der µC nicht den status von pinX. das ist aber fatal da der µC ja eine sms verschicken soll wenn sich was an pinX verändert. kurz gesagt in zwei fällen soll reagiert werden: wenn sich pinX verändert und wenn eine sms mit befehl eintrifft. wie löse ich dieses problem?