Main Content

receive

从 CAN 总线接收报文

说明

示例

message = receive(canch,numMsgs,OutputFormat="timetable") 返回在 CAN 通道 canch 上接收的 CAN 报文的时间表。返回的报文数小于或等于 numMsgs。如果可用的报文少于 numMsgs 指定的报文,则该函数将返回当前可用的报文。如果没有可用报文,则该函数返回空数组。如果 numMsgsInf,则该函数返回所有可用报文。传入的可用报文保留在 FIFO 缓冲区中,因此 receive 先返回最早的可用报文。

要了解报文包含的元素,请参考 canMessage

OutputFormat 选项值 "timetable" 指定结果以报文时间表形式返回,而不是以报文对象形式返回。若要在 MATLAB® 中以最佳方式表示和处理 CAN 报文,建议使用此输出格式。

如果通道 ProtocolMode'CAN',则 message = receive(canch,numMsgs) 返回 CAN 报文对象数组而不是时间表。如果通道 ProtocolMode'CAN FD'receive 函数始终返回时间表。

示例

全部折叠

您可以以时间表或报文对象数组形式接收 CAN 报文。

以时间表形式接收所有可用报文。

canch = canChannel("Vector", "CANCaseXL 1", 1);
start(canch)
message = receive(canch,Inf,OutputFormat,"timetable");

以报文对象数组形式接收最多五条报文。

message = receive(canch,5);

输入参数

全部折叠

CAN 通道,指定为 CAN 通道对象。这是您访问 CAN 总线所用的通道。

示例: canChannel

要接收的最大报文数,指定为正数值或 Inf

示例: Inf

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

输出参数

全部折叠

来自通道的 CAN 报文,以下表所示的类型返回:

协议模式返回类型
ProtocolMode = 'CAN FD'
  • 报文时间表(始终)

ProtocolMode = 'CAN'
  • 报文对象(默认值)

  • 报文时间表(当 OutputFormat="timetable" 时)

对于 CAN 或 CAN FD 报文,返回的时间表变量是不同的,具体取决于协议规范。

版本历史记录

在 R2009a 中推出

另请参阅

函数