Hallo,

ich habe eine Schnittstelle zwischen CAN Bus und PC (VB6 Programm) über eine RS232 Schnittstelle und einen Mega8 realisiert.
Nun kommt es hin und wieder vor dass sich der Empfang von Daten "aufhängt".
D.h. es kommt nichts mehr an. Senden ist dann weiter möglich.
Ich habe die Vermutung dass es an der Auswertung des empfangenen Datenstrings liegt.

Der String hat folgendes Format: 3$-0-100-1-46-5-0-200-#

Diesen werte ich wie folgt aus:



Code:
        vari1ende = InStr(Me.Text1, "#")
         
        If vari1ende > 20 Then
         
         
        Me.Text2 = Left(Me.Text1, vari1ende)
        Me.Protokoll1 = Chr$(13) & Chr$(10) & Time & " - " & Me.Text2 & Me.Protokoll1
         

         
         vari1a = InStr(Me.Text1, "$") - 1
         vari1e = InStr(vari1a, Me.Text1, "-")
         vari1l = vari1e - vari1a

         vari2a = InStr(vari1e, Me.Text1, "-") + 1
         vari2e = InStr(vari2a, Me.Text1, "-")
         vari2l = vari2e - vari2a

         vari3a = InStr(vari2e, Me.Text1, "-") + 1
         vari3e = InStr(vari3a, Me.Text1, "-")
         vari3l = vari3e - vari3a

         vari4a = InStr(vari3e, Me.Text1, "-") + 1
         vari4e = InStr(vari4a, Me.Text1, "-")
         vari4l = vari4e - vari4a

         vari5a = InStr(vari4e, Me.Text1, "-") + 1
         vari5e = InStr(vari5a, Me.Text1, "-")
         vari5l = vari5e - vari5a

         vari6a = InStr(vari5e, Me.Text1, "-") + 1
         vari6e = InStr(vari6a, Me.Text1, "-")
         vari6l = vari6e - vari6a

         vari7a = InStr(vari6e, Me.Text1, "-") + 1
         vari7e = InStr(vari7a, Me.Text1, "-")
         vari7l = vari7e - vari7a

         vari8a = InStr(vari7e, Me.Text1, "-") + 1
         vari8e = InStr(vari8a, Me.Text1, "-")
         vari8l = vari8e - vari8a
        
        vari1_ = Mid(Me.Text1.Text, vari1a, vari1l)
        vari2_ = Mid(Me.Text1.Text, vari2a, vari2l)
        vari3_ = Mid(Me.Text1.Text, vari3a, vari3l)
        vari4_ = Mid(Me.Text1.Text, vari4a, vari4l)
        vari5_ = Mid(Me.Text1.Text, vari5a, vari5l)
        vari6_ = Mid(Me.Text1.Text, vari6a, vari6l)
        vari7_ = Mid(Me.Text1.Text, vari7a, vari7l)
        vari8_ = Mid(Me.Text1.Text, vari8a, vari8l)
Habt ihr eine Idee wie ich die Auswertung anders / einfacher erstellen kann?