74 lines
1.5 KiB
Plaintext
74 lines
1.5 KiB
Plaintext
|
// Dependencies:
|
||
|
// - SLIPDecoder (https://git.kompot.si/g1smo/SLIPDecoder)
|
||
|
// - MathLib (https://depts.washington.edu/dxscdoc/Help/Browse.html#Libraries%3EMathLib)
|
||
|
|
||
|
(
|
||
|
|
||
|
// Initialize the the receiver via SLIP decoder
|
||
|
~receiverPath = "/dev/ttyACM0";
|
||
|
~baudRate = 115200;
|
||
|
|
||
|
~decoder = SLIPDecoder.new(~receiverPath, ~baudRate);
|
||
|
OSCFunc.trace(false); // debug osc
|
||
|
~decoder.trace(true); // debug slip decoder
|
||
|
|
||
|
/*******
|
||
|
* GUI *
|
||
|
******/
|
||
|
~senzorji = [];
|
||
|
~numSensors = 3;
|
||
|
~numSensors.do({ |n|
|
||
|
~senzorji.add(AHRSensor.new(n + 1));
|
||
|
});
|
||
|
|
||
|
~w = Window.new("Utopia || C²", Rect(300, 300, 640, ~numSensors * 20),true);
|
||
|
|
||
|
~elementi = ~senzorji.collect({|s| s.getGui;});
|
||
|
|
||
|
~ttyInput = TextField().string_("/dev/ttyACM0");
|
||
|
|
||
|
~w.layout_(
|
||
|
VLayout(
|
||
|
HLayout(
|
||
|
StaticText().string_("Serial path: "),
|
||
|
~ttyInput,
|
||
|
Button().string_("Start").action_({ | butt |
|
||
|
if ((~decoder.running.not), {
|
||
|
// If not running, start decoder
|
||
|
~decoder.deviceName = "";
|
||
|
~decoder = SLIPDecoder.new(~receiverPath, ~baudRate);
|
||
|
~decoder.start;
|
||
|
butt.string_("Stop")
|
||
|
}, {
|
||
|
// Else stop the decoder
|
||
|
~decoder.stop;
|
||
|
butt.string_("Start")
|
||
|
});
|
||
|
})
|
||
|
),
|
||
|
// Elementi senzorjev
|
||
|
VLayout(*~elementi)
|
||
|
)
|
||
|
);
|
||
|
~w.front;
|
||
|
|
||
|
q = OSCFunc({ |msg, time, addr, recvPort|
|
||
|
var q;
|
||
|
q = Quaternion.new(msg[4], msg[1], msg[2], msg[3]);
|
||
|
q.postln;
|
||
|
//~senzorji[0].updateEuler(q);
|
||
|
//~senzorji[0].euler.postln;
|
||
|
//~elementi[0].refreshGui;
|
||
|
}, "/ww/1/quaternion");
|
||
|
|
||
|
// Start the decoder!
|
||
|
//~decoder.start;
|
||
|
)
|
||
|
|
||
|
|
||
|
~decoder.trace;
|
||
|
~decoder.stop;
|
||
|
~decoder.start;
|
||
|
|
||
|
|
||
|
~decoder.rate;
|