INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Mit Processing Binär Daten vom Arduino auswerten. Hilfe bitte!
11.11.2013, 16:07 (Dieser Beitrag wurde zuletzt bearbeitet: 12.11.2013 15:43 von Rene S..)
Beitrag #1
Mit Processing Binär Daten vom Arduino auswerten. Hilfe bitte!
Hallo Forum Gemeinde,
vlt. könnt ihr mir helfen? Habe schon viel im Internet gesucht aber
leider nichts gefunden was mir hilft, bzw das macht was ich möchte.
Ich möchte Binärezustände meiner Variablen (Arduino Mega) an mein
processingprogramm senden. Manchmal funktioniert es, aber oft kommt
folgende Fehlermeldung:

StringIndexOutOfBoundsException: String index out of range: 1

Arduinocode (ausschnitt):

Code:
Serial.print((VS1));
  Serial.print(VS2);
  Serial.print(VS3);
  Serial.print(VS4);
  Serial.print(GAB1);
  Serial.print(GAB2);
  Serial.print(AHS);
  Serial.print(L1);
  Serial.print(L2);
  Serial.print(L3);
  Serial.print(L4);
  Serial.print(automatik);
  Serial.print(autostoer);
  Serial.print(digitalRead(52));
  Serial.print(digitalRead(53));
  Serial.print(G1RB);
  Serial.print(G1RS);
  Serial.print(G2RB);
  Serial.print(G2RS);
  Serial.println("");//Ende der Sendung

processincode:

Code:
String Info;
String inString;
char bs0,bs1,bs2,bs3,bs4,bs5,bs6,bs7,bs8,bs9,bs10,bs11,bs12,bs13,
     bs14,bs15,bs16,bs17,bs18,bs19;
