protobuf.js版本:^ 6.2.1
缓冲
083515604859581840220a0d6048595815bdf426422a0a0d7047595815bdf426
码
protobuf.load("PulseFlagData.proto", function(err, root) {
if (err) {
callback(err);
}
var pulse = root.lookup("PulseFlagData");
callback(null, pulse.decode(parsed_data.payload));
});
.proto file:
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 throw indexOutOfRange(this,length); ^
RangeError:index超出范围:23 + 10> 32 在RangeError(本机) 在indexOutOfRange(/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) 在Type._PulseFlagSample $ decode [as decode](eval eval(/home/deck/NetBeansProjects/lora/node_modules/protobufjs/node_modules/@protobufjs/codegen/index.js:102:25),:19:7) 在Type.decode_setup [作为解码](/home/deck/NetBeansProjects/lora/node_modules/protobufjs/src/type.js:370:7) 在Type._PulseFlagData $ decode [as decode](eval eval(/home/deck/NetBeansProjects/lora/node_modules/protobufjs/node_modules/@protobufjs/codegen/index.js:102:25),:16:27) 在Type.decode_setup [作为解码](/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)
答案 0 :(得分:1)
您的输入不是有效的协议缓冲区。
即使消息没有过早切断,它似乎与您正在解析的类型不匹配。该消息似乎包含字段:
LinearLayout linear_layout;
Textview textview;
for (int i = 0; i < 3; i++) {
textview = new TextView(this);
textview .setId(i);
textview .setTextSize(15);
textview .setTextColor(Color.BLACK);
linear_layout.add(textview);
}
linear_layout.findViewById(1).setBackgroundColor(Color.RED);
这些字段声明与您提供的uint32 a = 1;
fixed32 b = 2;
int32 c = 3;
SomeMessageType d = 4;
SomeMessageType e = 5;
类型不符。
以下是按字段细分的原始数据:
PulseFlagData