Hallo zusammen!
Ich habe ein GUI für meine Fräse programmiert in VB2010. Ich stelle die Frage deshalb hier weil ich mir vorstellen könnte, dass mein Problem entweder beim Backgroundworker oder beim SerialPort liegt.
Das Problem an sich ist, dass wenn ich den Code an die Fräse streame es manchmal vorkommt, dass Zeilen übersprungen werden, so hat es zumindest den Anschein. Hier erstmal der Code
Dieser Code streamt den GCode aus einer Listbox an die Fräse solange bis kein Code mehr übrig ist und hier tritt auch das Problem mit dem Überspringen auf.
Der folgende Code betrifft die SingleBlock Funktion, hier muss jede Codezeile bestätigt werden, erst dann wird der nächste gesendet.
Beide Codes sind identisch bis auf die MessageBox bei der SingleBlock Funktion, hier tritt der Fehler nie auf.
Und hier noch die Einstellungen für den SerialPort:
Name: SerialPort1
GenerateMember: True
Modifier: Friend
BaudRade: 115200
DataBits: 8
DiscardNull: False
DtrEnabled: False
Handshake: None
Parity: None
ParityReplace: 63
PortName: COM5
ReadBufferSize: 4096
ReadTimeout: -1
ReceivedBytesTreshold: 1
RtsEnabled: False
StopBits: One
WriteBufferSize: 2048
WriteTimeout: -1
Ich hoffe jemand kann mir weiterhelfen
Vielen dank im Voraus
Ich habe ein GUI für meine Fräse programmiert in VB2010. Ich stelle die Frage deshalb hier weil ich mir vorstellen könnte, dass mein Problem entweder beim Backgroundworker oder beim SerialPort liegt.
Das Problem an sich ist, dass wenn ich den Code an die Fräse streame es manchmal vorkommt, dass Zeilen übersprungen werden, so hat es zumindest den Anschein. Hier erstmal der Code
VB.NET-Quellcode
- Private Sub BWAuto_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BWAuto.DoWork
- For Me.i = 0 To CodeBox.Items.Count - 1
- If answer.Contains("ok") Then
- SerialPort1.WriteLine(CodeBox.Items.Item(i))
- answer = SerialPort1.ReadLine()
- End If
- Me.Invoke(Sub() CurrentCode.Text = CodeBox.Items.Item(i))
- Me.Invoke(Sub() CalculatePercent())
- Me.Invoke(Sub() InterpretCode())
- Me.Invoke(Sub() OpticalSelection())
- Me.Invoke(Sub() ProgramTimer.Start())
- Me.Invoke(Sub() WriteLog())
- Next i
- Me.Invoke(Sub() ProgramEnd())
- End Sub
Dieser Code streamt den GCode aus einer Listbox an die Fräse solange bis kein Code mehr übrig ist und hier tritt auch das Problem mit dem Überspringen auf.
Der folgende Code betrifft die SingleBlock Funktion, hier muss jede Codezeile bestätigt werden, erst dann wird der nächste gesendet.
VB.NET-Quellcode
- Private Sub BWAuto_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BWAuto.DoWork
- For Me.i = 0 To CodeBox.Items.Count - 1
- If answer.Contains("ok") Then
- SerialPort1.WriteLine(CodeBox.Items.Item(i))
- answer = SerialPort1.ReadLine()
- End If
- Me.Invoke(Sub() CurrentCode.Text = CodeBox.Items.Item(i))
- Me.Invoke(Sub() CalculatePercent())
- Me.Invoke(Sub() InterpretCode())
- Me.Invoke(Sub() OpticalSelection())
- Me.Invoke(Sub() ProgramTimer.Start())
- Me.Invoke(Sub() WriteLog())
- MessageBox.Show(CodeBox.Items.Item(i).ToString)
- Next i
- Me.Invoke(Sub() ProgramEnd())
- End Sub
Beide Codes sind identisch bis auf die MessageBox bei der SingleBlock Funktion, hier tritt der Fehler nie auf.
Und hier noch die Einstellungen für den SerialPort:
Name: SerialPort1
GenerateMember: True
Modifier: Friend
BaudRade: 115200
DataBits: 8
DiscardNull: False
DtrEnabled: False
Handshake: None
Parity: None
ParityReplace: 63
PortName: COM5
ReadBufferSize: 4096
ReadTimeout: -1
ReceivedBytesTreshold: 1
RtsEnabled: False
StopBits: One
WriteBufferSize: 2048
WriteTimeout: -1
Ich hoffe jemand kann mir weiterhelfen
Vielen dank im Voraus