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
  Daten Visualisieren MeisterQ 12 542 01.12.2016 19:36
Letzter Beitrag: MeisterQ
  Data Logger Daten auf SD Card schreiben Crichton 12 276 22.11.2016 18:32
Letzter Beitrag: Crichton
  I2C Daten übertragen Gandalf 3 211 04.11.2016 13:20
Letzter Beitrag: hotsystems
  Hilfe: IR Remote Steuerung, MSGEQ7 + RGB-LED Streifen dastob 1 118 14.10.2016 21:40
Letzter Beitrag: hotsystems
  Daten über USB verarbeiten Felix91 10 319 12.10.2016 13:00
Letzter Beitrag: Tommy56
Sad Ich brauche Hilfe Prosac 4 232 09.10.2016 18:39
Letzter Beitrag: Prosac
  Can-Bus Shield ok, aber keine Daten Clubsport 38 1.533 01.09.2016 14:17
Letzter Beitrag: Clubsport
  at24c256 Hilfe Gandalf 6 247 29.08.2016 18:59
Letzter Beitrag: MKc
Smile Progammier Neuling Codeschloss bittet um Hilfe Donalonso 2 284 27.08.2016 18:23
Letzter Beitrag: Binatone
  Hilfe gesucht. Webserver Statsiche und Dynamische HTMl Seite b3ta 11 447 22.08.2016 08:07
Letzter Beitrag: b3ta

Gehe zu:


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