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