- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 14

Thema: serielle Kommunikation über 2 xBee Module

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    So z.b.

    Code:
    char str[32];
    int i = 0;
    
    ...
    
        while(Serial.available() > 0) {
            str[i] = Serial.read();
            
            if(str[i] == /* Stop zeichen */) {
                str[i] = '\0';
                i = 0;
                break;
            }
            
            i++;
        }
    
    ...
    Da dieser Teil vermutlich eh in einer Schleife läuft, kannst du vermutlich auch if() anstatt while() verwenden.

    mfg
    Geändert von Wsk8 (29.09.2013 um 16:04 Uhr) Grund: Code geändert

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    08.06.2013
    Beiträge
    9
    Danke für deine Hilfe. Habs jetzt hinbekommen.
    Hier die Lösung:

    Code:
    char buffer[10];
    int data[1];
    int index_a = 0;
    int index_b = 0;
    
    void loop()
    {
     if(Serial.available() > 0)
      {
        //aktuelles Zeichen einlesen
        buffer[index_a] = Serial.read();                        
        //Trenner oder Zeilenende
        if (buffer[index_a] == ',' || buffer[index_a] =='\n')
        {
          buffer[index_a] = 0;
          //Umwandeln in eine Zahl
          data[index_b] = atoi(buffer);                         
          //Datenindex ändern
          index_b = ++index_b % 2;                               
          if(index_b == 0)
          {
            Serial.print(data[0]);
            Serial.print(" ");
            Serial.println(data[1]);
          }
          index_a = 0;
        }
        else
        {
          index_a ++;
        }
      }
    }
    MFG

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Mal ganz davon abgesehen, dass int data[1] völliger Schwachsinn ist und du mit data[1] = ... oder höher ins Nirvana schreibst, kapier ich diesen Teil auch nicht
    Code:
    //Datenindex ändern
    index_b = ++index_b % 2;                               
    if(index_b == 0)
    {
        Serial.print(data[0]);
        Serial.print(" ");
        Serial.println(data[1]);
    }
    Zudem wird nirgends index_b resetet.

    mfg
    Geändert von Wsk8 (29.09.2013 um 17:45 Uhr)

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    08.06.2013
    Beiträge
    9
    Du hast recht. Funktioniert doch nicht so richtig. Hast du eventuell einen besseren Vorschlag, wie die die beiden Werte eingelesen bekomme. So langsam bin ich nämlich am verzweifeln.

    Gruß
    Marko

  5. #5
    shedepe
    Gast
    Spontan würde ich vorschlagen C programmieren zu lernen. Ansonsten:
    Code:
    int i = 0;
    char temp[4];
    while(i <4)
    {
          temp[i] = readSerialChar(); //Hier die passende Serialport methode verwenden
          i++;
    }
    int result = atoi(temp);
    Ich bin mal von deinem Beispiel ausgegangen dass das Sensor Ergebnis immer 3 Stellig ist. Wenn es das nicht ist brauchst du natürlich immer noch ein eindeutiges Stopzeichen auf dass du in der while Bedingung abfragen kannst. Aber das wurde bereits von weiter oben gezeigt.
    Geändert von shedepe (30.09.2013 um 12:10 Uhr)

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Code:
    char str[32];
    int i = 0, j = 0;
    int val[2];
    
    
    ...
    
    
        while(Serial.available() > 0) {
            str[i] = Serial.read();
            
            if(str[i] == '\n' || str[i] == ',') {
                str[i] = '\0';
                i = 0;
    			
    			val[j] = atoi(str);
    			j++;
    			
    			if(j > 1) {
    				j = 0;
    				/* flag etc setzen, dass 2 Werte empfangen wurden und verarbeitet werden können ... whatever... */
    			}
                break;
            }
            
            i++;
        }
    
    
    ...
    mfg

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1
    Toll dieser Tread, da ich fast ein ähnliches Projekt bearbeite, meine Robosteuerung/Messdatenübertragung, werde ich mal fleissig mitlesen und mitprobieren.

    Gruss

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 25.11.2012, 19:56
  2. Xbee Module Digitale I/O Ports
    Von Projekt 2252 im Forum Elektronik
    Antworten: 22
    Letzter Beitrag: 15.03.2011, 20:01
  3. XBee Module - Kommunikation PC <-> ATmega - Datenanzei
    Von Hero_123 im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 12
    Letzter Beitrag: 21.11.2010, 14:13
  4. NIBO2 - Kommunikation ATmega128 mit Xbee-Modul und PC
    Von Hero_123 im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 17
    Letzter Beitrag: 14.11.2010, 18:30
  5. XBee Module - Kommunikation PC <-> ATmega
    Von Hero_123 im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 21
    Letzter Beitrag: 07.11.2010, 20:02

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress