我正在使用CANoe 10.0进行一些诊断测试,并且我必须为测试生成报告。因此,我使用测试设置来创建使用CAPL的测试用例。我知道测试是从函数"MainTest“开始的。在此之后,我不知道如何组织我的测试用例,以及使用哪些函数来获得报告中的正确格式。例如,我想发送一个诊断请求,并期望得到一个特定的响应。我希望能够在报告中显示消息的发送、收到的响应以及预期的响应。在此基础上,应该显示裁决。
发布于 2019-05-31 20:15:27
下面你可以找到简单的例子。在Vector.Before提供的CANoe 'Help‘和"Sample Configurations“中可以找到更多示例和其他用例请记住添加CDD文件,该文件将允许您将诊断服务导入到CANoe环境(我使用了示例矢量CDD)。
void MainTest() TestModuleTitle ("ECU DIAGNOSTICS TEST"); TestModuleDescription ("Basic Diagnostics Test"); TestGroupBegin("ECU Extended session", "ReadPartNubmers"); ExtendedDiagnosticSession_Start(); //testcase //testcase //... //testcase n TestGroupEnd(); TestGroupBegin("ECU Identification", "ReadPartNubmers"); ReadSerialPartNumber(); //testcase eg ReadSerialPartNumber()... //testcase //... //testcase TestGroupEnd(); testcase ReadSerialPartNumber() diagRequest ABS_ESP.Serial_Number_Read req; //Service from CDD TestCaseTitle("TEST 1 ReadPartNumber", "Read Serial Part Number"); diagSendRequest(req); if (TestWaitForDiagResponse(req, 2000)== 1) testReportWriteDiagResponse(req); if(DiagGetLastResponseCode(req) == -1) // Positive response byte DataBuffer[50]; diagGetRespParameterRaw(req,"SerialNumber",DataBuffer,20);// get data from response if(DataBuffer[0] == 0xAA)//dummy response verification TestStepPass("Serial Number is correct"); TestStepFail("Wrong Part number "); else if(DiagGetLastResponseCode(req) > 0)//Negative response TestStepFail("Negative response received"); TestStepFail("No answer from ECU!"); testcase ExtendedDiagnosticSession_Start() diagRequest ABS_ESP.ExtendedDiagnosticSession_Start req; //Service from CDD, TestCaseTitle("Test no 1", "Set Extended session"); diagSendRequest(req); if (TestWaitForDiagResponse(req, 2000)== 1) testReportWriteDiagResponse(req); if(DiagGetLastResponseCode(req) == -1) // Positive response TestStepPass("Positive"); else if(DiagGetLastResponseCode(req) > 0)//Negative response TestStepFail("ExtendedDiagnosticSession","Negative response received");