Hi Leute! Möchte mit einem ATMEGA8 ein Siemens Handy (S45) ansteuern bzw. die Antwort vom Telefon abfragen / auswerten. -> das Ansteuern selbst ist kein problem; aber ich bekomme leider keine antworten vom Handy. Weiss nicht ob es am Code oder an der Schaltungliegt!? (Schaltung müsste aber eigentlich ok sein!) Kurz zur Programm-Funktion: Wenn Schalter gedrückt (INT0) -> sende befehl zum Telefonbuch auslesen -> splitte die Antwort auf und lese bestimtme Telefonnummer aus -> wähle diese Telefonnummer -> wenn Handy antwortet (Hex: 0x31) -> dann führe funktionen aus (Overflow, INT1). C-Code müsste doch eigentlich in ordnung sein - hab einfach keine Idee mehr woran es liegen könnte...! Wär super wenn ihr euch das vielleicht mal kurz anschaun könntet! gruß, semo
Könnte es aber vielleicht auch an der UART-Empfang-Initialiserung liegen bzw. dass irgendwas mit dem UDR auslesen nicht funkt?
so, ich glaub jetzt wirds so langsam was... -> habe festgestellt, dass das Mobiltelefon den at-befehl nicht vestanden hat, weil der Schalter geprellt hat! -> jedoch hab ich noch immer ein problem mit der Rückmeldung vom Handy: ich bekomme zwar die gewünschte antwort (+cbr: 99, "<nummer>", 129, "<name>") aber das Handy setzt gleich anschließend ein "OK" nach! -> und somit steht bei mir im Register nur noch das OK drinnnen! -> wie kann ich das verhindern, damit die vorherige antwort nicht ersetzt wird?? vielleicht kann mir jemand helfen!? thx, gruß semo
ähm, "OK verwerfen" -> wie meinst du das!? das ok kommt doch nach dem zeugs was ich haben will!?*aufderleitungsteh*
Würde mich auch interessieren, wie ich das OK verwerfen kann?? Brauch sowas ähnliches :) bzw. ob es noch eine ander Möglichkeit gibt. MfG Ominös
hmm ich hab recht viel mit den AT Befehlen gearbeitet. zwar mit dem modem tc35 aber zu nem handy besteht eigentlich kaum ein unterschied (außer dass das tc35 eben den textmode unterstützt) nur wie meinst des, dass du nur mehr das ok im register hasst?? in welchem register, im udr? du kannst ja nur ein Ascii Zeichen in einem Register speichern.. denn wenn du alle daten im ram speicherst sollte es ja kein problem sein das ok einfach wegzumachen bzw. die nutzdaten zu verwenden.. in meinem fall hab ich eine grobe datenauswertung schon im interrupthandler gemacht (also herausfiltern von steuerinformationen).. nimm einfach steuerzeichen wie beistriche oder sowas als anhaltspunkt das wär dann mal mein projekt: www.verkehrsleitsystem.at.tf
.. aber warum stört dich das ok eigentlich? das ok ist wohl die beste möglichkeit herauzufinden ob der befehl akzeptiert wurde (zum bsp. durch verlust des netzes usw...)
Hi Mathias! Erstmals danke für deine antwort...! Bei meinem Projekt gehts um folgendes: ich schicke den Befehl "at+cpbr=99" ans Handy, welches folgendermaßen antwortet: " ----anfang--- +CPBR: 99, "<telefonnummer>", 129, "<name>" OK ---ende---- -> es geht nun darum, dass ich diese Antwort so aufteile, damit ich die telefonnummer auslesen kann -> brauche also das "ok" nicht! -> habe dafür auch schon eine funktion geschrieben! aba aus irgendeinem grund funkt das nicht so ganz...keine ahnung wieso! @Register: habe mir ein array angelegt in welches ich die empfangenen Zeichen vom UDR reingebe - um diese dann abzufragen...! -> schätze, es ist irgendwo vielleicht noch ein denkfehler im code, den ich aba leider nicht finde! gruß, semo
Hi semo, also erstmal freut es mich, daß Du in C programmierst ;-) Jeder hat so seinen Programmierstil, der sich hoffentlich mit jeder gemachten Erfahrung verbessert. Ich würde das Problem so angehen: Das erste Zeichen in der Variablen Receive_Buffer lesen. Solange das Zeichen != " ist, alle Zeichen um eine Position nach vorne schieben. Wenn das gelesene Zeichen dann " ist, nochmal alles um eine Position nach vorne schieben. Jetzt in der Variablen das nächste " suchen und mit einem Null-Terminator überschreiben. Jetzt hast Du einen String, der die Telefonnummer enthält. Wenn Du willst, kannst Du natürlich auch den Rest, wo ja das gräßliche "OK" steht (;-)) überschreiben, aber wie schon jemand sagte, besser noch wäre es, dieses OK auszuwerten. Dies ist nur eine Möglichkeit. Sicher gibt es noch ein Dutzend weitere. Um Speicherplatz und Geschwindigkeit mache ich mir nur dann Gedanken, wenn es wirklich nötig ist. mfg Thomas
Hi Thomas! Diese Funktion hab ich eh schon geschrieben, das Problem ist im moment "nur" dass es nicht funktioniert und ich noch nicht rausgefunden habe woran es liegt...! -> aber trotzdem, danke für deine Antwort!! ;o) mfg, semo
Hi Thomas, ras doch deinen Puffer ab, bis zum 0x0D. An die stelle eine 0x00 rein und via strcopy(oder wie der befehl heisst) umkopieren. Axel
in welchen Format antwortet eigentlich das Handy? -> also, wie muss ich die antwort vom Handy anbfragen (vielleicht hab ich ja dort einen fehler!?)? -> ist doch eigentlich im HEX-Format, oder? z.B. if (RecBuffer == 0x0D)... gruß, semo
Naja ASCII wäre richtig."Enter" ist ASCII 0x0D, schon richtig. "OK" ist 0x4F,0x4B. Achso, 19200Baud sind richtig. Oder kam das schon als Antwort? Axel
jupp Acsii Code ist richtig, baudrate kannst mit AT+IPR=.... umstellen! jeden befehl den rausschicktst musst wie schon erwähnt mit 0x0D bestätigen.. wenns dir was hilft.. den ascii code findest auf http://www.asciitable.com/
erstmals danke für eure antworten; werd mal eine ordentliche fehlersuche starten - mal schaun obs dann klappt...! ;o) gruß, semo
da gab es doch ne Seite, da hat das einer mit nem Tiny12 gemacht... mit quellcode usw. (asm) wenn ich's finde, poste ich den Link. Die zip-Datei habe ich zu hause. Axel
ok.Software ist im anhang, den Link habe ich wiedermal verschlampt... wäre ja auch was neues. irgendwas mit Tiny-Planet.com oder so. ich habe eben mal probiert mich zu erinnern, kommt aber nur schweinkram (logisch, bei der schreibweise). hoffe es hilft trotzdem. Gruß Axel !!here it is!! http://www.riccibitti.com/tinyplanet/tiny_intro.htm TINY wird ja auch nicht "Teenie" geschrieben, hab's gefunden ;->
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.