diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2013-08-13 07:33:32 +0200 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2013-08-13 07:33:32 +0200 |
commit | da9d9781f999361009b2c7b8e9b18d0d500c072c (patch) | |
tree | a867c8da42a5c10e8635913214893b785bd7ad68 | |
parent | b3d2efc90af671f13f8f473230e3af6e8d91153c (diff) | |
download | px4-firmware-da9d9781f999361009b2c7b8e9b18d0d500c072c.tar.gz px4-firmware-da9d9781f999361009b2c7b8e9b18d0d500c072c.tar.bz2 px4-firmware-da9d9781f999361009b2c7b8e9b18d0d500c072c.zip |
Final version of log conversion script, runs with Python 2 or 3 on Windows, Linux and MacOS. Tested on Mac with 2 and 3
-rw-r--r-- | Tools/sdlog2_dump.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/Tools/sdlog2_dump.py b/Tools/sdlog2_dump.py index 8746a9947..a376e03d3 100644 --- a/Tools/sdlog2_dump.py +++ b/Tools/sdlog2_dump.py @@ -198,14 +198,19 @@ class SDLog2Parser: if runningPython3: data = struct.unpack(self.MSG_FORMAT_STRUCT, self.__buffer[self.__ptr + 3 : self.__ptr + self.MSG_FORMAT_PACKET_LEN]) else: - data = struct.unpack(self.MSG_FORMAT_STRUCT, self.__buffer[self.__ptr + 3 : self.__ptr + self.MSG_FORMAT_PACKET_LEN]) + data = struct.unpack(self.MSG_FORMAT_STRUCT, str(self.__buffer[self.__ptr + 3 : self.__ptr + self.MSG_FORMAT_PACKET_LEN])) msg_type = data[0] print(msg_type) if msg_type != self.MSG_TYPE_FORMAT: msg_length = data[1] - msg_name = str(data[2]).strip("\0") - msg_format = str(data[3]).strip("\0") - msg_labels = str(data[4]).strip("\0").split(",") + if runningPython3: + msg_name = str(data[2], 'ascii').strip("\0") + msg_format = str(data[3], 'ascii').strip("\0") + msg_labels = str(data[4], 'ascii').strip("\0").split(",") + else: + msg_name = str(data[2]).strip("\0") + msg_format = str(data[3]).strip("\0") + msg_labels = str(data[4]).strip("\0").split(",") # Convert msg_format to struct.unpack format string msg_struct = "" msg_mults = [] @@ -233,7 +238,10 @@ class SDLog2Parser: self.__csv_updated = False show_fields = self.__filterMsg(msg_name) if (show_fields != None): - data = list(struct.unpack(msg_struct, str(bytearray(self.__buffer[self.__ptr+self.MSG_HEADER_LEN:self.__ptr+msg_length])))) + if runningPython3: + data = list(struct.unpack(msg_struct, self.__buffer[self.__ptr+self.MSG_HEADER_LEN:self.__ptr+msg_length])) + else: + data = list(struct.unpack(msg_struct, str(self.__buffer[self.__ptr+self.MSG_HEADER_LEN:self.__ptr+msg_length]))) for i in range(len(data)): if type(data[i]) is str: data[i] = data[i].strip("\0") |