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 vom Arduino Mega an Nextion Diskusguppy 1 50 Gestern 16:18
Letzter Beitrag: hotsystems
  Brauch hilfe bei einnem Sketch MrMagoo 10 368 11.02.2018 13:49
Letzter Beitrag: hotsystems
  Hilfe bei diesen Fehler MrMagoo 22 619 06.02.2018 20:03
Letzter Beitrag: hotsystems
Question Hilfe bei Programmierung Niklas 15 570 02.02.2018 12:55
Letzter Beitrag: Niklas
  Neulig sucht Hilfe bei Programmierung der Spannungsprotokollierung Matej 42 2.020 01.02.2018 18:11
Letzter Beitrag: Matej
  Hilfe!!! bei 7-Segment Anzeige Markus2018 9 531 31.01.2018 21:14
Letzter Beitrag: Tommy56
Information DHT 22 Daten per 433 Mhz senden Niklas 5 610 10.12.2017 17:15
Letzter Beitrag: hotsystems
  Prüfung eines Drucksensors mit Hilfe des Arduino r4c3 17 2.543 10.11.2017 22:24
Letzter Beitrag: r4c3
  Button auswerten aggro600 14 848 09.11.2017 13:23
Letzter Beitrag: Tommy56
Lightbulb Wie kann ich Daten vom Nextion Display auf Arduino Mega2560 senden und benutzen MarkusA 14 1.438 02.11.2017 23:10
Letzter Beitrag: MarkusA

Gehe zu:


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