Experimente zum Datenaustausch zwischen Android-Devices mittels OSC
(EN google-translate)
(PL google-translate)
Siehe auch Library-Beispiele zu oscP5.
Erstes Experiment: Android A ändert per OSC jede Sekunde die Hintergrundfarbe von Android B
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 0-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 0-2: OSC001_EMPFAENGER