www.mikrocontroller.net

Forum: PC-Programmierung Modem vom PC aus steuern


Autor: Ithamar Garbe (antimon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo miteinander!

Es ist seltsam, welche eigentlich trivialen Probleme doch gar nicht so
einfach zu lösen sind...

Ich möchte von Java aus ein Modem ansteuern, um eine serielle
Verbindung mit einem entfernten Mikrocontroller (mit eigenem Modem)
aufbauen zu können.

Eigentlich könnte ich dem Modem ja einen AT-Befehl schicken, warten bis
die Antwort gekommen ist und die dann bearbeiten.
Beispiel: Ich sende ein "AT" und warte auf ein "OK" - damit weiss
ich dass ein Modem angeschlossen und betriebsbereit ist.

Allerdings - wenn ich das so wie eben beschrieben mache, hängt meine
Anwendung ja derweil, da die serielle Schnittstelle ja nicht besonders
schnell ist.

Also kann ich es ja so machen, dass ich einen Befehl absetze, und wenn
ein Event hereinkommt, dass eine Antwort vorhanden ist, bearbeite ich
die weiter.
Allerdings hat mein Programm ja in der Zwischenzeit (seit dem Senden
des Befehls) irgendwas anderes gemacht und weiss gar nicht mehr, wo die
Antwort eigentlich zuzuordnen ist.

Wie kann ich das am besten synchronisieren?
Ich könnte natürlich beispielsweise einen Zähler laufenlassen:
Habe ich z.B. 5 Befehle, läuft ein Zähler von 1-10 (je eine Nummer für
Befehl und Antwort), aber sobald ein Fehler im Befehlsablauf auftritt,
kommt er aus dem Konzept. Bzw. Verzweigungen sind damit auch schwer zu
realiseren...

Ich hoffe ich konnte einigermaßen verständlich machen, was mein Problem
ist. Gibt es da eine elegante Lösung des Problems?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schon mal an Threads gedacht?

Autor: Ithamar Garbe (antimon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, genau das hatte ich vergessen zu sagen ;)

Ich dachte ursprünglich auch an Threads, aber davon wurde mir
abgeraten, weil das sehr schwer zu debuggen sei, und da ich mit Threads
(ausser in anderen Programmiersprachen) noch nie gearbeitet habe, wollte
ich lieber die Finger davon lassen...

Aber mit den Events sollte sich das doch auch irgendwie lösen lassen
oder?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich fine viele Events die mir um die Phren fliegen viel schwerer zu
debuggen als Threads...

Sicher ist das irgendwie mit Events lösbar, ob das die schönste lösung
ist... ?

Autor: Ithamar Garbe (antimon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also mir ist das Einfachste auch recht, da ich da (noch) nicht so viel
Ahnung habe, muss ich mich auf das verlassen, was ich gesagt bekomme...
gut vielleicht ist in meinem Fall das Debuggen der Threads einfacher,
weil das noch nicht so komplex wird...

Also ich erzeuge einen Thread, der sich dann um das Senden und
Empfangen auf der Seriellen Schnittstelle kümmert. Der kann dann
ungestört im Hintergrund laufen und beeinträchtigt den Haupt-Thread
nicht oder?

Und der Thread macht dann ja im Prinzip nichts anderes als einen Befehl
senden, warten bis die Antwort kommt, wieder was senden, warten...

Aber was passiert wenn etwas aus der Reihe tanzt? Also beispielsweise
wenn ein "NO Carrier" unerwartet empfangen wird, obwohl ich gar nicht
auf eine Antwort warte? Soll ich dann ein Event generieren lassen und
das bearbeiten oder einfach den Thread pollen lassen ob was
eingetroffen ist?

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.