通过串行端口发送带有 Node.js 的字节 (0xFF)



我发送带有结束字节的命令,它是:0xFF三次。在python中,这段代码正在工作:

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 = "xffxffxff"
  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 = "xffxffxff";
  port.write("page 1"+end);
});
port.on('data', function(byte) {
  console.log("Data :", byte.toString('hex').match(/.{1,2}/g).join(" "));
});

我用它来控制与SerialPort一起使用的Nextion屏幕。使用 Python 我收到带有 3 个空格的"page 1",使用 Node.js我收到这个:"page 1ÿÿÿ"。

我不知道为什么,对我来说没有任何区别。

感谢您的帮助!

答案是:我需要使用缓冲区来发送带有 Node 的字节.js

这是我的功能:

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"));

该函数返回类似以下内容:

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

希望这段代码能帮助某人!再见

最新更新