簡體   English   中英

通過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一起使用的下一步屏幕。 使用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>

希望這段代碼能對某人有所幫助! 再見

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM