0

我需要从 CAN 消息中解析和解码数据字段。

我发送了传输的请求,我取回了数据字段:

02 01 20 00 00 00 00 00

现在我必须在 SWITCH 中对其进行解码,第一个字节是长度(02),但我如何将整个数据字段拆分为单独的字节,然后将它们 1 逐 1 解码?

4

1 回答 1

0

我不知道 SWITCH 协议,但我可以帮助您逐字节访问您感兴趣的消息的有效负载。假设您的消息 ID 是 0x100(或者您通过数据库 dbc 获得它的名称,您调用定义信息)。

如果您在测试环境中工作(测试节点,如 CAPL/XML 测试节点),您可以定义一个测试用例/函数,并在其中按以下顺序:

message 0x100 MessageContainer;

然后您在您希望有效负载符合您的喜好的位置等待您的消息:

... . . .

testwaitformessage(0x100,cycletimeofMessage);  /*Cycletime the message has, or maximum time you expect your message to arrive*/
testGetWaitEventMsgData(MessageContainer); /*the message object MessageContainer will be filled with the content of the message catched early in testwaitformessage()*/

write("%X",MessageContainer.byte(0)); /*you access the bytes through the .byte selector field of the message object and do whatever you wish with it.*/

如果要在 Simulation Node 中进行解码,则只能通过事件进行,而且要简单得多:

on message 0x100
{
write("The first byte of the captured message 0x100 is 0x%X",this.byte(0));
}

当然,这个事件过程也在测试环境中工作。

于 2018-11-23T08:23:47.610 回答