首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >读取.blf CAN文件的标头

读取.blf CAN文件的标头
EN

Stack Overflow用户
提问于 2019-05-24 21:04:57
回答 1查看 847关注 0票数 1

我有一个包含多个can总线消息的.blf文件,我可以像这样使用python-can读取这些消息

代码语言:javascript
运行
复制
import can
can_log = can.BLFReader("./test.blf")
for msg in can_log:
    print(msg)

根据python-can文档,标准.blf文件头有144个字节,包含整个记录本身的开始和结束时间戳。

我想直接读取这个开始和结束时间戳,这是可能的吗?

我知道我也可以使用msg.timestamp从第一条消息中读取时间戳,但它与我想要提取的开始时间戳略有不同。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-24 21:15:44

从python的source code可以:

代码语言:javascript
运行
复制
[...]
class BLFReader(object):
"""
Iterator of CAN messages from a Binary Logging File.

Only CAN messages and error frames are supported. Other object types are
silently ignored.
"""

def __init__(self, filename):
    self.fp = open(filename, "rb")
    data = self.fp.read(FILE_HEADER_STRUCT.size)
    header = FILE_HEADER_STRUCT.unpack(data)
    #print(header)
    assert header[0] == b"LOGG", "Unknown file format"
    self.file_size = header[10]
    self.uncompressed_size = header[11]
    self.object_count = header[12]
    self.start_timestamp = systemtime_to_timestamp(header[14:22])
    self.stop_timestamp = systemtime_to_timestamp(header[22:30])
[...]

您可以这样使用start_timestamp和stop_timestamp:

代码语言:javascript
运行
复制
can_log.start_timestamp
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56293298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档