Duesentrieb
31.03.2010, 22:49
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:
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?
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:
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?