Für ein Projekt mit dem gsm shield brauche ich ein Funktion, mit der ich das Guthaben auf der Simkarte auslesen kann.
Beim Tel geht das mit *101#.
Wie kann ich den Text, der zurückgesendet wird mit gsm schield auslesen?
das Problem ist, die Mitteilungen kommen nicht per SMS. Die Texte worum es geht sind Providerantworten auf USSD-Codes.
Sie erscheine beim Handy auf dem Display und können nicht gespeichert werden. Wenn ich einen solchen Code per voiceCall abschicke, kann ich an den LED´s erkennen, das was zurück kommt. Weiß aber nicht wie ich an die Daten komme.
Gruß Frank
Hey,
das klingt doch schon mal gut. Ich habe wenig Ahnung von den AT Befehlen. Wofür steht die 1 und die 15 im Befehl. Wie wird der Text zurückgegeben?
Gruß Frank
Ich glaube nicht das der Befehl "*101#" ein "AT-Comand" ist. Der Provider erkennt daran das du eine Anfrage gestellt hast und schickt dir diese, aber das ist bestimmt keine AT Antwort.
Schau mal ob du im Internet eine Liste von allen AT Comands findest, dann muss diese Funktion ja dabei stehen.
Hallo,
*101# ist sicher kein AT-befehl. Dieser diente als Beispiel. Aber es ist ein USSD-Befehl. Die Befehle zu senden ist mein Problem nicht. Die Antwort vom Provider ist mein Problem. Der Provider schickt die Antwort als Netzmitteilung (was immer das heißt) zurück. Mein Problem ist, das ich wissen muss, wie viel Guthaben auf der Karte steht. Dieses als SMS an eine andere Nummer gesendet wird. Ich habe keine Ahnung, wie ich den zurückgesendeten Text auslesen kann.
Gruß Frank
Na wenn es nur um SMS geht kannst du ja wirklich dein Betrag nach dem Aufladen eintragen und bei jeder SMS den Wert abziehen. So kannst du in jede SMS dein Guthaben einpflegen oder die Anzahl der noch verschickbaren SMS.
Es muss doch ein Möglichkeit geben diese Netzmitteilungen auszulesen. Klar weiß ich, das es verschiedene Möglichkeiten gibt. Es bleibt aber schätzen. Und es geht nicht nur um SMS, aber meistens.
Habe das grade auch nochmal probiert, funktioniert bei mir jetzt auch. Hatte beim ersten mal einen Fehler gemacht. Weißt du auch, wie ich den Text in ein Array kriege?
Bei der fertigen Anwendung hängt kein Computer am Port.
Erst ein dickes Danke
Hallo
da hätte ich auch selber drauf kommen können, einfach den seriellen Puffer auslesen. Oft denkt man doch zu kompliziert.
Besten Dank, damit komme ich weiter.
Die Puffergröße kann man anpassen wenn man weniger Text will. Hier wird ja eigentlich nur der erste Satz gebraucht. Der Code hat nämlich die Eigenschaft, dass er die Daten aus dem seriellen Eingangspuffer ausliest selbst wenn sie nicht ins Array passen und dann trotzdem den String korrekt terminiert.
Serenifly:
Die Puffergröße kann man anpassen wenn man weniger Text will. Hier wird ja eigentlich nur der erste Satz gebraucht. Der Code hat nämlich die Eigenschaft, dass er die Daten aus dem seriellen Eingangspuffer ausliest selbst wenn sie nicht ins Array passen und dann trotzdem den String korrekt terminiert.
Ich benutze das so 1 zu 1 bei meinen Projekten und bin sehr zufrieden damit 8)
Anmerkung dazu:
Das sind zwei Varianten. Das Problem ist hier eventuell der Umlaut. Nach der normalen erweiterten ASCII Tabelle ist 'ä' -> \xE4:
Da sollte man vielleicht mal mit einem Terminal-Programm schauen als was das genau codiert ist. Wenn es damit Probleme gibt funktioniert dann nämlich strstr() wahrscheinlich nicht.
Deshalb die zweite Variante. Die umgeht das mit dem Umlaut und such statt dessen nach dem "EUR". Dann geht man zwei Leerzeichen zurück und hat die Zahl.