Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过SerialPort使用Node.js发送字节(0xFF)_Javascript_Python_Node.js_Serial Port - Fatal编程技术网

Javascript 通过SerialPort使用Node.js发送字节(0xFF)

Javascript 通过SerialPort使用Node.js发送字节(0xFF),javascript,python,node.js,serial-port,Javascript,Python,Node.js,Serial Port,我用一个结束字节发送命令,它是: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: En

我用一个结束字节发送命令,它是: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 = "\xff\xff\xff"
  ser.write('page 1'+EndCom)
  print EndCom
  time.sleep(1)
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(" "));
});
Node.js中的相同代码不起作用:

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)
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,我会收到带有3个空格的“第1页”,使用Node.js,我会收到这样的信息:“第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>

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