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
  hilfe bei callback ausgabe per knopfdruck merz 5 143 15.04.2018 14:16
Letzter Beitrag: Tommy56
Sad Hilfe bei 2.4 TFT Display Harry Hirsch 37 1.187 15.04.2018 14:03
Letzter Beitrag: MicroBahner
  Hilfe bei Fehlermeldung TroyPan 3 277 23.03.2018 23:38
Letzter Beitrag: Tommy56
  Hilfe beim skript Devtris 24 1.105 12.03.2018 18:19
Letzter Beitrag: Tommy56
  Hilfe bei einen kleinen Programm FPV 9 801 11.03.2018 20:42
Letzter Beitrag: Tommy56
  Hilfe beim Programmieren Klawino 28 1.308 10.03.2018 13:36
Letzter Beitrag: hotsystems
  Hilfe bei der Programmierung Digitaluhr ,mit Anzeige 32x8 Lora 1 231 10.03.2018 11:44
Letzter Beitrag: hotsystems
  Hold Button - Doppel Klick Hilfe GSA1150 8 555 08.03.2018 16:24
Letzter Beitrag: Tommy56
  Daten vom Arduino Mega an Nextion Diskusguppy 4 294 25.02.2018 13:29
Letzter Beitrag: hotsystems
  Brauch hilfe bei einnem Sketch MrMagoo 10 524 11.02.2018 13:49
Letzter Beitrag: hotsystems

Gehe zu:


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