- LiFePO4 Speicher Test         
Ergebnis 1 bis 7 von 7

Thema: RS232 - Atmega Schnittstelle

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.10.2007
    Alter
    50
    Beiträge
    128

    RS232 - Atmega Schnittstelle

    Anzeige

    LiFePo4 Akku selber bauen - Video
    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?

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Du könntest die Split() Funktion benutzen und den String an den "-" Zeichen trennen.

    Dim vari(8) as string*3 '8 Strings der Länge 3

    Anzahl_wörter=Split(Me_Text1,vari,"-")

    Ich glaube übrigens nicht, dass Bascom dein Me.Text1 mögen wird.
    Der Compiler wird wohl eine Variable Me suchen, an deren Bit-Position Text ein Wert geschrieben werden soll.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.10.2007
    Alter
    50
    Beiträge
    128
    Hi,
    danke für die schnelle Hilfe. Ich mach mich gleich mal ans ausprobieren.


    P.s. Der Code war übrigens aus VB6. Die Übertragung und Auswertung im Mega8 über Bascom plappt prima

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.02.2005
    Ort
    NRW-Bergisches Land
    Beiträge
    311
    Da hat for_ro mir das Meiste schon vorweg genommen.
    Das mit dem "." im Variabelnamen ist mir ebenfalls aufgefallen, obwohl du nicht die ganze Deklaration mitgeschickt hast.
    Gruß RePi!


    *** Holzhacken ist deshalb so beliebt, weil man bei dieser Tätigkeit den Erfolg sofort sieht. ***
    *** (Albert Einstein) ***

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.10.2007
    Alter
    50
    Beiträge
    128
    ich schreibe die Daten zunächst in ein Textfeld (Text1) um sie dann anschleißden auszuwerten

    Hier der fehlende Teil: Me.Text1 = Me.Text1 + MSComm1.Input

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.02.2005
    Ort
    NRW-Bergisches Land
    Beiträge
    311
    Ich ging ebenfalls von Bascom aus. Bei VB6 kann ich Dir nicht helfen.
    Gruß RePi!


    *** Holzhacken ist deshalb so beliebt, weil man bei dieser Tätigkeit den Erfolg sofort sieht. ***
    *** (Albert Einstein) ***

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    52
    Beiträge
    765
    Im Prinzip bräuchte man erst mal die Com Abfrage an sich, um Dir helfen zu können. Allerdings ist das Forum hier eher suboptimal für Deine Anfrage. Einen zuverlässigen Code habe ich im VB-Paradise Forum schonmal gepostet.
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests