Node js Последовательный порт Получить ответ «ОШИБКА» или «ОК» sms-модем

Я использую 8-портовый SMS-модем Wavecom. Моя проблема в том, что я хочу проверить, есть ли ошибка (например, отсутствие баланса нагрузки или отсутствие SIM-карты) при написании AT-команд, тогда он проверит другие доступные порты для повторной отправки SMS.

Я хочу зафиксировать только вывод ERROR или OK

я использовал эту функцию

function sendSync(port, src) {
  return new Promise((resolve, reject) => {
      port.write(src,(err)=>{
        if(err){
          reject(err)
        }
        port.drain()
      });
      port.once('data', (data) => {
        console.log('###############################',data.toString())
          resolve(data.toString());
      });

      port.once('error', (err) => {
        console.log('************************')
          reject(err);
      });
  });
}

Данные, полученные из порта


person John Harry Truman Reyes    schedule 07.09.2018    source источник
comment
Ваша функция выглядит правильно. Может быть, проблема заключается в том, как называется sendSync() ?   -  person Roamer-1888    schedule 07.09.2018
comment
Эта функция также выводит AT-команду, а также подтверждение OK или ERROR. Я хочу только OK или ERROR.   -  person John Harry Truman Reyes    schedule 08.09.2018
comment
Разве это не вопрос интерпретации в звонящем? Если возвращенное обещание устанавливается на своем пути успеха, то все в порядке. Если он остановился на своем ошибочном пути, это ОШИБКА.   -  person Roamer-1888    schedule 08.09.2018


Ответы (1)


Я сейчас использую последовательный порт 5.0

Я решаю свою проблему, создавая эту функцию

function writeSync(serial,cmd){
  return new Promise(function(resolve,reject){
    serial.write(cmd)
    serial.drain()
    serial.once('data',(data)=>{
      var arr = data.toString()
      var str = arr.split(/\r?\n/);
      //console.log(str[1])
      resolve(str[1])
    })
  })
}
person John Harry Truman Reyes    schedule 10.09.2018