Hallo VB_Freunde,
ich habe eine Software erstellt zum ansteuern einer CNC Maschine über einen GRBL Controller (Arduino). Die Kommunikation findet über die Serielle Schnittstelle statt.
Jeder Befehl der zum GRBL gesendet wird, wird mit einem ok oder error bestätigt. Über ein DataReceived Event abgefangen und ausgewertet, error wird noch nicht ausgewertet. Über eine while-Schleife warte ich auf ein ok und Sende dann den nächsten Befehl. Das funktioniert sehr gut, aber wenn die Befehle gesendet werden, blockiert die Oberfläche vom Programm und ich habe keine Möglichkeit einzugreifen. Es kommen schnell mal 3000 Befehle zusammen, das kann schon lange dauern. Gibt es eine Möglichkeit das anders zu machen? Oder irgendwie eine Pause Funktion einzubauen, da mein Programm nicht mehr reagiert, habe ich keine Idee.
Hier der DataReceived Event
Ich hoffe es kann mir jemand helfen, Danke.
ich habe eine Software erstellt zum ansteuern einer CNC Maschine über einen GRBL Controller (Arduino). Die Kommunikation findet über die Serielle Schnittstelle statt.
Jeder Befehl der zum GRBL gesendet wird, wird mit einem ok oder error bestätigt. Über ein DataReceived Event abgefangen und ausgewertet, error wird noch nicht ausgewertet. Über eine while-Schleife warte ich auf ein ok und Sende dann den nächsten Befehl. Das funktioniert sehr gut, aber wenn die Befehle gesendet werden, blockiert die Oberfläche vom Programm und ich habe keine Möglichkeit einzugreifen. Es kommen schnell mal 3000 Befehle zusammen, das kann schon lange dauern. Gibt es eine Möglichkeit das anders zu machen? Oder irgendwie eine Pause Funktion einzubauen, da mein Programm nicht mehr reagiert, habe ich keine Idee.
Hier der DataReceived Event
VB.NET-Quellcode
- Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
- ReceivedText(SerialPort1.ReadLine())
- End Sub
- Private Sub ReceivedText(ByVal [text] As String)
- If text.Contains("ok") Then
- befehl_ok = True
- End If
- End Sub
- und die warte schleife
- Private Sub warten()
- While befehl_ok = False
- End While
- befehl_ok = False
- End Sub
Ich hoffe es kann mir jemand helfen, Danke.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Buzii“ ()