www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Handy Ansteuerung + Abfrage


Autor: semo (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: semo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte es aber vielleicht auch an der UART-Empfang-Initialiserung liegen
bzw. dass irgendwas mit dem UDR auslesen nicht funkt?

Autor: semo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Maestro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Register?
Verwirf doch einfach das OK, wenn es kommt.

Autor: semo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ähm, "OK verwerfen" -> wie meinst du das!?
das ok kommt doch nach dem zeugs was ich haben
will!?*aufderleitungsteh*

Autor: Ominös (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Mathias Mair (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Mathias Mair (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.. 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...)

Autor: semo (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Thomas V. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: semo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Axel Rühl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: semo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Axel Rühl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: semo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
alles klar, danke...!

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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/

Autor: semo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
erstmals danke für eure antworten; werd mal eine ordentliche fehlersuche
starten - mal schaun obs dann klappt...!
;o)

gruß,
semo

Autor: Axel Rühl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: semo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, wär cool wenn dus mir schicken könntest...!

gruß,
semo

Autor: Axel Rühl (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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 ;->

Autor: semo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
super, danke!
werd mich dort mal schlau machen!

gruß, semo

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.