kramann.info
© Guido Kramann

Login: Passwort:










5.1 Experimente zum Datenaustausch zwischen Android-Devices mittels OSC

5.1 Experiments to exchange data between Android devices via OSC (EN google-translate)

5.1 Eksperymenty do wymiany danych między urządzeniami z systemem Android za pośrednictwem OSC (PL google-translate)

Siehe auch Library-Beispiele zu oscP5.

See also library examples for oscP5.

Zobacz także przykłady bibliotek oscP5.

Erstes Experiment: Android A ändert per OSC jede Sekunde die Hintergrundfarbe von Android B

First experiment: Android A changes the background color of Android B via OSC every second

Pierwszy eksperyment: Android A zmienia kolor tła Androida B przez OSC co sekundę

import processing.vr.*;
import oscP5.*;
import netP5.*;
import java.util.Random;

//Achtung:
//Bei Sketch-Permissions muß INTERNET angehakt sein!
//VR anhaken!

OscP5 oscP5;
NetAddress ziel_ip;

PShape sphere;
PMatrix3D eyeMat = new PMatrix3D();

Random zufall = new Random(System.currentTimeMillis());

long ZEIT = System.currentTimeMillis();

int R = 255;
int G = 0;
int B = 0;

void setup() 
{
    fullScreen(MONO);
    
    /* oscP5 starten, auf Port 12000 senden */
    oscP5 = new OscP5(this,12000);
    /* Zieladresse: */
    //Empfänger-IP eintragen (siehe Erweiterte W-LAN-Einstellungen auf Device)
    ziel_ip = new NetAddress("172.20.222.73",12000);

    sphere = createShape(SPHERE, 50);
    sphere.setStroke(false);
    sphere.setFill(color(255,0,0));
    sphere.translate(0,0,-500);
}

void draw() 
{
  //Standardeinstellungen für unser Arbeiten:
  background(R,G,B);
  getEyeMatrix(eyeMat); //Kameramatrix auslesen  
  translate(eyeMat.m03, eyeMat.m13, eyeMat.m23); //Welt in Koordinatenursprung von Kamera setzen.
  lights();
  //ENDE Standardeinstellungen für unser Arbeiten:
  
  if(System.currentTimeMillis()>=ZEIT+1000)
  {
      OscMessage myMessage = new OscMessage("/test");
      
      int ROT   = zufall.nextInt(256);
      int GRUEN = zufall.nextInt(256);
      int BLAU  = zufall.nextInt(256);
      
      myMessage.add(ROT); //Attribute hinzufügen ROT
      myMessage.add(GRUEN); //Attribute hinzufügen GRÜN
      myMessage.add(BLAU); //Attribute hinzufügen BLAU

      //abschicken:
      oscP5.send(myMessage, ziel_ip);

      println("Abgeschickt: ROT="+ROT+" GRUEN="+GRUEN+" BLAU="+BLAU);
      
      R=ROT;
      G=GRUEN;
      B=BLAU;
      
      ZEIT = System.currentTimeMillis();  
  }
     
  shape(sphere);
}

Code 5.1-1: OSC001_SENDER

import processing.vr.*;
import oscP5.*;
import netP5.*;
import java.util.Random;
  
//Achtung:
//Bei Sketch-Permissions muß INTERNET angehakt sein!
//VR anhaken!
  
OscP5 oscP5;

PShape sphere;
PMatrix3D eyeMat = new PMatrix3D();

int R = 255;
int G = 0;
int B = 0;

void setup() 
{
    fullScreen(MONO);

    /* oscP5 starten, auf Port 12000 auf hereinkommende Nachrichten lauschen */
    oscP5 = new OscP5(this,12000);
    
    sphere = createShape(SPHERE, 50);
    sphere.setStroke(false);
    sphere.setFill(color(255,0,0));
    sphere.translate(0,0,-500);
}

void draw() 
{
  //Standardeinstellungen für unser Arbeiten:
  background(R,G,B);
  getEyeMatrix(eyeMat); //Kameramatrix auslesen  
  translate(eyeMat.m03, eyeMat.m13, eyeMat.m23); //Welt in Koordinatenursprung von Kamera setzen.
  lights();
  //ENDE Standardeinstellungen für unser Arbeiten:
      
  shape(sphere);
}

void oscEvent(OscMessage theOscMessage) 
{
  /* Empfangene Nachricht auswerten */
  print("### received an osc message.");
  print(" Name der Nachricht: "+theOscMessage.addrPattern()); //Befehlsname
  println(" Format der Nachricht: "+theOscMessage.typetag()); //iii, d.h. 3 Integer!
  R = theOscMessage.get(0).intValue();
  G = theOscMessage.get(1).intValue();
  B = theOscMessage.get(2).intValue();
  
  println("[ROT, GRUEN,BLAU] = ["+R+", "+G+", "+B+"]");
}

Code 5.1-2: OSC001_EMPFAENGER