ja natürlich sag ich noch was falsch war. aber es war auf jedenfall nicht GND^^

hab das oben im Quellcode schon angedeutet.
ich hab den Fehler gemacht in der Zeile:
Code:
rtbFehlermeldungen.AppendText(Chr(SerialPort1.ReadByte)) 'Hier ist der Fehler. Man kann ja nicht zweimal Daten auslesen wenn sie schon ausgelesen sind^^
                rtbFehlermeldungen.ScrollToCaret()
                DatenEmpfangen = DatenEmpfangen & Chr(SerialPort1.ReadByte) & ";"
einmal den SerialPort auszulesen und direkt ins Fenster zu schreiben
und dann gleich nochmal auszulesen um die werte in die variable zu schreiben.
somit hat er das erste zeichen ausgegeben das zweite in die variable geserzt und das dritte wieder ausgegeben und so weiter^^

also eigentlich nen dummer fehler.

Ich hab das jetzt so gelöst: (wobei das einlesen in die RN-Control noch nicht 100%ig funktioniert da noch Fehlermeldungen kommen)

Code vom PC Programm:
Code:
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim Licht, BlLicht, IRLicht As Integer
        Dim DatenSenden As Boolean
        Dim DatenEmpfangen As String
        Dim AusgabeArr() As String

        'IRAbstand1 = 0
        'IRAbstand2 = 0
        'UAbstand1 = 0
        'UAbstand2 = 0
        DatenSenden = False

        MotorL = CInt(MoDrehzahl * MotorL / 100)
        MotorR = CInt(MoDrehzahl * MotorR / 100)

        If MotorL < 0 Then
            prbUKetteL.Value = MotorL * (-1)
        Else
            prbUKetteL.Value = MotorL
        End If

        If MotorR < 0 Then
            prbUKetteR.Value = MotorR * (-1)
        Else
            prbUKetteR.Value = MotorR
        End If

        Licht = Scheinwerfer
        BlLicht = Blinklicht
        IRLicht = IRStrahler
        DatenEmpfangen = ""

        'Daten vom COM Port empfangen
        If SerialPort1.BytesToRead > 0 Then
            Do
                'DatenEmpfangen = SerialPort1.ReadLine
                DatenEmpfangen = DatenEmpfangen & SerialPort1.ReadLine '& ";"

                If SerialPort1.BytesToRead = 0 Then
                    Exit Do
                End If
            Loop
            rtbFehlermeldungen.Text = rtbFehlermeldungen.Text & vbNewLine & DatenEmpfangen

            AusgabeArr = DatenEmpfangen.Split(CChar(";"))     'empfangenen Text trennen und in ein String-Array speichern

            If CDbl(AusgabeArr(0)) = 1 Then
                If CDbl(AusgabeArr(9)) = 23 Then
                    'Werte aus Ausgabe Array den einzelnen Variablen zuordnen
                    IRAbstand1 = CInt(AusgabeArr(2))
                    IRAbstand2 = CInt(AusgabeArr(3))
                    UAbstand1 = CInt(AusgabeArr(4))
                    UAbstand2 = CInt(AusgabeArr(5))
                    Batteriestatus = CShort(AusgabeArr(6))
                    lblTempA.Text = AusgabeArr(7)
                    lblTempI.Text = AusgabeArr(8)
                    rtbFehlermeldungen.Text = rtbFehlermeldungen.Text & vbNewLine & AusgabeArr(1)
                Else
                    MessageBox.Show("Der Startpunkt war falsch", "Warnung", MessageBoxButtons.OK)
                End If
            End If
            DatenSenden = True
        End If


        If DatenSenden = True Then
            'Daten über den COM Port RS232 an die RN-Control senden:
            If SerialPort1.IsOpen Then 'folgenden Code nur ausführen wenn auch eine Verbindung besteht
                SerialPort1.Write("Motorr" + (MotorR).ToString + Chr(13)) 'per RS232 die aktuelle Motordrehzahl für Rechten Motor senden ' " CHr(13) =Enter drücken"
                SerialPort1.Write("Motorl" + (MotorL).ToString + Chr(13)) 'per RS232 die aktuelle Motordrehzahl für Linken Motor senden ' " CHr(13) =Enter drücken"
                'SerialPort1.Write("Licht" + (Licht).ToString + Chr(13)) 'per RS232 der Scheinwerfer an aus senden ' " CHr(13) =Enter drücken"
                'SerialPort1.Write("BlLicht" + (BlLicht).ToString + Chr(13)) 'per RS232 das Blinklicht an aus senden ' " CHr(13) =Enter drücken"
                'SerialPort1.Write("IRLicht" + (IRLicht).ToString + Chr(13)) 'per RS232 der IR-Strahler an aus senden ' " CHr(13) =Enter drücken"
                'SerialPort1.Write("SchildH" + (SchildPosH).ToString + Chr(13)) 'per RS232 das SchildHorizontal  senden ' " CHr(13) =Enter drücken"
                'SerialPort1.Write("SchildV" + (SchildPosV).ToString + Chr(13)) 'per RS232 der Schild Vertikal senden ' " CHr(13) =Enter drücken"
                'SerialPort1.Write("Kamerapos" + (KameraPosition).ToString + Chr(13)) 'per RS232 der Schild Vertikal senden ' " CHr(13) =Enter drücken"

            End If
            DatenSenden = False
        End If

        lblIRAbstand1.Text = IRAbstand1 & " cm"
        lblIRAbstand2.Text = IRAbstand2 & " cm"
        lblUAbstand1.Text = UAbstand1 & " cm"
        lblUAbstand2.Text = UAbstand2 & " cm"
        prbBatterie.Value = Batteriestatus

        KameraPosition = 0
        SchildPosH = 0
        SchildPosV = 0
        MotorL = 0
        MotorR = 0
    End Sub
