myPort.on('open', function () { myPort.flush(function(err,result){ debug(err + " - " + result); }); myPort.resume(); portOpen = true; debug('Port open'); self.emit('status', {portopen: portOpen}); });
// This is automatically called when cockpit loads all of the plugins, and when a plugin is enabled start() { // Enable the listeners! this.listeners.settings.enable(); this.listeners.mcuStatus.enable(); this.listeners.sayHello.enable(); this.listeners.depthStatus.enable(); var self = this; var ticks = 0; SerialPort.list(function(err, ports) { ports.forEach(function(port) { console.log(port.comName); }); }); var uartPath = "/dev/ttyACM0" // from SerialBridge.js var uartBaud = 115200; const serialPort = new SerialPort(uartPath, { baudRate: uartBaud, // parser: SerialPort.parsers.ReadLine('\r\n'), // dosen't work on serialPort 5.x autoOpen: false }); serialPort.open(function(err) { if (err) { return console.log('Error opening port: ', err.message); } }); serialPort.flush(function(err) { // setTimeout(function () { // sp.close(function (err) { // }); // }, 10); console.log('Serial port flushed'); }); var Readline; var parser; if (SerialPort.parsers.Readline) { Readline= SerialPort.parsers.Readline; parser=serialPort.pipe(Readline({delimiter: '\r\n'})); console.log('Readline'); } if (SerialPort.parsers.ReadLine) { // This one for serialPort 5.x Readline = SerialPort.parsers.ReadLine; parser = serialPort.pipe(Readline({ delimiter: '\r\n' })); console.log('ReadLine'); } if (SerialPort.parsers.readline) { Readline= SerialPort.parsers.readline; parser=serialPort.pipe(Readline({delimiter: '\r\n'})); console.log('readline'); } serialPort.on('open', function() { // logger.debug('Serial port opened'); console.log('Serial port opened'); serialPort.write('b'); // signal microcontroller to start "b" for begin console.log('wrote b'); }); parser.on('data', function(jsondata) { console.log('Got data'); var data try{ data = JSON.parse(jsondata); if (data.Group){ var filename = "sd_" + Date.now() + ".json" var sampleSet = {} sampleSet.group = data; sampleSet.depth = self.depth; sampleSet.temp = self.temp; fs.appendFile(path.join("/usr/share/cockpit/analogsensor",filename),JSON.stringify(sampleSet)); } console.dir(data); console.log("Group=",data.Group) if (data.Group == 50){ serialPort.write('b'); // signal microcontroller to start "b" for begin console.log('wrote b'); } }catch(e){ //ignore data, not valid json console.warn("Bad json found from serial port", jsondata); } //console.log(data.ToString()) /* //parseStatus turns data in to an object of name,value pairs {name:"value",name2,"value2"} var status = reader.parseStatus(data); console.log(status); //var status = {name:"value",name2,"value2"}; self.globalBus.emit('mcu.status',status); */ // console.log(data); // seems to overflow things, get beeps from ROV and no logging }); serialPort.on('error', function(err) { // logger.debug('Serial error',err) console.log('Serial error', err); }) serialPort.on('close', function(data) { // logger.debug('Serial port closed'); console.log('Serial port closed'); }); /* bridge.emit('status', status); if (emitRawSerial) { bridge.emit('serial-recieved', data + '\n'); } }); */ var self = this; setInterval(function() { self.globalBus.emit('mcu.status', { jimt: ticks++ }) }, 1000); }