2016-05-31 28 views
0

終了バイトでコマンドを送信します:0xFFは3回です。 Pythonでは、このコードは動作しています:SerialPort経由でNode.jsでバイト(0xFF)を送信

import time 
import serial 

ser = serial.Serial(
    port='/dev/ttyAMA0', 
    baudrate = 9600, 
    parity=serial.PARITY_NONE, 
    stopbits=serial.STOPBITS_ONE, 
    bytesize=serial.EIGHTBITS, 
    timeout=1 
) 

while 1: 
    EndCom = "\xff\xff\xff" 
    ser.write('page 1'+EndCom) 
    print EndCom 
    time.sleep(1) 

Node.jsの中に同じコードが動作しません:

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

var port = new SerialPort('/dev/ttyAMA0', { 
    baudrate: 9600 
}); 

port.on('open', function() { 
    console.log('Port ouvert sur /dev/ttyAMA0 @ 9600 bds'); 

    var end = "\xff\xff\xff"; 
    port.write("page 1"+end); 
}); 

port.on('data', function(byte) { 
    console.log("Data :", byte.toString('hex').match(/.{1,2}/g).join(" ")); 
}); 

私はSERIALPORTと作品ですNextion画面を制御するためにこれを使用します。 Pythonでは、 "page 1"を3つのスペースで受け取っています。Node.jsでは "page1ÿÿ¿½¿¿"を受け取ります。

なぜ私には違いはありません。

ありがとうございました!

答えて

1

答えは次のとおりです。

function hex(str) { 
     var arr = []; 
     for (var i = 0, l = str.length; i < l; i ++) { 
       var ascii = str.charCodeAt(i); 
       arr.push(ascii); 
     } 
     arr.push(255); 
     arr.push(255); 
     arr.push(255); 
     return new Buffer(arr); 
} 

私はそのように機能を使用します:

port.write(hex("page 1")); 
私はこれが私の関数であるNode.jsの

でバイトを送信するために、バッファを使用する必要があります

この関数は、次のような結果を返します。

<Buffer 70 61 67 65 20 31 ff ff ff> 

このコードが誰かを助けることを願っています!バイ

関連する問題