Forum: Mikrocontroller und Digitale Elektronik PIC, RS232, Handy, SMS auslesen


von Robby (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
angeregt durch www.fernwirken.tk versuche ich, eine Fernbedienung
mittels Handy und SMS aufzubauen. Ich verwende einen PIC 16F876 (20
MHz), Handy ist ein Siemens C35. Probleme habe ich mit der Auswertung
eingegangener SMS. Ich muß in der SMS bestimmte Zeichen erkennen. Dazu
sende ich an das Handy per USART den Abfragebefehl (Modem AT-Kommando).
Darauf anwortet das Handy z.B. so:
....
+CMGL: 1,1,,22

0791947122723033240C91947112234567800004030111252154003C5A413
....

Um die entsprechenden Zeichen in dieser Zeichenfolge zu erkennen, mache
ich folgendes:

...
siehe Anhang
...


Mein Problem ist, dass die Zeichen nur sehr unsicher erkannt werden. Es
klappt vielleicht bei 1 von 10 Versuchen, sogar relativ unerheblich wie
viele Zeichen ich auswerte. Mir ist auch nichts schlaueres als die
Subtraktion eingefallen um die Zeichen zu erkennen (wie könnte man es
anders / besser machen ?). Wenn ich die Sendung vom Handy am PC mittels
Terminal mitlese (angebunden über RS232-Schnittstelle MAX232) stelle
ich fest, daß dort immer alle Zeichen völlig korrekt ankommen.

Das Handy ist direkt mit dem PIC verbunden (Handy Pin 5-TX an PIC Pin
18-RX, Handy Pin 6-RX an PIC Pin 17-TX). An Handy Pin 5-TX-PIC Pin
18-RX messe ich in Ruhezustand ca. 3,3 V, dürfte als H-Pegel reichen.
Die Kommunikation funktioniert auch prinzipiell, z.B funktioniert eine
Routine zum Senden von SMS völlig problemlos.

Hat jemand eine Idee, wo das Problem liegen könnte ?

Vielen Dank + Gruß

von Hans (Gast)


Lesenswert?

ähm...nach such mal nach PDU und SMS dann wirst du docs zum sms format
finden...dann decodierst du die sms und schon weist du was rein
kommt...

73 de oe6jwf

von Robby (Gast)


Lesenswert?

Danke für die Antwort.
Ich weiß was PDU-Mode ist. Ich will die SMS allerdings gar nicht
dekodieren. Ich will einfach nur bestimmte, festgelegte Zeichenfolgen
in der SMS erkennen (von denen ich natürlich weiß, daß sie in der SMS
vorkommen müssen, wenn es die richtige SMS ist). Dabei wäre mir egal ob
die codiert im PDU-Mode vorliegt oder als Klartext im Text-Mode,
allerdings arbeitet das C35 nur im PDU-Mode. Wenn ich z.B. weiß, daß in
der vom Handy zum µC geschickten Zeichenfolge ein "C" und eine "9"
vorkommen müssen (wenn es die richtige SMS ist), brauche ich ja nur
nach "C" und "9" suchen. Was das in Wirklichkeit (übersetzt) heißt,
ist mir in dem Moment egal. Problem ist einfach, daß der PIC irgendwie
diese Folge von Zeichen mit meiner Routine nicht erkennt, obwohl sie
ganz sicher vom Handy kommt (kann ich in verschiedenen
Terminal-Programmen verfolgen). Ich vermute, daß ich irgend einen
logischen Fehler im Programm habe, finde ihn aber nicht.
Danke trotzdem !

von xx_olli (Gast)


Lesenswert?

Hi folks,

hab das gleiche mal mit ner C-Control probiert.
Dat Problem ist, dass die angeflogenen Zeichen zu langsam entsorgt
werden. Und da du RS232 ASYNCHRON berteibst, gibts auch kein
Halten mehr.
Nimm ne schnellere RS232-Schnittstelle oder Puffer den Datenstrom
sonstwie in Echtzeit zwischen.

C ya s00n
xx_olli

von mike (Gast)


Lesenswert?

hi

Mit deinem Assemblercode kann ich dir nicht helfen, aber um eine
Auswertung der PDU wirst du nicht herumkommen.
Wenn du dir das PDU-Format ansiehst wirst du sehen dass vor der
eigentlichen Textnachricht eine ganze Menge an Infos steht. Unter
anderem Absendernummer, SMSC-Nummer, Zeitinfos und wie lang jeder
dieser Teile ist. Mit diesen Daten kannst du dir zuverlässig die Infos
aus der Message herausholen, die du brauchst.
Die Tatsache das die Daten mit 19200Baud ankommen könnte dir auch
Probleme machen sofern dein PIC zu niedrig getaktet wird.


MfG
Mike

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.