Add a processing sketch which connects to basic
This commit is contained in:
parent
d995a4800d
commit
fd09e7c024
|
@ -0,0 +1,152 @@
|
|||
{
|
||||
"version": "1.4.0",
|
||||
"ext_port": 1111,
|
||||
"profiles": {
|
||||
"mcopy": {
|
||||
"label": "Default mcopy profile",
|
||||
"cam": {
|
||||
"time": 850,
|
||||
"delay": 50,
|
||||
"momentary": 0
|
||||
},
|
||||
"proj": {
|
||||
"time": 1400,
|
||||
"delay": 50,
|
||||
"momentary": 0
|
||||
},
|
||||
"black": {
|
||||
"before": 0,
|
||||
"after": 0
|
||||
}
|
||||
},
|
||||
"jk103": {
|
||||
"label": "JK103",
|
||||
"cam": {
|
||||
"time": 600,
|
||||
"delay": 50,
|
||||
"momentary": 240
|
||||
},
|
||||
"proj": {
|
||||
"time": 950,
|
||||
"delay": 50,
|
||||
"momentary": 240
|
||||
},
|
||||
"black": {
|
||||
"before": 0,
|
||||
"after": 0
|
||||
},
|
||||
"light": false
|
||||
},
|
||||
"jk_original": {
|
||||
"label": "JK45 profile",
|
||||
"cam": {
|
||||
"time": 750,
|
||||
"delay": 50,
|
||||
"momentary": 300
|
||||
},
|
||||
"proj": {
|
||||
"time": 1300,
|
||||
"delay": 50,
|
||||
"momentary": 300
|
||||
},
|
||||
"black": {
|
||||
"before": 250,
|
||||
"after": 250
|
||||
}
|
||||
},
|
||||
"intval3": {
|
||||
"label": "INTVAL3",
|
||||
"cam": {
|
||||
"time": 630,
|
||||
"delay": 50,
|
||||
"momentary": 0
|
||||
}
|
||||
},
|
||||
"jk_mono": {
|
||||
"label": "MONO's JK",
|
||||
"cam": {
|
||||
"time": 750,
|
||||
"delay": 50,
|
||||
"momentary": 300
|
||||
},
|
||||
"proj": {
|
||||
"time": 1300,
|
||||
"delay": 50,
|
||||
"momentary": 300
|
||||
},
|
||||
"light": false,
|
||||
"projector_second": true
|
||||
}
|
||||
},
|
||||
"cmd": {
|
||||
"camera_forward": "CF",
|
||||
"camera_backward": "CB",
|
||||
"projector_forward": "PF",
|
||||
"projector_backward": "PB",
|
||||
"black_forward": "BF",
|
||||
"black_backward": "BB",
|
||||
"camera_second_forward": "C2F",
|
||||
"camera_second_backward": "C2B",
|
||||
"cameras_forward": "CCB",
|
||||
"camera_forward_camera_second_backward": "CFCB",
|
||||
"camera_backward_camera_second_forward": "CBCF",
|
||||
"projector_second_forward": "P2F",
|
||||
"projector_second_backward": "P2B",
|
||||
"projectors_forward": "PPF",
|
||||
"projectors_backward": "PPB",
|
||||
"projector_forward_projector_second_backward": "PFPB",
|
||||
"projector_backward_projector_second_forward": "PBPF"
|
||||
},
|
||||
"arduino": {
|
||||
"baud": 57600,
|
||||
"board": "uno",
|
||||
"serialDelay": 20,
|
||||
"sequenceDelay": 100,
|
||||
"cam": {
|
||||
"time": 850,
|
||||
"delay": 50,
|
||||
"momentary": 300
|
||||
},
|
||||
"proj": {
|
||||
"time": 1300,
|
||||
"delay": 50,
|
||||
"momentary": 300
|
||||
},
|
||||
"black": {
|
||||
"before": 250,
|
||||
"after": 250
|
||||
},
|
||||
"cmd": {
|
||||
"debug": "d",
|
||||
"connect": "i",
|
||||
"light": "l",
|
||||
"camera": "c",
|
||||
"projector": "p",
|
||||
"black": "b",
|
||||
"camera_forward": "e",
|
||||
"camera_backward": "f",
|
||||
"projector_forward": "g",
|
||||
"projector_backward": "h",
|
||||
"projector_identifier": "j",
|
||||
"camera_identifier": "k",
|
||||
"mcopy_identifier": "m",
|
||||
"camera_timed": "n",
|
||||
"light_identifier": "o",
|
||||
"projector_light_identifier": "q",
|
||||
"projector_camera_light_identifier": "r",
|
||||
"projector_camera_identifier": "s",
|
||||
"projector_second_identifier": "t",
|
||||
"projectors_identifier": "d",
|
||||
"projector_second_forward": "u",
|
||||
"projector_second_backward": "v",
|
||||
"projector_second": "w",
|
||||
"projectors": "x",
|
||||
"camera_second_identifier": "y",
|
||||
"cameras_identifier": "a",
|
||||
"camera_second_forward": "1",
|
||||
"camera_second_backward": "2",
|
||||
"camera_second": "3",
|
||||
"cameras": "4"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,205 @@
|
|||
import processing.serial.*;
|
||||
|
||||
String CFG_FILE = "cfg.json";
|
||||
int BAUD = 56700;
|
||||
|
||||
JSONObject cfg;
|
||||
JSONObject cfgArduino;
|
||||
JSONObject cmds;
|
||||
|
||||
String cameraString = "";
|
||||
String projectorString = "";
|
||||
|
||||
// The serial port:
|
||||
Serial connectPort;
|
||||
Serial cameraPort;
|
||||
Serial projectorPort;
|
||||
|
||||
void configure () {
|
||||
cfg = loadJSONObject(CFG_FILE);
|
||||
cfgArduino = cfg.getJSONObject("arduino");
|
||||
cmds = cfgArduino.getJSONObject("cmd");
|
||||
BAUD = cfgArduino.getInt("baud");
|
||||
println("Using mcopy " + CFG_FILE + " version " + cfg.getString("version"));
|
||||
}
|
||||
|
||||
void connect () {
|
||||
String[] ports = Serial.list();
|
||||
String[] matches = {};
|
||||
String connectCmd = cmds.getString("connect");
|
||||
String identifyCmd = cmds.getString("mcopy_identifier");
|
||||
boolean connected = false;
|
||||
String deviceIdentifier;
|
||||
|
||||
//println("Found serial ports:");
|
||||
//printArray(ports);
|
||||
|
||||
for (int i = 0; i < ports.length; i++) {
|
||||
if (ports[i].toLowerCase().indexOf("tty.") == -1) {
|
||||
continue;
|
||||
}
|
||||
if (ports[i].toLowerCase().indexOf("arduino") > -1) {
|
||||
matches = append(matches, ports[i]);
|
||||
} else if (ports[i].toLowerCase().indexOf("usbserial") > -1) {
|
||||
matches = append(matches, ports[i]);
|
||||
} else if (ports[i].toLowerCase().indexOf("usbmodem") > -1) {
|
||||
matches = append(matches, ports[i]);
|
||||
}
|
||||
}
|
||||
|
||||
println("Found " + matches.length + " arduino device matches");
|
||||
printArray(matches);
|
||||
|
||||
for (int i = 0; i < matches.length; i++) {
|
||||
println("Connecting to matches["+i+"] "+ matches[i] +" at baud " + BAUD);
|
||||
connectPort = new Serial(this, matches[i], BAUD);
|
||||
|
||||
println("Waiting for connection...");
|
||||
delay(2000);
|
||||
|
||||
println("Sending mcopy connect command " + connectCmd);
|
||||
write(connectPort, connectCmd);
|
||||
waitFor(connectPort);
|
||||
connected = onConnect();
|
||||
if (connected) {
|
||||
delay(1000);
|
||||
println("Sending mcopy identifier command " + identifyCmd);
|
||||
connectPort.write(identifyCmd);
|
||||
waitFor(connectPort);
|
||||
onIdentify(matches[i]);
|
||||
delay(1000);
|
||||
}
|
||||
connectPort.stop();
|
||||
}
|
||||
if (!cameraString.equals("")) {
|
||||
connectCamera();
|
||||
}
|
||||
if (!projectorString.equals("")) {
|
||||
connectProjector();
|
||||
}
|
||||
|
||||
onReady();
|
||||
}
|
||||
|
||||
void waitFor (Serial serialPort) {
|
||||
int limit = 5000;
|
||||
int count = 0;
|
||||
while (serialPort.available() == 0 || count >= limit) {
|
||||
delay(1);
|
||||
count++;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
void write (Serial serialPort, String cmd) {
|
||||
serialPort.write(cmd);
|
||||
return;
|
||||
}
|
||||
|
||||
String read (Serial serialPort) {
|
||||
String inBuffer = serialPort.readStringUntil(13);
|
||||
if (inBuffer == null) {
|
||||
return "";
|
||||
}
|
||||
serialPort.clear();
|
||||
return inBuffer.trim();
|
||||
}
|
||||
|
||||
boolean onConnect () {
|
||||
boolean connected = false;
|
||||
String res = read(connectPort);
|
||||
String connectCmd = cmds.getString("connect");
|
||||
if (res.equals(connectCmd)) {
|
||||
println("Firmware confirmed. " + res + " == " + connectCmd);
|
||||
connected = true;
|
||||
} else {
|
||||
println("Device was not confirmed");
|
||||
}
|
||||
delay(10);
|
||||
return connected;
|
||||
}
|
||||
|
||||
/*
|
||||
projector_identifier
|
||||
camera_identifier
|
||||
#mcopy_identifier
|
||||
light_identifier
|
||||
projector_light_identifier
|
||||
projector_camera_light_identifier
|
||||
projector_camera_identifier
|
||||
projector_second_identifier
|
||||
projectors_identifier
|
||||
camera_second_identifier
|
||||
*/
|
||||
boolean onIdentify (String serialString) {
|
||||
String res = read(connectPort);
|
||||
String device = "";
|
||||
boolean identified = true;
|
||||
if (!res.equals("")) {
|
||||
device = whichDevice(res);
|
||||
if (device.equals("projector_identifier")) {
|
||||
projectorString = serialString;
|
||||
} else if (device.equals("camera_identifier")) {
|
||||
cameraString = serialString;
|
||||
} else if (device.equals("projector_camera_identifier")) {
|
||||
//Oh no...
|
||||
cameraString = serialString;
|
||||
projectorString = serialString;
|
||||
} else {
|
||||
identified = false;
|
||||
}
|
||||
|
||||
}
|
||||
return identified;
|
||||
}
|
||||
|
||||
String whichDevice (String res) {
|
||||
String[] identifiers = {};
|
||||
String[] keys = (String[]) cmds.keys().toArray(new String[cmds.size()]);
|
||||
String id = "";
|
||||
|
||||
for (int i = 0; i < keys.length;i++) {
|
||||
if (keys[i].indexOf("_identifier") > -1) {
|
||||
identifiers = append(identifiers, keys[i]);
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < identifiers.length; i++) {
|
||||
if ( res.equals( cmds.getString(identifiers[i]) ) ) {
|
||||
println("Device identified with " + res + " response as " + identifiers[i]);
|
||||
id = identifiers[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
void connectCamera () {
|
||||
println("Connecting to " + cameraString + " as camera...");
|
||||
cameraPort = new Serial(this, cameraString, BAUD);
|
||||
delay(1000);
|
||||
println("Camera connected.");
|
||||
}
|
||||
void connectProjector () {
|
||||
println("Connecting to " + projectorString + " as projector...");
|
||||
projectorPort = new Serial(this, projectorString, BAUD);
|
||||
delay(1000);
|
||||
println("Projector connected.");
|
||||
}
|
||||
|
||||
void onReady(){
|
||||
|
||||
}
|
||||
|
||||
void setup() {
|
||||
configure();
|
||||
connect();
|
||||
size(640, 360);
|
||||
noStroke();
|
||||
}
|
||||
|
||||
void draw() {
|
||||
background(0);
|
||||
|
||||
}
|
|
@ -8,4 +8,5 @@ cp -r ./lib/* ./app/lib/
|
|||
cp -r ./lib/* ./cli/lib/
|
||||
|
||||
cp ./data/cfg.json ./app/data/
|
||||
cp ./data/cfg.json ./cli/data/
|
||||
cp ./data/cfg.json ./cli/data/
|
||||
cp ./data/cfg.json ./processing/mcopy/
|
Loading…
Reference in New Issue