我正在使用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” )?我是否错过了处理缓冲区数据的基础知识?