目前,我正在自动化用于测试仪器群中仪表的测试用例。我遇到过通过DID将单位从公制更改为美国。任何人都可以帮助我使用CAPL脚本发送诊断相关的东西。
答案 0 :(得分:1)
尝试使用SendDiagRequest(reqobj)
;
=============================================== ================
答案 1 :(得分:1)
如果你有一个诊断库加载到CANoe(CDD / ODX / PDX等),它通常会定义传输协议,它将你的Tx和Rx分段超过8个字节。
您的帖子说您正在自动化您的测试用例。这在CANoe的测试模块中做得最好。如果已加载CDD,则可以将DID从CAPL浏览器符号窗格(通过诊断过滤)拖动到CAPL中,例如,拖动" DID_01_ReadInfo"在diagRequest之后。
long size;
byte returnBytes[4096];
diagRequest DID_01_ReadInfo readInfoReq; // diag request object
diagResponse DID_01_ReadInfo readInfoResp; // diag reponse object
diagSendRequest(readInfoReq);
switch (testWaitForDiagResponse(readInfoReq, 2000)) // 2 sec timeout
{
case 0: // timeout
teststepfail("No reply from ECU");
break;
case 1: // response received
if (diaggetLastResponseCode(readInfoReq) == -1)
{
teststepPass("Positive Response");
// Get the number of bytes from the last response and store in 'returnBytes'
diagGetLastResponse(readInfoReq, readInfoResp);
size = diagGetPrimitiveData(readInfoResp, returnBytes, elCount(returnBytes));
}
else
{
teststepfail("Negative Response");
}
break;
}
答案 2 :(得分:0)
长DiagSendRequest(diagRequest obj)
答案 3 :(得分:0)
类似的事情可以做到:
fControlMessage(message 0x496 mystream)
{
if (0x10 == mystream.byte(0) && Abfrage == 1) //First Frame von ISO_Lenkhilfe_Resp, erstes Byte auf 0x10 überprüfen
{
msDiag_FlowControl.byte(0) = 0x30; // Flow Control
msDiag_FlowControl.byte(1) = 0x0F; // Block Size ist 15
msDiag_FlowControl.byte(2) = 0x00; // 20ms Abstand bei aufeinanderfolgenden Frame
RequestLenght = mystream.byte(1); // Gibt die Länge(Anzahl) der Datenbytes an
RequestLenght = RequestLenght - 6; // 6 Byte Nutzdaten abziehen
Abfrage = 0;
//write("Send first Flow Control");
output(msDiag_FlowControl);
}