Как передать данные из функции port.on во внешнюю переменную - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь передать содержимое данных во внешнюю переменную используя строку lottoNumber = rndNum;. Пожалуйста, смотрите код ниже.

var SerialPort = require('serialport');
const Buffer = require('buffer').Buffer;
var port = new SerialPort('/dev/ttyACM0', {
  baudRate: 9600, parser: new SerialPort.parsers.Readline("\n\r")
});

var rndNum = -1;
var lottoNumber = -99;

// Read the port data
port.on('data', function(data) {
  const buf = Buffer.from(data);
  rndNum = buf.readUInt8(0,1);
  if((rndNum > 0) && (rndNum < 41)) {
    lottoNumber = rndNum;
    port.close(function (err) {
      console.log(err);
    });
  }
});

console.log(lottoNumber);

Ожидаемое значение от console.log(lottoNumber); - это число от 1-40, но фактическое значение - -99, что неверно. Как передать содержимое rndNum в lottoNumber? Спасибо за любую помощь!

1 Ответ

0 голосов
/ 20 апреля 2019

не знаком с serialport, но вы не сможете получить доступ к объявлению новой переменной вне области действия функции port.on (), если не вызовете ее.

var lottoNumber = -99

function portable(data){
  var rndNum = Math.floor(Math.random() * Math.max(data))
  lottoNumber = rndNum;
}

console.log(lottoNumber) // will log -99

переменная lottoNumber не являетсяв области портативных ()

portable(41)
console.log(lottoNumber) // will log to the console random numbers only if portable() is called 

объем MDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...