主要内容

canMessageImport

从第三方日志文件导入 CAN 报文

说明

message = canMessageImport(file,vendor) 从第三方供应商 vendor 提供的日志文件 file 导入 CAN 报文。日志文件中的所有报文导入为一个 CAN 报文对象数组,或一个每个元素对应一个通道的元胞数组。

导入后,您可以分析、传输或回放这些报文。

canMessageImport 假定导入的日志文件中的信息采用十六进制格式,并且导入的日志文件中的时间戳是绝对值。

示例

message = canMessageImport(file,vendor,candb) 将指定数据库中的信息应用于导入的 CAN 日志报文。

要导入具有符号报文名称的 Vector 日志文件,请指定对应的数据库文件。

示例

message = canMessageImport(___,'OutputFormat','timetable') 返回报文的时间表。这是推荐的输出格式,用于在 MATLAB® 内实现 CAN 报文的最佳性能和表示。默认为返回一个 CAN 报文数组。

message = canMessageImport(___,'ChannelID',chanID) 仅返回指定通道 chanID 的数据。默认返回所有通道。

示例

示例

全部折叠

从日志文件导入原始报文。

message = canMessageImport('MsgLog.asc','Vector','OutputFormat','timetable');

使用物理报文的数据库信息从日志文件导入报文。

candb = canDatabase('myDatabase.dbc');
message = canMessageImport('MsgLog.txt','Kvaser',candb,'OutputFormat','timetable');

从包含三个通道数据的日志文件中,查看通道 2 的数据。

将所有通道读入一个时间表元胞数组中。

d = canMessageImport("ASC_3CH.asc", "Vector", OutputFormat="timetable")
d =

  3×1 cell array

    {2×12 timetable}
    {3×8  timetable}
    {1×8  timetable}

对特定通道的元胞数组进行索引

channel2Data = d{2};

或者,在导入时指定通道。

channel2Data = canMessageImport("ASC_3CH.asc", "Vector", OutputFormat="timetable", ChannelID=2);

输入参数

全部折叠

CAN 报文日志文件的名称,指定为字符向量或字符串。

示例: 'MsgLog.asc'

数据类型: char | string

供应商的名称,指定为字符向量或字符串,将导入来自此供应商的 CAN 报文日志文件。

您只能以特定文件格式导入报文日志:来自 Vector 的必须是 ASCII 文件,来自 Kvaser 的必须是文本文件。

示例: 'Vector'

数据类型: char | string

CAN 数据库,指定为数据库对象。此数据库的信息将应用于导入的日志文件报文。

示例: candb = canDatabase('CANdb.dbc')

通道 ID,指定为数值标量值,指示从日志文件导入哪个通道的数据。如果未指定,将读取所有通道。当仅导入一个通道时,函数根据 OutputFormat 参量返回一个 CAN 报文数组或一个时间表。当导入多个通道时,函数返回一个报文元胞数组或多个时间表,其中每个通道对应一个元素。

示例: 2

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

输出参量

全部折叠

导入的报文,以 CAN 报文对象数组或由 ChannelID 参量指定的单个通道的报文时间表形式返回。当导入多个通道时,函数返回一个报文元胞数组或多个时间表,其中每个通道对应一个元素。

版本历史记录

在 R2010b 中推出

全部展开

另请参阅

函数