2016-03-03 4 views
2

У меня возникла проблема с отправкой команды на RFID-ридер через последовательное соединение RS232. Я могу подключиться к читателю и писать сообщения, но я не получаю ответа.NodeJS и node-serialport У меня возникли проблемы с записью

В documentation читателя я могу найти возможное объяснение этой проблемы (стр. 16):

Там нет ответа от читателя, если есть сбой кадра протокола.

Следующей информация доступна для формата кадр протокола:

enter image description here

Так вот 0x02 0x00 0x09 0x00 0xB0 0x01 0x00 0xCA 0x86 в шестнадцатеричном для инвентаризации (получение всех тегов в диапазоне) команде.

Я на 100% уверен, что читатель работает, и последовательные настройки верны, но я не уверен, что использую буфер правильно.

Это то, что я, как код на данный момент:

settings.json

{ 
    "serialport":"COM3", 
    "baudrate":38400 
} 

app.js

var settings = require('./settings'); 
var serialport= require('serialport'); 
var SerialPort = serialport.SerialPort; 

var inventorycommand = new Buffer([0x02,0x00,0x09,0x00,0xB0,0x01,0x00,0xCA,0x86],'hex'); 

var serialconnection = new SerialPort(settings.serialport,{baudRate:settings.baudrate,parity:'even',encoding:'hex'},false); 

serialconnection.open(portOpened); 

function portOpened(err) { 
    if(err)console.log('ERR: '+ err); 
    console.log('serial port opened: '+ settings.serialport+' with baudrate '+ settings.baudrate); 

    setTimeout(function(){ 
     serialconnection.write(inventorycommand.toString('hex')); 
     console.log(inventorycommand.toString('hex')); 
    },1000); 


    serialconnection.on('data',dataReceived); 
    serialconnection.on('close', portClosed); 
    serialconnection.on('error',errorReceived); 

    function dataReceived(data) { 
     console.log('data received: ' +data); 
    } 

    function portClosed() { 
     console.log('port closed.') 
    } 

    function errorReceived(err) { 
     console.log('error: ' + err); 
    } 
} 

ответ

3

Похоже, добавив функцию обратного вызова к вызову функции write() исправлена ​​проблема.

serialconnection.write(inventorycommand,function(err,result){ 
      if(err){ 
       console.log('ERR: ' + err); 
      } 
      console.log('result:' + result) 
     }); 
Смежные вопросы