Forum: Mikrocontroller und Digitale Elektronik Handy Ansteuerung + Abfrage


von semo (Gast)


Angehängte Dateien:

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

von semo (Gast)


Lesenswert?

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

von semo (Gast)


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

von Maestro (Gast)


Lesenswert?

Register?
Verwirf doch einfach das OK, wenn es kommt.

von semo (Gast)


Lesenswert?

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

von Ominös (Gast)


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

von Mathias Mair (Gast)


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

von Mathias Mair (Gast)


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...)

von semo (Gast)


Angehängte Dateien:

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

von Thomas V. (Gast)


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

von semo (Gast)


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

von Axel Rühl (Gast)


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

von semo (Gast)


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

von Axel Rühl (Gast)


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

von semo (Gast)


Lesenswert?

alles klar, danke...!

von Mathias (Gast)


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/

von semo (Gast)


Lesenswert?

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

gruß,
semo

von Axel Rühl (Gast)


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

von semo (Gast)


Lesenswert?

Danke, wär cool wenn dus mir schicken könntest...!

gruß,
semo

von Axel Rühl (Gast)


Angehängte Dateien:

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 ;->

von semo (Gast)


Lesenswert?

super, danke!
werd mich dort mal schlau machen!

gruß, semo

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
Noch kein Account? Hier anmelden.