2

RS232 シリアル接続を介して RFID リーダーにコマンドを送信できません。リーダーに接続してメッセージを書き込むことはできますが、応答がありません。

リーダーのドキュメントで、この問題の考えられる説明を見つけることができます (p. 16):

プロトコル フレームに障害がある場合、リーダーからの応答はありません。

プロトコル フレーム形式については、次の情報を利用できます。

ここに画像の説明を入力

これ0x02 0x00 0x09 0x00 0xB0 0x01 0x00 0xCA 0x86は、インベントリ (範囲内のすべてのタグを取得する) コマンドの 16 進数です。

リーダーが動作し、シリアル設定が正しいことは 100% 確信していますが、バッファを正しい方法で使用しているかどうかはわかりません。

これは私が現時点でコードとして持っているものです:

設定.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);
    }
}
4

1 に答える 1