Forum: PC-Programmierung Modem vom PC aus steuern


von Ithamar G. (antimon)


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?

von Stefan (Gast)


Lesenswert?

schon mal an Threads gedacht?

von Ithamar G. (antimon)


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?

von Stefan (Gast)


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

von Ithamar G. (antimon)


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?

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.