Skip to content
Snippets Groups Projects
Commit 452d89dd authored by Amanda Ghassaei's avatar Amanda Ghassaei
Browse files

working on node server

parent 099f2cc8
Branches
No related tags found
No related merge requests found
...@@ -195,7 +195,7 @@ hr { ...@@ -195,7 +195,7 @@ hr {
background-color: rgba(255, 255, 0, 0.35); background-color: rgba(255, 255, 0, 0.35);
} }
#postWarning { .postWarning {
background-color: rgba(255,0,0,0.15); background-color: rgba(255,0,0,0.15);
padding: 10px 15px 15px 15px; padding: 10px 15px 15px 15px;
margin: 20px 0; margin: 20px 0;
......
...@@ -123,7 +123,7 @@ define(['jquery', 'underscore', 'menuParent', 'plist', 'cam'], function($, _, Me ...@@ -123,7 +123,7 @@ define(['jquery', 'underscore', 'menuParent', 'plist', 'cam'], function($, _, Me
<br/><a href="#" id="animationMenuSave" class=" btn btn-block btn-lg btn-default">Save</a><br/>\ <br/><a href="#" id="animationMenuSave" class=" btn btn-block btn-lg btn-default">Save</a><br/>\
<!--Assembly Time:&nbsp;&nbsp;<br/><br/>-->\ <!--Assembly Time:&nbsp;&nbsp;<br/><br/>-->\
<% if (editsMadeToProgram && needsPostProcessing){ %>\ <% if (editsMadeToProgram && needsPostProcessing){ %>\
<div id="postWarning">You have made the following changes that require post processing:<br/>\ <div class="postWarning">You have made the following changes that require post processing:<br/>\
This will override edits you have made to the G-code. OK to override? <a href="#" class="overrideEdits btn btn-block btn-lg btn-danger">OK</a></div>\ This will override edits you have made to the G-code. OK to override? <a href="#" class="overrideEdits btn btn-block btn-lg btn-danger">OK</a></div>\
<% } %>\ <% } %>\
<div id="gcodeEditor"><%= dataOut %></div><br/>\ <div id="gcodeEditor"><%= dataOut %></div><br/>\
......
...@@ -134,7 +134,8 @@ define(['jquery', 'underscore', 'plist', 'backbone', 'lattice'], function($, _, ...@@ -134,7 +134,8 @@ define(['jquery', 'underscore', 'plist', 'backbone', 'lattice'], function($, _,
var property = $target.data("property"); var property = $target.data("property");
var value = $target.data("value"); var value = $target.data("value");
if (!property || !value) return; if (!property || !value) return;
this._getPropertyOwner($target).set(property, value); var owner = this._getPropertyOwner($target, property, value);
if (owner) owner.set(property, value);
}, },
_clickCheckbox: function(e){ _clickCheckbox: function(e){
...@@ -161,11 +162,17 @@ define(['jquery', 'underscore', 'plist', 'backbone', 'lattice'], function($, _, ...@@ -161,11 +162,17 @@ define(['jquery', 'underscore', 'plist', 'backbone', 'lattice'], function($, _,
lattice.getUItarget().clearCells(); lattice.getUItarget().clearCells();
}, },
_getPropertyOwner: function($target){ _getPropertyOwner: function($target, property, value){
if ($target.hasClass("lattice")) return lattice; if ($target.hasClass("lattice")) return lattice;
if ($target.hasClass("compositeEditor")) return lattice.compositeEditor; if ($target.hasClass("compositeEditor")) return lattice.compositeEditor;
if ($target.hasClass("assembler")) return globals.cam; if ($target.hasClass("assembler")) return globals.cam;
if ($target.hasClass("appState")) return this.model; if ($target.hasClass("appState")) return this.model;
if ($target.hasClass("serialComm")) {
require(['serialComm'], function(serialComm){
serialComm._changeProperty(property, value);
});
return null;
}
console.warn("no owner found for " + $target); console.warn("no owner found for " + $target);
return null; return null;
}, },
......
...@@ -16,15 +16,38 @@ define(['jquery', 'underscore', 'menuParent', 'plist', 'serialComm'], function($ ...@@ -16,15 +16,38 @@ define(['jquery', 'underscore', 'menuParent', 'plist', 'serialComm'], function($
_initialize: function(){ _initialize: function(){
this.listenTo(serialComm, "change", this.render);
}, },
_makeTemplateJSON: function(){ _makeTemplateJSON: function(){
return _.extend(this.model.toJSON(), serialComm.toJSON()); return _.extend(this.model.toJSON(), serialComm.toJSON(), {allBaudRates: [300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200]});
}, },
template: _.template('\ template: _.template('\
Setup<br/>\ <% if(error){ %> \
Send Test Messages\ <div class="postWarning">Error: <%= error%></div>\
<% } %>\
Status: &nbsp;&nbsp;<% if (portConnected){ %> Connected <% } else { %> Disconnected <% } %><br/><br/>\
Baud Rate: &nbsp;&nbsp;\
<div class="btn-group">\
<button data-toggle="dropdown" class="btn dropdown-toggle" type="button"><%= baudRate %><span class="caret"></span></button>\
<ul role="menu" class="dropdown-menu">\
<% _.each(allBaudRates, function(rate){ %>\
<li><a class="serialComm dropdownSelector" data-property="baudRate" data-value="<%= rate %>" href="#"><%= rate %></a></li>\
<% }); %>\
</ul>\
</div><br/><br/>\
Port: &nbsp;&nbsp;\
<div class="btn-group">\
<button data-toggle="dropdown" class="btn dropdown-toggle" type="button"><%= portName %><span class="caret"></span></button>\
<ul role="menu" class="dropdown-menu">\
<% _.each(availablePorts, function(port){ %>\
<li><a class="serialComm dropdownSelector" data-property="portName" data-value="<%= port %>" href="#"><%= port %></a></li>\
<% }); %>\
</ul>\
</div><br/><br/>\
Test Message:<br/>\
\
') ')
}); });
......
...@@ -4,15 +4,60 @@ ...@@ -4,15 +4,60 @@
define(['underscore', 'backbone', 'socketio'], function(_, Backbone, io){ define(['underscore', 'backbone', 'socketio'], function(_, Backbone, io){
var socket = io.connect('http://localhost:8080');
var SerialComm = Backbone.Model.extend({ var SerialComm = Backbone.Model.extend({
defaults: {
connected: false,
portConnected: false,
availablePorts: [],
portName: null,
baudRate: 200,
error: null
},
initialize: function(){
},
_changeProperty: function(property, value){
if (property === null || property === undefined || value === null || value === undefined) return;
if (this.get(property) == value) return;
socket.emit(property, value);
this.set(property, value);
}
}); });
var serialComm = new SerialComm(); var serialComm = new SerialComm();
var socket = io.connect('http://localhost:8080');
socket.on('connected', function(){ socket.on('connected', function(data){
console.log("worked"); console.log(data);
serialComm.set("connected", true, {silent:true});
_.each(_.keys(data), function(key){
serialComm.set(key, data[key], {silent:true});
});
serialComm.trigger("change");
});
socket.on('disconnected', function(){
serialComm.set("connected", false);
});
socket.on('portConnected', function(baudRate){
serialComm.set("baudRate", baudRate);
serialComm.set("portConnected", true);
});
socket.on('portDisconnected', function(baudRate){
if (serialComm.get("baudRate") != baudRate) return;
serialComm.set("portConnected", false);
});
socket.on("error", function(error){
serialComm.set("error", error);
}); });
......
...@@ -13,11 +13,7 @@ var io = require('socket.io').listen(8080); ...@@ -13,11 +13,7 @@ var io = require('socket.io').listen(8080);
//var io = require('socket.io')(http); //var io = require('socket.io')(http);
// list serial ports: // list serial ports:
serialport.list(function (err, ports) {
ports.forEach(function(port) {
console.log(port.comName);
});
});
//defualts //defualts
var portName = '/dev/cu.usbserial-DA01L12I'; var portName = '/dev/cu.usbserial-DA01L12I';
...@@ -28,29 +24,68 @@ var baudRate = 9600; ...@@ -28,29 +24,68 @@ var baudRate = 9600;
//}); //});
io.on('connection', function(socket){ io.on('connection', function(socket){
console.log('a user connected');
io.emit('connected');
});
var allPorts = [];
serialport.list(function(err, ports){
ports.forEach(function(port) {
allPorts.push(port.comName);
});
var myPort = new SerialPort(portName, { socket.emit('connected', {
baudRate: baudRate, baudRate: baudRate,
parser:serialport.parsers.readline("\n") portName: portName,
// parser: serialport.parsers.raw availablePorts: allPorts
});
});
socket.on('baudRate', function(value){
baudRate = value;
changePort();
console.log(value);
}); });
myPort.on('open', onPortOpen); socket.on('portName', function(value){
myPort.on('data', onPortData); if (allPorts.indexOf(value) < 0) {
myPort.on('close', onPortClose); onPortError("no available port called " + value);
myPort.on('error', onPortError); return;
}
portName = value;
changePort();
console.log(value);
});
var currentPort = initPort(portName, baudRate);
function initPort(_portName, _baudRate){
var port = new SerialPort(_portName, {
baudRate: _baudRate,
parser:serialport.parsers.readline("\n")
// parser: serialport.parsers.raw
}, false);
port.open(function(error){
if (error) onPortError(error);
onPortOpen();
port.on('data', onPortData);
port.on('close', onPortClose);
port.on('error', onPortError);
});
return port;
}
function changePort(_portName, _baudRate){
if (currentPort) currentPort.close(function(error){
if (error) onPortError(error);
});
currentPort = initPort(_portName, _baudRate);
}
function onPortOpen(){ function onPortOpen(){
console.log("port open"); socket.emit("portConnected", baudRate);
} }
function onPortData(data){ function onPortData(data){
...@@ -58,11 +93,19 @@ function onPortData(data){ ...@@ -58,11 +93,19 @@ function onPortData(data){
} }
function onPortClose(){ function onPortClose(){
console.log("port close"); console.log("portclosed");
socket.emit("portDisconnected", baudRate);
} }
function onPortError(error){ function onPortError(error){
console.log("Serial port error " + error); console.log("Serial port error " + error);
socket.emit("error", error);
} }
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment