- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 9 von 9

Thema: Variablenübergabe zwischen RS232 und Atmega32

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #2
    Benutzer Stammmitglied
    Registriert seit
    19.06.2004
    Alter
    51
    Beiträge
    66
    Hi,


    Du solltest Dir zunächst eine Grundsätzliche Frage stellen: sollen die Daten zwischen Deinem Board und dem PC binär oder im ASCII Format übertragen werden?


    a) binär
    Bei einer binären Übertragung kannst Du viel mehr Messwerte pro Sekunde übertragen. Auch die Befehle vom PC zum Board sind einzelne Opcodes (Bytes). Benötigt allerdings eine spezielle Software auf der PC Seite die Du selbst schreiben musst.


    b) im ASCII Format
    Hierbei werden Messwerte und Befehle zum Board im Textformat übertragen. Dies hat den Vorteil, dass Du auch Hyperterminal zur Kommunikation nutzen kannst. Nachteil: viel langsamer als binär.


    Grundsätzlich:
    Deine Idee mit dem Echo auf Seiten des Boards zu implementieren ist gut. So kannst Du auf der PC Seite gleich sehen, ob die Bytes/Zeichen, die Du zum Board geschickt hast, korrekt angekommen sind.


    Da Du offensichtlich zu dem Thema "Datenaustausch zwischen PC und Board" noch nicht viel Erfahrung hast, empfehle ich Dir Variante "b" - alleine schon um Hyperterminal nutzen zu können.


    Wenn Variante "b" genutzt werden soll:
    Es ist üblich, Kommandos vom PC an das Board mit "ENTER" abzuschließen, d.h. der ASCII Code 13 wird am Ende des Befehles gesendet.


    D.h. auf Deinem Board müsstest Du auf das Byte 13 warten und erst dann die bis dahin empfangenen Zeichen auf einen bekannten Befehl hin zu vergleichen.


    Beispiel eines Pseudocodes für das Board um Befehle zu erkennen:


    Code:
    if (<Zeichen empfangen>==TRUE)
    {
      SendeZeichenkette (<Empfangenes Zeichen>); // ECHO
      if (<Empfangenes Zeichen>!=13)
      { 
        // KEIN ENTER EMPFANGEN, ALSO BUCHSTABEN WEITER SAMMELN:
        <Empfangene Zeichenkette> = <Empfangene Zeichenkette> + <Empfangenes Zeichen>;
      }
      else
      { 
        // ENTER EMPFANGEN (Achtung: das ENTER wird nicht zur <Empfangenen Zeichenkette> hinzugefügt!
        if (<Empfangene Zeichenkette>=="GET TEMP")
        {
          // Temperatur abfrage: d.h. Temperatur an den PC senden
          SendeZeichenkette ("TEMP=");
          SendeZeichenkette (itoa(iTemperature));
          SendeZeichenkette (13);
          <Empfangene Zeichenkette> = "";
        }
        else
        if (<Erste Neun Zeichen der empfangenen Zeichenkette>=="SET TEMP ")
        {
          <Parameter Zeichenkette> = <von der empfangenen Zeichenkette die Zeichen ab der zehnten Stelle>;
          atoi (<Parameter Zeichenkette>,&iParameterzahl); // ASCII Zahl in binär Zahl umwandeln. Bsp."23" in 23
          if (iParameterzahl>=15) AND (iParameterzahl<=20)
          {
            SetzeTemperatur (iParameterzahl);
            SendeZeichenkette ("OK");
          }
          else
          {
            SendeZeichenkette ("INVALID VALUE FOR SET TEMP. VALID VALUE = 15 .. 20");
          }
          SendeZeichenkette (13);
          <Empfangene Zeichenkette> = "";
        }
        else
        {
          SendeZeichenkette ("INVALID COMMAND.");
          SendeZeichenkette (13);
          <Empfangene Zeichenkette> = "";
        }
      }
    }
    Beachte jedoch: der obige Pseudocode enthält noch keine Überprüfung ob die empfangenen Zeichen noch in den Empfangspuffer (<Empfangene Zeichenkette>) hineinpassen.

    Ich empfehle Dir dringend, dies hier aufmerksam durch zu lesen:

    http://www.rn-wissen.de/index.php/Av...rstellung_in_C
    http://www.rn-wissen.de/index.php/C-...ichenketten.29

    Dort findest Du einige Hinweise zum Thema Strings in C.
    Geändert von Chris266 (25.09.2012 um 05:19 Uhr)

Ähnliche Themen

  1. Atmega32 zwischen GPS-Modul und PC über RS232 . Brauche Hilfe :)
    Von da_miez3 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 14.04.2012, 17:33
  2. UART zwischen Atmega32 und ATmega8
    Von Lunarman im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 07.06.2007, 16:22
  3. Kommunikation zwischen C++ und ATMega32 (realisieren??)
    Von strunz im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 16
    Letzter Beitrag: 21.04.2006, 05:37
  4. Übertragung von Daten zwischen Atmega32 und Atmega128
    Von OBI im Forum AVR Hardwarethemen
    Antworten: 0
    Letzter Beitrag: 11.12.2004, 12:41
  5. Variablenübergabe in Funktion
    Von wolf4124 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 19.08.2004, 18:25

Stichworte

Berechtigungen

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

Labornetzteil AliExpress