通过 SerialPort 发送带 Node.js 的字节 (0xFF)
Send byte (0xFF) with Node.js through SerialPort
我发送带有结束字节的命令,它是: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)
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 Screen。使用 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"));
函数 returns 类似的东西 :
<Buffer 70 61 67 65 20 31 ff ff ff>
希望这段代码对某人有所帮助!再见
我发送带有结束字节的命令,它是: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)
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 Screen。使用 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"));
函数 returns 类似的东西 :
<Buffer 70 61 67 65 20 31 ff ff ff>
希望这段代码对某人有所帮助!再见