PIC, RS232, Handy, SMS auslesen

Gast #69594
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ß
Angehängte Dateien:
Gast #69596
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 !
Gast #69597
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
Gast #69598
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren