gpt4 book ai didi

can-bus - 用于诊断服务的 CAPL 脚本

转载 作者:行者123 更新时间:2023-12-02 03:03:21 25 4
gpt4 key购买 nike

我正在编写 CAPL 脚本来自动化诊断服务。我读过一些大于 8 字节的 DID。直到 8 个字节,我才能在我的 CAPL 脚本中正确捕获数据,但是当数据大小超过 8 个字节时,我会得到一些垃圾值 00 作为剩余字节。

我可以在 CANoe Trace 中看到完整的读取数据,但我无法在我的 CAPL 脚本中捕获它。如果有人有任何想法或解决方案,请与我分享。

在 Belo 脚本中,问题是我可以正确捕获 this.byte(7) 之前的值。但是对于 this.byte(8) 和 this.byte(9) 我读到的是 00,尽管 CANoe Trace 中的实际值是 0x54 和 0x66。所以这意味着我不能从 CAN 中读取超过 8 个字节的 CAPL。

我的脚本如下:

variables
{
//Please insert your code below this comment
byte test_num;
message DTOOL_to_UPA msg_tester;
mstimer readTimerDID_2001;
mstimer defaultSession;
byte readBuf2001[8];
}

// read request
on key 'd'
{
test_num = 0;
msg_tester.dlc = 8;
msg_tester.dir = tx;
msg_tester.can = 1;
settimer(defaultSession, 2000);
}

on timer defaultSession // Request DID: 10 01
{
msg_tester.byte(0) = 0x02;
msg_tester.byte(1) = 0x10;
msg_tester.byte(2) = 0x01;
output(msg_tester);
settimer(readTimerDID_2001, 100);
canceltimer(defaultSession);
}

on timer readTimerDID_2001 // Read Request DID: 22 20 01
{
msg_tester.byte(0) = 0x03;
msg_tester.byte(1) = 0x22;
msg_tester.byte(2) = 0x20;
msg_tester.byte(3) = 0x01;

output(msg_tester);
canceltimer(readTimerDID_2001);
}

on message UPA_to_DTOOL
{
if (this.DIR == RX)
{
// Response Data for DID 2001
if (
(this.byte(0)== 0x04)&&(this.byte(1)== 0x62)&&(this.byte(2)==0x20)&&
(this.byte(3)== 0x01)&&(this.byte(4)== 0x23) &&(this.byte(5)== 0x00)&&
(this.byte(6)== 0x44)&&(this.byte(7)== 0x22) &&(this.byte(8)==0x54)&&
(this.byte(9)== 0x66)
)
{
readDID2001();
}
}
}

最佳答案

on message UPA_to_DTOOL 

正在对 CAN 报文 UPA_to_DTOOL 作出 react ,并且您只能访问 CAN 报文的 8 个字节。

如果你想对你应该使用的诊断消息使用react

on diagResponse <serviceName>

在此处理程序中,您可以访问诊断消息的完整数据

关于can-bus - 用于诊断服务的 CAPL 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44457783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com