Einzelnen Beitrag anzeigen

ERBITUX

Registriert seit: 7. Mär 2019
12 Beiträge
 
#1

Serielle Kommunikation in eine Art queue auslagern

  Alt 7. Mär 2019, 10:14
Delphi-Version: 10.2 Tokyo
Hallo,

ich will mich hier mal kurz vorstellen. Ich heiße Thomas, komme aus der Nähe von Braunschweig und bin noch Schüler (Klasse 10).
Ich bin noch ein ziemlicher Anfänger was Delphi angeht, habe jedoch viel Erfahrung mit Mikrocontrollern (STM und AVR)

Ich habe hier in den letzten Wochen viel nachgelesen und habe die ersten Schritte hinter mir.

Nun zu meinem Problem, für das ich keine Lösung finden konnte.

Für ein Schulprojekt haben wir eine "Maschine" gebaut, die Vektorgrafiken malen kann. Gesteuert wird das Ding von einem Arduino für den ich eine Art stark abgespeckten G-Code Interpreter geschrieben habe. Die Steuerung läuft auf einem Arduino UNO. Die Befehle werden über USB (virtuelle serielle Schnittstelle) an den Arduino geschickt. Das funktioniert einwandfrei. Ich habe nun ein Delphiprogramm geschrieben, welches eine HPGL Datei in seine Einzelteile zerlegt, in die entsprechenden Befehle umwandelt und an die Maschine schickt. Auch das funktioniert im Grunde ohne Probleme, aber...

Ich schicke die Befehle im gleichen Thread an die Maschine. Die Abarbeitung dauert unterschiedlich lange. Ich muss im Programm warten bis die Antwort von der Maschine kommt um dann auf der Obfläche die Position des Stiftes zu aktualisieren. Dann wird der nächste Befehl an die Maschine geschickt. Während dieser Wartezeit kann das Programm leider nichts anderes machen. Ich denke hier z.b an eine aufwendigere Visualisierung.

Ich dachte jetzt daran die serielle Kommunikation in einen Thread auszulagern. Dazu will ich die Befehle der Reihe nach an den Thread übergeben und dieser führt sie selbstständig aus und aktualisiert nach jedem Befehl das Hauptformular. Allerdings muss ich gestehen das ich keinen Schimmer habe wie ich das realisieren kann. Kann mir da vielleicht jemand helfen? Gibt es vielleicht irgendwo ein Tutorial oder so was?

Ich mache das Ganze übrigens mit Delphi 10.2 Community Edition und FMX.

Gruß Thomas
  Mit Zitat antworten Zitat