-2

以下任务要做:

有一个协议定义了简约数据,例如:

binary     0 1 0 0 0 1 1 1 0 0 1 1 1 0
variable   [-] [-----] [---] [-------]
name       a      b      c       d

其中参数“a”由 2 位组成,参数“b”由 5 位组成,依此类推。我必须将它们设置为

a=1
b=1
c=6
d=...

所以上面的位缓冲区会自动产生。

此比特流应存储在如下缓冲区中:

let buf = Buffer.alloc(64, 0);

有没有可能实现这一目标?

4

1 回答 1

0

有很多方法可以解决这个问题。

  1. 使用node-red-contrib-buffer-parser之类的节点,这将允许您将其作为流的一部分来执行

  2. 在功能节点中进行基本的位移。例如

    var a = 1
    var b = 16
    var c = 2
    var d = 10
    
    var answer  = a << 14 | b << 12 | c << 10 | d << 6
    

    然后可以将其写入buffer.writeUint16()

于 2022-02-18T10:56:54.660 回答