fxt
22.05.2008, 23:20
Hi,
ich habe ein Programm mit Visual Basic geschrieben, um meinen Roboter mit einem Joystick zu steuern. Dabei habe ich mich an dem Beispiel aus dem RN-Wissen orientiert. Mit dem Programm steuer ich das RN-MotorControl an. Leider funktioniert das Programm manchmal nicht. Dann reagieren die Motoren erst verzögert auf die Joystick-bewegung oder gar nicht. Hier ist ein Teil aus meinem Programm:
Dim Z As String
Z = state.Z
If Z > 5 Then
SerialPort1.Write("##")
SerialPort1.Write(Chr(3)) 'Anzahl der folgenden Bytes
SerialPort1.Write(Chr(5)) 'Befehlscode Drehrichting
SerialPort1.Write(Chr(1)) 'Rechter Motor
SerialPort1.Write(Chr(0)) 'Geschwindigkeit
SerialPort1.Write("##")
SerialPort1.Write(Chr(3)) 'Anzahl der folgenden Bytes
SerialPort1.Write(Chr(2)) 'Befehlscode Leistung
SerialPort1.Write(Chr(1)) 'Rechter Motor
SerialPort1.Write(Chr(Z)) 'Geschwindigkeit
ElseIf Z < -5 Then
SerialPort1.Write("##")
SerialPort1.Write(Chr(3)) 'Anzahl der folgenden Bytes
SerialPort1.Write(Chr(5)) 'Befehlscode Drehrichting
SerialPort1.Write(Chr(1)) 'Rechter Motor
SerialPort1.Write(Chr(1)) 'Geschwindigkeit
SerialPort1.Write("##")
SerialPort1.Write(Chr(3)) 'Anzahl der folgenden Bytes
SerialPort1.Write(Chr(2)) 'Befehlscode Leistung
SerialPort1.Write(Chr(1)) 'Rechter Motor
SerialPort1.Write(Chr(Z * -1)) 'Geschwindigkeit
ElseIf 2 > Z > -2 Then
SerialPort1.Write("##")
SerialPort1.Write(Chr(3)) 'Anzahl der folgenden Bytes
SerialPort1.Write(Chr(2)) 'Befehlscode Leistung
SerialPort1.Write(Chr(1)) 'Rechter Motor
SerialPort1.Write(Chr(0)) 'Geschwindigkeit
End If
End Sub
Wie kann man z.B das in eine Zeile schreiben?
SerialPort1.Write("##")
SerialPort1.Write(Chr(3)) 'Anzahl der folgenden Bytes
SerialPort1.Write(Chr(5)) 'Befehlscode Drehrichting
SerialPort1.Write(Chr(1)) 'Rechter Motor
SerialPort1.Write(Chr(0)) 'Geschwindigkeit
Bitte gebt mir Vorschläge wie man das Programm verbessern kann.
ich habe ein Programm mit Visual Basic geschrieben, um meinen Roboter mit einem Joystick zu steuern. Dabei habe ich mich an dem Beispiel aus dem RN-Wissen orientiert. Mit dem Programm steuer ich das RN-MotorControl an. Leider funktioniert das Programm manchmal nicht. Dann reagieren die Motoren erst verzögert auf die Joystick-bewegung oder gar nicht. Hier ist ein Teil aus meinem Programm:
Dim Z As String
Z = state.Z
If Z > 5 Then
SerialPort1.Write("##")
SerialPort1.Write(Chr(3)) 'Anzahl der folgenden Bytes
SerialPort1.Write(Chr(5)) 'Befehlscode Drehrichting
SerialPort1.Write(Chr(1)) 'Rechter Motor
SerialPort1.Write(Chr(0)) 'Geschwindigkeit
SerialPort1.Write("##")
SerialPort1.Write(Chr(3)) 'Anzahl der folgenden Bytes
SerialPort1.Write(Chr(2)) 'Befehlscode Leistung
SerialPort1.Write(Chr(1)) 'Rechter Motor
SerialPort1.Write(Chr(Z)) 'Geschwindigkeit
ElseIf Z < -5 Then
SerialPort1.Write("##")
SerialPort1.Write(Chr(3)) 'Anzahl der folgenden Bytes
SerialPort1.Write(Chr(5)) 'Befehlscode Drehrichting
SerialPort1.Write(Chr(1)) 'Rechter Motor
SerialPort1.Write(Chr(1)) 'Geschwindigkeit
SerialPort1.Write("##")
SerialPort1.Write(Chr(3)) 'Anzahl der folgenden Bytes
SerialPort1.Write(Chr(2)) 'Befehlscode Leistung
SerialPort1.Write(Chr(1)) 'Rechter Motor
SerialPort1.Write(Chr(Z * -1)) 'Geschwindigkeit
ElseIf 2 > Z > -2 Then
SerialPort1.Write("##")
SerialPort1.Write(Chr(3)) 'Anzahl der folgenden Bytes
SerialPort1.Write(Chr(2)) 'Befehlscode Leistung
SerialPort1.Write(Chr(1)) 'Rechter Motor
SerialPort1.Write(Chr(0)) 'Geschwindigkeit
End If
End Sub
Wie kann man z.B das in eine Zeile schreiben?
SerialPort1.Write("##")
SerialPort1.Write(Chr(3)) 'Anzahl der folgenden Bytes
SerialPort1.Write(Chr(5)) 'Befehlscode Drehrichting
SerialPort1.Write(Chr(1)) 'Rechter Motor
SerialPort1.Write(Chr(0)) 'Geschwindigkeit
Bitte gebt mir Vorschläge wie man das Programm verbessern kann.