Skip to main content
deleted 2 characters in body
Source Link
Xotic750
  • 635
  • 6
  • 15
const SerialPort = require('serialport');
const port = new SerialPort(require('./ports').arduino, {
  autoOpen: false,
  baudRate: 115200,
  dataBits: 8,
  parity: 'none',
  stopBits: 1,
  parser: SerialPort.parsers.readline('\n')
});

let portSatus = 'init';
port.on('error', err => console.log('Error: ', err.message));
port.on('open', () => {
  portSatus = 'open';
  console.log('Port is open');
  setTimeout(() => {
    portSatus = 'ready';
    console.log('Port is ready');
  }, 500);
});
port.on('disconnect', () => {
  portSatus = 'disconnected';
  console.log('Port disconnected');

});
port.on('closed', () => {
  portSatus = 'closed';
  console.log('Port is closed');
});

port.open(err => {
  if (err) {
    console.log('Error opening port: ', err.message);
  } else {
    console.log('Opening port');
  }
});

function dummyCallback(dataStringdataArray) {
  console.log('Data without callback: ', datastringdataArray);
}

function doCallBackOnData(callBack) {
  port.on('data', dataStringdataArray => {
    console.log('Received data', dataStringdataArray);
    const data = JSON.parse(dataStringdataArray[0]);
    data.timeStamp = Date.now();
    callBack(data);
    doCallBackOnData(dummyCallback);
  });
}

doCallBackOnData(dummyCallback);

module.exports = callback => {
  if (portSatus === 'ready') {
    console.log('Calling command9');
    port.write('9', err => {
      if (err) {
        console.log('command9 error: ', err.message);
        callback(err.message);
      } else {
        console.log('command9 buffered');
        port.drain(() => {
          console.log('command9 written');
          doCallBackOnData(callback);
        });
      }
    });
  } else {
    console.log('Can not call command9:', portSatus);
    callback(portSatus);
  }
};
const SerialPort = require('serialport');
const port = new SerialPort(require('./ports').arduino, {
  autoOpen: false,
  baudRate: 115200,
  dataBits: 8,
  parity: 'none',
  stopBits: 1,
  parser: SerialPort.parsers.readline('\n')
});

let portSatus = 'init';
port.on('error', err => console.log('Error: ', err.message));
port.on('open', () => {
  portSatus = 'open';
  console.log('Port is open');
  setTimeout(() => {
    portSatus = 'ready';
    console.log('Port is ready');
  }, 500);
});
port.on('disconnect', () => {
  portSatus = 'disconnected';
  console.log('Port disconnected');

});
port.on('closed', () => {
  portSatus = 'closed';
  console.log('Port is closed');
});

port.open(err => {
  if (err) {
    console.log('Error opening port: ', err.message);
  } else {
    console.log('Opening port');
  }
});

function dummyCallback(dataString) {
  console.log('Data without callback: ', datastring);
}

function doCallBackOnData(callBack) {
  port.on('data', dataString => {
    console.log('Received data', dataString);
    const data = JSON.parse(dataString);
    data.timeStamp = Date.now();
    callBack(data);
    doCallBackOnData(dummyCallback);
  });
}

doCallBackOnData(dummyCallback);

module.exports = callback => {
  if (portSatus === 'ready') {
    console.log('Calling command9');
    port.write('9', err => {
      if (err) {
        console.log('command9 error: ', err.message);
        callback(err.message);
      } else {
        console.log('command9 buffered');
        port.drain(() => {
          console.log('command9 written');
          doCallBackOnData(callback);
        });
      }
    });
  } else {
    console.log('Can not call command9:', portSatus);
    callback(portSatus);
  }
};
const SerialPort = require('serialport');
const port = new SerialPort(require('./ports').arduino, {
  autoOpen: false,
  baudRate: 115200,
  dataBits: 8,
  parity: 'none',
  stopBits: 1,
  parser: SerialPort.parsers.readline('\n')
});

let portSatus = 'init';
port.on('error', err => console.log('Error: ', err.message));
port.on('open', () => {
  portSatus = 'open';
  console.log('Port is open');
  setTimeout(() => {
    portSatus = 'ready';
    console.log('Port is ready');
  }, 500);
});
port.on('disconnect', () => {
  portSatus = 'disconnected';
  console.log('Port disconnected');

});
port.on('closed', () => {
  portSatus = 'closed';
  console.log('Port is closed');
});

port.open(err => {
  if (err) {
    console.log('Error opening port: ', err.message);
  } else {
    console.log('Opening port');
  }
});

function dummyCallback(dataArray) {
  console.log('Data without callback: ', dataArray);
}

function doCallBackOnData(callBack) {
  port.on('data', dataArray => {
    console.log('Received data', dataArray);
    const data = JSON.parse(dataArray[0]);
    data.timeStamp = Date.now();
    callBack(data);
    doCallBackOnData(dummyCallback);
  });
}

doCallBackOnData(dummyCallback);

module.exports = callback => {
  if (portSatus === 'ready') {
    console.log('Calling command9');
    port.write('9', err => {
      if (err) {
        console.log('command9 error: ', err.message);
        callback(err.message);
      } else {
        console.log('command9 buffered');
        port.drain(() => {
          console.log('command9 written');
          doCallBackOnData(callback);
        });
      }
    });
  } else {
    console.log('Can not call command9:', portSatus);
    callback(portSatus);
  }
};
Post Undeleted by Xotic750
Post Deleted by Xotic750
Source Link
Xotic750
  • 635
  • 6
  • 15

As I mentioned, there is a smell w.r.t. what you are doing. However, that aside, here is some code that you can try. I can't test it, but hopefully it will be of some help.

const SerialPort = require('serialport');
const port = new SerialPort(require('./ports').arduino, {
  autoOpen: false,
  baudRate: 115200,
  dataBits: 8,
  parity: 'none',
  stopBits: 1,
  parser: SerialPort.parsers.readline('\n')
});

let portSatus = 'init';
port.on('error', err => console.log('Error: ', err.message));
port.on('open', () => {
  portSatus = 'open';
  console.log('Port is open');
  setTimeout(() => {
    portSatus = 'ready';
    console.log('Port is ready');
  }, 500);
});
port.on('disconnect', () => {
  portSatus = 'disconnected';
  console.log('Port disconnected');

});
port.on('closed', () => {
  portSatus = 'closed';
  console.log('Port is closed');
});

port.open(err => {
  if (err) {
    console.log('Error opening port: ', err.message);
  } else {
    console.log('Opening port');
  }
});

function dummyCallback(dataString) {
  console.log('Data without callback: ', datastring);
}

function doCallBackOnData(callBack) {
  port.on('data', dataString => {
    console.log('Received data', dataString);
    const data = JSON.parse(dataString);
    data.timeStamp = Date.now();
    callBack(data);
    doCallBackOnData(dummyCallback);
  });
}

doCallBackOnData(dummyCallback);

module.exports = callback => {
  if (portSatus === 'ready') {
    console.log('Calling command9');
    port.write('9', err => {
      if (err) {
        console.log('command9 error: ', err.message);
        callback(err.message);
      } else {
        console.log('command9 buffered');
        port.drain(() => {
          console.log('command9 written');
          doCallBackOnData(callback);
        });
      }
    });
  } else {
    console.log('Can not call command9:', portSatus);
    callback(portSatus);
  }
};