读取串行端口数据-将缓冲区转换为字符串

时间:2018-09-13 09:50:51

标签: node.js node-serialport virtual-serial-port

我正在使用serialport npm包来读取来自端口COM的数据,我已经使用com0com创建了虚拟端口对。我将COM5设置为读取端,将COM6设置为写入端。

所以我写了这个测试脚本:

var StringDecoder = require('string_decoder').StringDecoder;

// Require the serialport node module
var serialport = require('serialport');
var SerialPort = serialport.SerialPort;
// Open the port
var port = new serialport("COM6", {
    baudRate: 9600,
    parser: new serialport.parsers.Readline('\n')
});
// Read the port data
port.on("open", function () {
    console.log('open');
    port.on('data', function(data) {
        var decoder = new StringDecoder('utf8');
        var textChunk = decoder.write(data);

        console.log(textChunk);
        console.log("----");
        console.log(data);


    });
});

1-我运行我的应用。

2-然后我通过在cmd终端中写“ echo hi> COM5”来模拟向COM5发送数据

3-我在应用程序的终端上得到了以下输出:

open
h
----
<Buffer 68>
i

----
<Buffer 69 0d 0a>

当我尝试呼应“ hello”时-有时我得到(但不总是如此):

----
<Buffer 0a>
h
----
<Buffer 68>
el
----
<Buffer 65 6c>
l
----
<Buffer 6c>
o
----
<Buffer 6f>

如您所见,“ hi”消息将变为两个缓冲区位,而hello变为随机数,那么将缓冲区数据转换为单个字符串的更正方法是什么(在此示例中为“ hi或hello” )?我是否错过了处理缓冲区数据的基础知识?

0 个答案:

没有答案