Node.js Protobuf Can';解码缓冲器
protobuf.js版本:^6.2.1 缓冲区 08351560459581840220A0D6048595895815BDF426422A0A0D7047595815BDF426 代码:Node.js Protobuf Can';解码缓冲器,node.js,protocol-buffers,protobufjs,Node.js,Protocol Buffers,Protobufjs,protobuf.js版本:^6.2.1 缓冲区 08351560459581840220A0D6048595895815BDF426422A0A0D7047595815BDF426 代码: protobuf.load("PulseFlagData.proto", function(err, root) { if (err) { callback(err);
protobuf.load("PulseFlagData.proto", function(err, root) {
if (err) {
callback(err);
}
var pulse = root.lookup("PulseFlagData");
callback(null, pulse.decode(parsed_data.payload));
});
syntax = "proto3";
message PulseFlagSample {
required fixed32 timestamp = 1;
required uint32 input = 2;
required bool flag = 3;
}
message PulseFlagData {
required uint32 config_version = 1;
required fixed32 device_time = 2;
required PulseFlagSample current = 3;
optional PulseFlagSample last_hour = 4;
}
.proto文件:
protobuf.load("PulseFlagData.proto", function(err, root) {
if (err) {
callback(err);
}
var pulse = root.lookup("PulseFlagData");
callback(null, pulse.decode(parsed_data.payload));
});
syntax = "proto3";
message PulseFlagSample {
required fixed32 timestamp = 1;
required uint32 input = 2;
required bool flag = 3;
}
message PulseFlagData {
required uint32 config_version = 1;
required fixed32 device_time = 2;
required PulseFlagSample current = 3;
optional PulseFlagSample last_hour = 4;
}
错误:
protobuf.load("PulseFlagData.proto", function(err, root) {
if (err) {
callback(err);
}
var pulse = root.lookup("PulseFlagData");
callback(null, pulse.decode(parsed_data.payload));
});
syntax = "proto3";
message PulseFlagSample {
required fixed32 timestamp = 1;
required uint32 input = 2;
required bool flag = 3;
}
message PulseFlagData {
required uint32 config_version = 1;
required fixed32 device_time = 2;
required PulseFlagSample current = 3;
optional PulseFlagSample last_hour = 4;
}
/home/deck/NetBeansProjects/lora/node_modules/protobufjs/src/reader.js:390
投掷指数(此,长度);
^
范围错误:索引超出范围:23+10>32
在范围错误(本机)
在IndexOutfrange(/home/deck/NetBeansProjects/lora/node_modules/protobufjs/src/reader.js:13:12)
在BufferReader.skip(/home/deck/NetBeansProjects/lora/node_modules/protobufjs/src/reader.js:390:19)
在BufferReader.ReaderPrototype.skipType(/home/deck/NetBeansProjects/lora/node_modules/protobufjs/src/reader.js:410:18)
at类型._PulseFlagSample$decode[as decode](eof时的评估(/home/deck/NetBeansProjects/lora/node_modules/protobufjs/node_modules/@protobufjs/codegen/index.js:102:25),:19:7)
在Type.decode_设置[作为解码](/home/deck/NetBeansProjects/lora/node_modules/protobufjs/src/Type.js:370:7)
at类型._PulseFlagData$decode[as decode](eof时的评估(/home/deck/NetBeansProjects/lora/node_modules/protobufjs/node_modules/@protobufjs/codegen/index.js:102:25),:16:27)
在Type.decode_设置[作为解码](/home/deck/NetBeansProjects/lora/node_modules/protobufjs/src/Type.js:370:7)
在/home/deck/NetBeansProjects/lora/server.js:42:50
完成时(/home/deck/NetBeansProjects/lora/node_modules/protobufjs/src/root.js:84:9)您的输入不是有效的协议缓冲区
uint32 a = 1;
fixed32 b = 2;
int32 c = 3;
SomeMessageType d = 4;
SomeMessageType e = 5;
这些字段声明与您提供的PulseFlagData
类型不一致08 35 // 1: [u]int32, = 53
15 60485958 // 2: fixed32, = 1615354200
18 40 // 3: [u]int32, = 64
22 0a 0d6048595815bdf42642 // 4: sub-message, length 10
0d 60485958 // 1: fixed32, = 1615354200
15 bdf42642 // 2: fixed32, = 3186894402
2a 0a 0d7047595815bdf426 // 5: sub-message, length 10, incomplete
0d 70475958 // 1: fixed32, = 1883724120
15 bdf426 // 2: fixed32, incomplete
你说得对!我丢失了最后一个字节。并从供应商处收到不正确的数据描述。非常感谢。