void draw()
{


    Info = inString;

    bs0 =(Info.charAt (0));
    bs1 = (Info.charAt (1)); Hier makiert das Programm den genannten Fehler
    bs2 =(Info.charAt (2));
    bs3 =(Info.charAt (3));
    bs4 = (Info.charAt (4));
    bs5=(Info.charAt (5));
    bs6=(Info.charAt (6));
    bs7= (Info.charAt (7));
    bs8=(Info.charAt (8));
    bs9 =(Info.charAt (9));
    bs10 =(Info.charAt (10));
    bs11 =(Info.charAt(11));
    bs12 =(Info.charAt (12));
    bs13 =(Info.charAt(13));
    bs14 =(Info.charAt (14));
    bs15 =(Info.charAt(15));
    bs16 =(Info.charAt (16));
    bs17 =(Info.charAt(17));
    bs18 =(Info.charAt (18));
    bs19 =(Info.charAt(19));


  
  VS1 = int(bs0);
  VS2 = int(bs1);
  VS3 = int(bs2);
  VS4 = int(bs3);
  GAB1 = int(bs4);
  GAB2 = int(bs5);
  AHS = int(bs6);
  L1 = int(bs7);
  L2 = int(bs8);
  L3 = int(bs9);
  L4 = int(bs10);
  auto = int(bs11);
  autostoer = int(bs12);
  GBE1 = int(bs13);
  GBE2 = int(bs14);
  G1RB = int(bs15);
  G1RS = int(bs16);
  G2RB = int(bs17);
  G2RS = int(bs18);
....es folgt nur die Verarbeitung der  eingelesenen daten
Die daten vom USB Port abfragen:
Code:
void serialEvent(Serial myPort)
{
  while (myPort.available() == 19)
  {
  inString = myPort.readString();
  }
}


wäre echt klasse wen mir jemand da weiter Helfen kannSmile
danke im Vorraus
gruß rené
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.11.2013, 19:38 (Dieser Beitrag wurde zuletzt bearbeitet: 12.11.2013 15:42 von Rene S..)
Beitrag #2
RE: Arduino und Processing Daten am PC empfangen
Ich habe da was gefunden. Habe es mittlerweile hinbekommen das mir die Zustände übertragen werden. Der entsprechende Abschnitt des Arduino codes:
Code:
Serial.write('H');
bitWrite(Daten,0,VS1);
bitWrite(Daten,1,VS2);
bitWrite(Daten,2,VS3);
bitWrite(Daten,3,VS4);
bitWrite(Daten,4,GAB1);
bitWrite(Daten,5,GAB2);
bitWrite(Daten,6,AHS);
bitWrite(Daten,7,L1);
bitWrite(Daten,8,L2);
bitWrite(Daten,9,L3);
bitWrite(Daten,10,L4);
bitWrite(Daten,11,automatik);
bitWrite(Daten,12,autostoer);
bitWrite(Daten,13,GBE1);
bitWrite(Daten,14,GBE2);
Serial.print(Daten,BIN);
Im Processingcode scheint noch ein Fehler zusein, nur weiß ich nicht wo, bzw was ich anders machen müsste. Ich kan nun zwar über den Arduino die Anzeigen verändert nur kommen manchmal 3 anzeigen oder nur die richtige und nur 2. Und das 4 Bit spiegelt nicht den entsprechenden Zustand wieder.Huh
Momentan probiere ich es nur mit den ersten 4Bits (arduino:VS1,2,3,4). Die anderen sollen folgen.
Hat da jemand vlt eine Idee für mich oder weiß was ich falsch mache?
vollständiger Processingcode:
Code:
import processing.serial.*;

  Serial myPort;      // Serial-Objekt erzeugen
  int portIndex = 1;  // Arduino-Port
  boolean VS1;
  boolean VS2 ;
  boolean VS3;
  boolean VS4 ;
[code]
void setup()
{
  size(600, 600);
  String portName=Serial.list()[1];
  myPort = new Serial(this, portName,9600);
}

void draw()
{

int val=1;
  if (myPort.available()>15)
  {
    if(myPort.read()=='H')
    {
      val=readArduinoInt();
//VS1
      int bit=1;
      int isSet=(val & bit);
      if (isSet == 0)
        {
        VS1=false;
        }
      else
        {
        VS1=true;
        }
//VS2
         bit=2;
         isSet=(val & bit);
          if (isSet == 0)
        {
        VS2=false;
        }
      else
        {
        VS2=true;
        }
        
//VS3
        bit=3;
        isSet=(val & bit);
        if (isSet == 0)
        {
        VS3=false;
        }
      else
        {
        VS3=true;
        }
        
//VS4
        bit=5;
        isSet=(val & bit);
        if (isSet ==0)
        {
        VS4=false;
        }
      else
        {
        VS4=true;
        }
    }
  
  }  

myPort.clear();//bufferlöschen damit neue daten genommen werden


//----------------VS2
  if (!VS2)
  {
  fill (255, 0, 0); //volles Rot
  }
else
  {
  fill (0, 255, 0); //volles Grün
  }
  ellipse (220, 50, 20, 20);
  fill(0);
  text (" VS2",230,50);
  //-------------VS1
  if (!VS1)
  {
  fill (255, 0, 0); //volles Rot
  }
else
  {
  fill (0, 255, 0); //volles Grün
  }
  ellipse (180, 400, 20, 20);
  fill(0);
  text (" VS1",130,400);
  //-------------VS3
  if (!VS3)
  {
  fill (255, 0, 0); //volles Rot
  }
else
  {
  fill (0, 255, 0); //volles Grün
  }
  ellipse (430, 400, 20, 20);
  fill(0);
  text (" VS3",380,400);
  //-------------VS4
  if (!VS4)
  {
  fill (255, 0, 0); //volles Rot
  }
else
  {
  fill (0, 255, 0); //volles Grün
  }
  ellipse (470, 50, 20, 20);
  fill(0);
  text (" VS4",480,50);

}

int readArduinoInt()
{
  int val;
  val = myPort.read();
  return val;
}
Über Hilfe/Ideen würde ich mich freuen
gruß rené
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Information DHT 22 Daten per 433 Mhz senden Niklas 5 182 10.12.2017 17:15
Letzter Beitrag: hotsystems
  Prüfung eines Drucksensors mit Hilfe des Arduino r4c3 17 1.894 10.11.2017 22:24
Letzter Beitrag: r4c3
  Button auswerten aggro600 14 640 09.11.2017 13:23
Letzter Beitrag: Tommy56
Lightbulb Wie kann ich Daten vom Nextion Display auf Arduino Mega2560 senden und benutzen MarkusA 14 959 02.11.2017 23:10
Letzter Beitrag: MarkusA
  Suche Hilfe für den Fehler in der Datei Holzwurm56 5 378 01.11.2017 14:26
Letzter Beitrag: Holzwurm56
  Hilfe bei Einschaltverzögerung gesucht Ingo 9 655 28.10.2017 19:04
Letzter Beitrag: Tommy56
  Daten übergabe ans Nextion Display Franz54 53 2.779 09.10.2017 09:16
Letzter Beitrag: Franz54
  Wie wird bitte der Pin EN am HC05 gesetzt ? comfan 3 309 26.09.2017 16:34
Letzter Beitrag: Alfrede
Photo Hilfe bei meinem Arduino Projekt Niklas 10 563 23.09.2017 21:05
Letzter Beitrag: Niklas
  Daten per PHP an MYSQL übergeben ArduM0 4 748 09.08.2017 19:52
Letzter Beitrag: Bitklopfer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste