Ejemplo n.º 1
0
 myPort.on('open', function () {
     myPort.flush(function(err,result){ debug(err + " - " + result); });
     myPort.resume();
     portOpen = true;
     debug('Port open');
     self.emit('status', {portopen: portOpen});
 });
Ejemplo n.º 2
0
    // 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);

    }