Programm der RN-Control:
Code:
Do
   Taste = Tastaturabfrage()
   If Taste <> 0 Then
      Select Case Taste
         Case 1
          
         Case 2
          
         Case 3

         Case 4

         Case 5
            Print "Programm wurde abgebrochen"
            Sound Portd.7 , 800 , 400
            Exit Do
      End Select
   End If

   Fehlermeldung = "Dies ist Ein Test"
   Irabstand1 = 20
   Irabstand2 = 10
   Uabstand1 = 500
   Uabstand2 = 100
   Batteriespannung
   Batteriestatus = Spannung
   Temperatura = 2
   Temperaturi = 20

   If Empfangstatus = 1 Then
      Print 1 ; ";" ; Fehlermeldung ; ";" ; Irabstand1 ; ";" ; Irabstand2 ; ";" ; Uabstand1 ; ";" ; Uabstand2 ; ";" ; Batteriestatus ; ";" ; Temperatura ; ";" ; Temperaturi ; ";" ; 23
      Empfangstatus = 0
   End If


   'Input "" , Empfang1    'Einlesen der Daten die vom RS232 Port gesendet wurdne
   'Input "" , Empfang2
   If Empfangstatus = 0 Then
      Data_available = Ischarwaiting()
      If Data_available > 0 Then                            'Wenn Daten da sind, dann...
         Input "" , Inputstring
         Motorr_empfangen = Instr(inputstring , "Motorr")   'Gibt den Motorwert des Substrings "Motorr" aus oder NULL wenn nicht gefunden
         Motorl_empfangen = Instr(inputstring , "Motorl")   'Gibt den Motorwert des Substrings "Motorl" aus oder NULL wenn nicht gefunden
         Empfangstatus = 1
      End If

      If Motorr_empfangen = 1 Then
         Motorr_wert_string = Mid(inputstring , 2)          'Die erste stelle des Strings (Das Motorr) abschneiden
         Motorr_wert_integer = Val(motorr_wert_string)      'String in Integer konvertieren
      End If

      If Motorl_empfangen = 1 Then
         Motorl_wert_string = Mid(inputstring , 6)          'Die erste stelle des Strings (Das Motorr) abschneiden
         Motorl_wert_integer = Val(motorl_wert_string)      'String in Integer konvertieren
      End If
       Print Motorl_wert_string
       Print Motorl_empfangen
       Empfangstatus = 1
   End If


   Motorr = Motorr_wert_integer
   Motorl = Motorl_wert_integer

   Motorschalten

   Ausgabe1 = Motorr * 4
   Ausgabe2 = Motorl * 2

   Motorr = 0
   Motorl = 0
   Sound Portd.7 , 10 , Ausgabe1
   'Sound Portd.7 , 10 , Ausgabe2
   Waitms 1
Loop
End