Hi, Ich hab hier nen GSM-Modem liegen (CT63) Was ich möchte ist mit QT über serielle Schnittstelle SMS empfangen und senden. Arbeite das 1. mal mit AT-Befehlen, und habe viele fragen: Für die Pin Eingabe habe ich folgendes gefunden: AT+CPIN? PIN-Abfrage AT+CPIN=nnnn PIN Eingabe Muss ich AT+CPIN? aufrufen? wozu? kann ich nicht gleich mit AT+CPIN=nnnn einfach die Pin übergeben? Muss ich beim starten oder sonst irgendwann AT+COPS=0 (automatisch Einbuchung) übergeben? Reicht folgende start Routine: AT ---> auf OK warten, sonst immer wieder AT senden AT+CPIN=0123 auf OK warten //fertig Wenn das Modem eine SMS empfängt, schickt es mir "von sich aus" irgendwelche Daten über das RS232? Oder muss ich einfach regelmäßig prüfen ob neue SMS da sind? Gibt es irgendwo ein Beispiel für eine "minimalistische Startroutine"? Muss ich das Modem irgendwie "herunterfahren" oder einfach Stecker ziehen? Gruß
Ein kleiner Tipp. Bei derartigen Sachen ist es eine extrem gute Idee, nicht gleich mit Programmierung loszulegen, sondern * das Modul an eine serielle Schnittstelle kabeln (das brauchst du sowieso) * ein Terminalprogramm aufmachen, auf die richtige Baudrate einstellen * die Kommandos durch händisches eintippen auszuprobieren und auch zu beobachten, wie das Gerät (in deinem Fall eben das GSM Modem) reagiert. Genau aus dem Grund sind die Befehle (der sog. AT-Befehlssatz) nämlich allesamt einfache Textkommandos. Weil man da die wenigsten Schwierigkeiten hat und weil man die zur Not auch einfach als Mensch, ohne sich die Finger zu verrenken, per Terminal zum Gerät senden kann und sich die Reaktion des Geräts im Terminal wieder ansehen kann. Also: einfach mal 'das Programm' für kurze Zeit vergessen und manuell mit dem Gerät 'spielen' um sich mit ihm und den Kommandos, in Abstimmung mit dem Handbuch, vertraut machen.
Ich hau den Link mal hier in die Runde, damit konnte ich damals meine GSM Probleme/Aufgaben lösen und weiter entwickeln. http://m2msupport.net/m2msupport/software-and-at-commands-for-m2m-modules/
Karl Heinz schrieb: > Bei derartigen Sachen ist es eine extrem gute Idee, nicht gleich mit > Programmierung loszulegen, sondern > * das Modul an eine serielle Schnittstelle kabeln (das brauchst du > sowieso) > * ein Terminalprogramm aufmachen, auf die richtige Baudrate einstellen > * die Kommandos durch händisches eintippen auszuprobieren und auch zu > beobachten, wie das Gerät (in deinem Fall eben das GSM Modem) reagiert. Das hab ich ja schon getan... löst meine Frage für einen "richtigen" Startup aber nicht.
Rentner Opa schrieb: > löst meine Frage für einen "richtigen" Startup aber nicht. Vielleicht hilft dir folgendes: http://www.ct63.de/data/CT63_AT_commands.pdf
Rentner Opa schrieb: > Karl Heinz schrieb: >> Bei derartigen Sachen ist es eine extrem gute Idee, nicht gleich mit >> Programmierung loszulegen, sondern >> * das Modul an eine serielle Schnittstelle kabeln (das brauchst du >> sowieso) >> * ein Terminalprogramm aufmachen, auf die richtige Baudrate einstellen >> * die Kommandos durch händisches eintippen auszuprobieren und auch zu >> beobachten, wie das Gerät (in deinem Fall eben das GSM Modem) reagiert. > > Das hab ich ja schon getan... löst meine Frage für einen "richtigen" > Startup aber nicht. Wieso löst es das nicht? Stell dir fraglichen Werte ein, schalte das Modem aus und wieder ein und sieh nach ob sie noch aktiv sind.
Suche mal nach 3gpp 27.007 dort findest du alle at Befehle. Ansonsten das modem abfragen welche Befehle es kann mit At+clac Gruss Chris
>Wenn das Modem eine SMS empfängt, schickt es mir "von sich aus" >irgendwelche Daten über das RS232? Oder muss ich einfach regelmäßig >prüfen ob neue SMS da sind? Am einfachsten ist regelmäßiges nachschauen (pollen). Alle uC die ich kenne können einen Interrupt bei Empfang eines Zeichens auslösen. Was ist dein Ziel-Hardware? AVR? PC? Du mußt dann halt eine entsprechende Routine schreiben. Ist zwar wesentlich sportlicher als pollen aber dafür eleganter. Könnte aber auch sein, daß dir das GSM-Modul einen gewissen Luxus bietet und bei vollem Empfangspuffer eine Portleitung schaltet (würde sich im Datenblatt finden lassen). Ansonsten kann ich nur das bestätigen was Karl Heinz schrieb. >Das hab ich ja schon getan... löst meine Frage für einen "richtigen" >Startup aber nicht. Du kannst einen "richtigen" Startup des GSM-Moduls komplett über die manuelle Eingabe übers Terminal simulieren, nur die Ablaufzeit stimmt halt nicht. Möglicherweise bietet Hyperterminal sogar die Möglichkeit, ein Textfile zum GSM Modul zu schicken - zum testen könnte man dann alle Parameter dort eintragen und das Modul ist innerhalb von ner halben Sekunde parametriert.
@167-761 Ich glaube, du hast das Problem missverstanden... Es geht nicht darum, auf dem uC festzustellen, ob Zeichen empfangen wurden, sondern ob das GSM Modul eine SMS empfangen hat. Da ist der uC erst einmal egal, genauso ob Pollen oder Interrupt benutzt wurde. Hast du das mit dem Textfile schon mal probiert? Das mag bei einem einzelnen AT-Kommando noch gehen, aber bei einem 2. AT Kommando in der Textdatei gibt es dann schon Probleme...außer das Terminalprogram schickt die Zeichen so langsam, dass das GSM Modul eine Chance hat dazwischen das Kommando in Ruhe auszuführen.
Ja, aber der springende Punkt ist doch, dass man all diese Dinge im Vorfeld mit einem Terminal ausprobieren und erkunden kann. Das klingt auf den ersten Blick wie verlorene Zeit, ist es aber nicht. Noch bei allen Geräten mit Textschnittstelle, egal ob Modem oder Drucker oder Plotter oder RFID Leser oder Spektrumanalyzer oder Spektrograph oder ..., hat es sich im weiteren Verlauf immer als hilfreich erwiesen, zuvor einfach mal das Gerät händisch per Terminal angesteuert zu haben. Sei es jetzt um Konfigurationswerte auf die Schnelle auszuprobieren, sei es um unklare Stellen im Handbuch zu klären, sei es um unterschiedliche Reihenfolge der Kommandos auszuprobieren, sei es um zu klären was genau denn jetzt eigentlich als Rückmeldung in welchen Fällen kommt, sei es um festzustellen wie ein Modem bei eingehendem Anruf reagiert, sei es um bewusst Fehler zu provozieren und zu beobachten was das Gerät macht (sowohl physikalisch als auch an der Schnittstelle), sei es um auszuprobieren ob es einen \n als Trenner akzeptiert (wenn das so vorgesehen ist) oder ob es ein \r oder gar beides sein muss, etc. etc. Es war noch immer hilfreich da ein paar Stunden investiert zu haben und sei es nur um die Gewissheit zu haben, dass man die Dinge, die man in der Doku gelesen hat, auch richtig verstanden hat. Und bis jetzt war bei allen Geräten, die ich in den Fingern hatte, noch immer irgendwas dabei, was ich in der Doku missverstanden habe und das sich dann beim Spielen mit dem Gerät schnell und einfach hat klären lassen. Das zum Beispiel > Wenn das Modem eine SMS empfängt, schickt es mir "von sich aus" > irgendwelche Daten über das RS232? Oder muss ich einfach > regelmäßig prüfen ob neue SMS da sind? lässt sich in 2 Minuten klären. Am Terminal ankabeln, SMS zum Gerät schicken und dann sieht man im Terminal ob was kommt oder nicht. Was soll daher die Frage? Mit einem ersten Versuch am Terminal ist die Frage schneller geklärt als sie hier im Forum getippt wurde. Eines ist natürlich klar: Einfach an die serielle ankablen, Terminal starten, AT eintippen und das Modem antwortet mit OK, dann 'Super' sagen und das Terminal wieder ausschalten, ist zu wenig. Da muss man halt mal ein wenig nachdenken, wie man die Dinge geklärt kriegt, die man klären möchte. Aber das sehen wir hier im Forum ja immer öfter, das man den Leuten eigenständiges systematisches und zielgerichtetes arbeiten erst mal beibringen muss.
:
Bearbeitet durch User
Rentner Opa schrieb: > Wenn das Modem eine SMS empfängt, schickt es mir "von sich aus" > irgendwelche Daten über das RS232? Oder muss ich einfach regelmäßig > prüfen ob neue SMS da sind? Bei manchen Geräten gibt es eine sogenannte new message indication, z.B. via "AT+CNMI=1,1,0,0,1\r\n" beim SL55 Aber wie bereits mehrfach erwähnt, ist es ratsam im Vorfeld vie HTerm o.a. zu probieren. Jedes Gerät kann anders reagieren.
Also zur Hilfestellung: AT+CIND command anschauen "message" message received (0-1) abfragen. AT+CGSMS command anschauen Select service for MO SMS messages +CGSMS und weitere Befehle nach "3GPP 27.007" http://www.etsi.org/deliver/etsi_ts/127000_127099/127007/10.08.00_60/ts_127007v100800p.pdf Eventuell noch das "reporting" zu Hilfe nehmen. Aber genaueres was das "Modem" kann gibt nur das Datenblatt an. Wie schon mehrfach erwähnt probier das erst mal mit einem Terminalprogramm aus. (Hterm ist gut nur unter Win 7 als admin ausführen nicht vergessen). Gruss Chris
Hallo, meines wissens bieten viele Modems die Möglichkeit dich zyklisch darüber zu informieren was in ihnen vorgeht. Und wenn du nicht zu viele Kommandos schickst kannst du ja per software am pc pollen. Und sosnt zur Einwahl: Ich hatte mit dem ez340 zu tun, da war es so das am Anfang das Autobauding stand was heist, dass man AT solange sendet bis kein Kauderwelsch zurückkommt sondern AT+OK oder sowas in die Richtung. Danach kannst du einfah AT+CPIN=0123\r\n schicken und wieder warten bis eine Bestätigung kommt. Bei mir war es so das das schon eine Weile gedauert hat. Weil sich das GSM Modem gleich noch ins Netz gewählt hat. Irgendwann kam dann die Antwort Call Ready und noch irgendwas was ich aber grade nicht im Kopf habe. Beste Grüße
Falls das GSM-Modem bei SMS Empfang ein "Ring" Signal liefert, kann damit eine IRQ-Routine angestoßen werden, die die Kommunikation imnititiert. Falls nicht, wie bei meinem TC35-kompatiblem-China-Modem (entgegen der Beschreibung) hilft nur Pollen.
Danke für die Infos, habe es jetzt am laufen nach der Vorgehensweise von sebastian_m96, SMS-Empfang wird vom PC alle 10 Sekunden "gepollt".
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.