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