2016-09-28 3 views
0

У меня проблема, я пытаюсь получить вес из шкалы с помощью NodeJS и модуля npm «Serialport» в Windows.Как я могу получить результат с помощью nodeJS

Проблема, которая у меня есть, заключается в том, что она не имеет значения для команды, которую я отправил в шкалу, она не возвращает никаких данных.

Я уже скомпилированный модуль SerialPort для проекта, что я делаю на nwJS, и у меня есть следующий код:

var SerialPort = require('serialport'); 

      var port = new SerialPort('COM4', { 
       parser: SerialPort.parsers.readline('W\n'), 
       baudRate: 9600, 
       dataBits: 7, 
       stopBits: 1, 
       parity: 'even', 
       bufferSize: 1024 
      }); 

function write() { 
      port.open(function(err) { 
       console.log("Writing serial data: "); 
       port.on('data', function(data) { 
        console.log('Data: ' + data); 
       }); 
       port.write(resultString, function(err, res) { 
        if (err) { 
         console.log(err); 
        } 
        port.close(); 
       }); 
      }); 
     } 
    port.on('error', function(err) { 
       console.log('Error: ', err.message); 
      }) 
      setTimeout(write, 1000); 

Примечание: анализатор W \ п является строкой, что масштаб должен отправить вес. Я проверил это с другой заявкой coolterm

Спасибо за любую помощь.

+1

port.on ('данные', функция (данные) { console.log ('Данные:' + данные); }); – ippi

+0

Спасибо и да простите, когда я написал код здесь, я забыл о «данных», но с кодом он не работает. – Ronald

+0

Нам, вероятно, потребуется увидеть документацию serialPort для вашего масштаба, чтобы понять, как это работает. – jfriend00

ответ

1

Скорее всего, проблема связана с конфигурацией парсера. Вместо ReadLine парсер:

parser: SerialPort.parsers.readline('W\n'), 

Попробуйте Разделитель анализатор:

var weight_parser = port.pipe(new Delimiter({delimiter: new Buffer('W\n')})); 
... 
parser: weight_parser, 
... 
parser.on('data', console.log); 

Если это не работает, чтобы устранить попробовать ByteLength анализатор, чтобы увидеть, если событие «данные» в уволят или нет.

+0

Спасибо за ответ – Ronald

+0

Что заставило его работать на вас Делиметр или ByteLength парсер? –

+0

проблема была в Parser, в этом случае я использовал «W \ n», но правильный способ сделать это. var weight_parser = port.pipe (новый разделитель ({разделитель: новый буфер ('\ n')})); – Ronald

Смежные вопросы