diff --git a/README.md b/README.md index 3d7f6d700304ccf613df73cd094ec4c505bfe63e..509b6be1759fa1e32a6af3d280d1d63d07a2689d 100644 --- a/README.md +++ b/README.md @@ -272,6 +272,8 @@ View.assignProgram(program) - ui / button +- svg doesn't display on chrome + - would like to send board with new buck out to fab - just do stepper23, bc if that's it, that's it ? diff --git a/modules/hardware/atkmrobot.js b/modules/hardware/atkmrobot.js index fb7a9cbb65269e689c38af8b04aa01339827ee4e..c44a8dd8557792255e4eeb02232eed629c6457e8 100644 --- a/modules/hardware/atkmrobot.js +++ b/modules/hardware/atkmrobot.js @@ -34,10 +34,12 @@ function ATKMathRobot() { // inputs and outputs as usual atkmr.inputs = { tick: Input('event', onPositionTickTock), - pc_t: Input('number', onPositionTargetInput) + set_pc_t: Input('number', onPositionTargetInput), + get_pos: Input('event', onPositionRequest) } atkmr.outputs = { - ok: Output('nothing-yet') + ok: Output('nothing-yet'), + pos: Output('uint16_t') } // and state as well @@ -81,6 +83,15 @@ function ATKMathRobot() { console.log("INPUTS NOT YET BOUND", evt) } + function onPositionRequest(evt){ + var pckt = [145] + atkmr.route.send(pckt) + } + + atkmr.route.subscribe(145, function(msg){ + console.log('145 return', msg) + }) + function onPositionTargetUserChange() { var pc_t = state.pc_t if (pc_t > 16384) { @@ -112,8 +123,6 @@ function ATKMathRobot() { state.message = 'packet ok' }) - atkmr.go = onKValsUpdate - return atkmr } diff --git a/modules/util/gate.js b/modules/util/gate.js index a26b8433eea84df69011f232b32d6aa5965a58e2..737861566d5a89e1b2b05674ed24acc298f91443 100644 --- a/modules/util/gate.js +++ b/modules/util/gate.js @@ -45,14 +45,13 @@ function Gate() { function onButtonPress(evt) { console.log("GATE BUTTON") - state.toggle.isPressed = false if (gate.isOpen) { gate.isOpen = false state.message = 'closed' } else { gate.isOpen = true state.message = 'open' - gate.outputs.out.emit('go') + //gate.outputs.out.emit('go') } } diff --git a/programs.js b/programs.js index 11d088799bc561cf286d29d4089b76fd5de35dfa..fef3606d80fe22884d8ac8fe05ee15115246d434 100644 --- a/programs.js +++ b/programs.js @@ -295,11 +295,22 @@ function openProgram(path) { return program } +/* helper functions */ + +function SetUI(module, left, top){ + if (module.description.position == null) { + module.description.position = {} + } + module.description.position.left = left + module.description.position.top = top +} + module.exports = { new: newProgram, open: openProgram, save: saveProgram, loadModuleFromSource: loadModuleFromSource, removeModule: removeModuleFromProgram, - assignSocket: assignSocket + assignSocket: assignSocket, + setUI: SetUI } \ No newline at end of file diff --git a/robot.js b/robot.js new file mode 100644 index 0000000000000000000000000000000000000000..e587503863fba9edf77c745736f0c9a7c00cf195 --- /dev/null +++ b/robot.js @@ -0,0 +1,69 @@ + +// business +const Reps = require('./reps.js') +const Programs = require('./programs.js') + +// the program object: real simple, just has a description, and a 'modules' +var program = Programs.new('new program') + +var link = Programs.loadModuleFromSource(program, './modules/hardware/atkseriallink.js') +link.startUp() +Programs.setUI(link, 1050, 50) + +var mrbot = Programs.loadModuleFromSource(program, './modules/hardware/atkmrobot.js') +Programs.setUI(mrbot, 600, 50) + +var button = Programs.loadModuleFromSource(program, './modules/ui/button.js') +var delay = Programs.loadModuleFromSource(program, './modules/util/delay.js') +var gate = Programs.loadModuleFromSource(program, './modules/util/gate.js') +//delay.outputs.out.attach(gate.inputs.thru) +//gate.outputs.out.attach(delay.inputs.thru) +Programs.setUI(button, 90, 50) +Programs.setUI(delay, 90, 250) +Programs.setUI(gate, 90, 400) + +button.outputs.whammy.attach(mrbot.inputs.get_pos) +button.outputs.whammy.attach(delay.inputs.thru) +delay.outputs.out.attach(gate.inputs.thru) +gate.outputs.out.attach(button.inputs.thru) + +var log = Programs.loadModuleFromSource(program, './modules/util/log.js') +Programs.setUI(log, 840, 520) +mrbot.outputs.pos.attach(log.inputs.thru) + +/* +var stest = Programs.loadModuleFromSource(program, './modules/ui/stest.js') + +var rep = Reps.makeFromModule(stest) +console.log('rep', rep) + +/* example program-like-an-api +// load some modules +var multiline = Programs.loadModuleFromSource(program, './modules/ui/multiline.js') +var gcode = Programs.loadModuleFromSource(program, './modules/parsing/gcode.js') + +// attaching: always like outputs to inputs +multiline.outputs.lineOut.attach(gcode.inputs.lineIn) + +// we can move things around here as well +multiline.description.position = { + left: 50, + top: 50 +} + +gcode.description.position = { + left: 500, + top: 100 +} + +// if I have a public function in a module, I can also use that +multiline.load('./files/dogbone.gcode') +*/ + +// UI +const View = require('./views.js') +View.startHttp() +View.startWs() + +Programs.assignSocket(View.uiSocket) +View.assignProgram(program) \ No newline at end of file diff --git a/rundmc.js b/rundmc.js index e1d6cbf4a7529904512b40efe19ca12d4a9767f0..0e9922f09af5127ece32d54ec1151574bb0d99b2 100644 --- a/rundmc.js +++ b/rundmc.js @@ -31,24 +31,6 @@ const Programs = require('./programs.js') // the program object: real simple, just has a description, and a 'modules' var program = Programs.new('new program') -var link = Programs.loadModuleFromSource(program, './modules/hardware/atkseriallink.js') -link.startUp() - -link.description.position = { - left: 600, - top: 50 -} - -var mrbot = Programs.loadModuleFromSource(program, './modules/hardware/atkmrobot.js') - -mrbot.description.position = { - left: 20, - top: 50 -} - -mrbot.go() - - /* var stest = Programs.loadModuleFromSource(program, './modules/ui/stest.js')