我的一位同事根据以下模式序列化了protobuff文件:
syntax = "proto3";
import "timestamp.proto";
message PSessionLogs {
// from Root proto
int32 EntityType = 1;
string SessionID = 2;
repeated PSessionLogsDetail LogDetail = 3;
}
message PSessionLogsDetail {
google.protobuf.Timestamp DataTimestamp = 1;
// Sensory data
int32 Sens1 = 2;
int32 Sens2 = 3;
int32 Sens3 = 4;
}
本质上,消息有一个标头(EntityType和SessionID),在该标头之后,日志记录开始,其中3个传感器连续发送带有时间戳的日志消息。在序列化每个传感器测量之前,他创建了一个带有时间戳和3个传感器数据的结构。我们要做的是在Python中反序列化这个日志文件,其中有一个头,然后是一个带有时间戳和传感器数据的LogDetail成员
我尝试使用protoc从.proto文件生成一个.py文件,并使用此.py,如下所示:
import PSessionLogs_pb2
with open('$PROTOBUF_LOG_FILENAME$', 'rb') as f:
read_metric = PSessionLogs_pb2.PSessionLogs()
read_metric.ParseFromString(f.read())
这给了我
"DecodeError: Truncated message."
日志似乎也在用时间戳值覆盖EntityType的值
知道我做错了什么吗
目前没有回答
相关问题 更多 >
编程相关推荐