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
  Can-Bus Shield ok, aber keine Daten Clubsport 48 1.958 19.01.2017 22:18
Letzter Beitrag: Clubsport
  nRF24l01 empfängt Daten nicht techniclover 1 128 09.01.2017 19:20
Letzter Beitrag: celle
  Daten Visualisieren MeisterQ 12 741 01.12.2016 19:36
Letzter Beitrag: MeisterQ
  Data Logger Daten auf SD Card schreiben Crichton 12 474 22.11.2016 18:32
Letzter Beitrag: Crichton
  I2C Daten übertragen Gandalf 3 275 04.11.2016 13:20
Letzter Beitrag: hotsystems
  Hilfe: IR Remote Steuerung, MSGEQ7 + RGB-LED Streifen dastob 1 177 14.10.2016 21:40
Letzter Beitrag: hotsystems
  Daten über USB verarbeiten Felix91 10 402 12.10.2016 13:00
Letzter Beitrag: Tommy56
Sad Ich brauche Hilfe Prosac 4 302 09.10.2016 18:39
Letzter Beitrag: Prosac
  at24c256 Hilfe Gandalf 6 278 29.08.2016 18:59
Letzter Beitrag: MKc
Smile Progammier Neuling Codeschloss bittet um Hilfe Donalonso 2 322 27.08.2016 18:23
Letzter Beitrag: Binatone

Gehe zu:


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