Binary log file structure
The log file that Ping Viewer provides has a header description structure that allows program to identify different types of information, the header structure is defined as the following:
- Header (String)
- Log structure version (int32)
- Information about the program that have generated the log
- Ping Viewer commit hash (String)
- Ping Viewer build date (String)
- Ping Viewer release tag (String)
- Operating System name (String)
- Operating System version (String)
- Sensor information
- Sensor type (int32)
- Sensor model (int32)
Note: The binary file structure is done in big-endian.
Arrays (Strings) are defined with the following structure: - Array size (uint32) - Array data (byte_array)
The source code that defines this structure can be found in Ping Viewer source code LogSensorStruct file.
After the header block, the messages are organized in the following format: [Timestamp string][Byte array from the serial buffer]
Where the timestamp string follows the format:
Note that the byte array part may not contain a full valid message, it just contains the data available on the serial buffer during the sample time of the timestamp.
You can check this minimal Python example (needs Python 3.7+).
It's necessary to install
bluerobotics-pingpython package before running it.
It outputs the Header content, and after an user input, it decodes some specific messages from the file. E.g:
Header: String: PingViewer sensor log file Version: 1 PingViewerBuildInfo: hash: b0461486 date: 2020-01-03T14:31:14-03:00 tag: development os: name: Arch Linux version: unknown Sensor: Family: 1 Type: 2 Press Enter to continue and decode received messages...