애드센스와이드


CANoe의 Basic Diagnostics의 'Value ProtocolPriority'와 CAPL 연계 시 데이터 형식 유의 점 Vector(CANoe)

CAPL에서 CHAR[] 형식으로 만든 데이터를
diagSetParameter 함수를 이용해서 Basic Diagnostics의 Parameter와 연동시키려고 할 때
두 형식이 상이하면 데이터가 가져와 지지 않는데 문제는 이에 대한 경고나 에러가 없다보니
잘못된 부분이 어디있는지 디버깅이 어렵다.


벡터 제품의 한계점으로 보이긴 하는데 이런 부분도 향후 보완되면 좋겠다는 생각이 든다.













- 아래는 관련 CAPL 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    diagResponse this resp;
    byte buffer[17];
    long copiedBytes = 17;
    int result;
    int i;
    char vin[18];
    
    result = sysGetVariableData("Common""svVin", buffer, copiedBytes);
    buffer[0],buffer[1],buffer[2],buffer[3],buffer[4],buffer[5],buffer[6],buffer[7],buffer[8],buffer[9]
    ,buffer[10],buffer[11],buffer[12],buffer[13],buffer[14],buffer[15],buffer[16]);
    memcpy(vin, buffer, copiedBytes);
    
    if (@Engine::EcuType  == xxxx){
        if (@Engine::svVinRespCondition == RESP_OK){
            write("%f(s) svVinRespCondition = %d", time(), @Engine::svVinRespCondition);
            if (result == 0)
                diagSetParameter(resp, "VIN", vin);
        }
        else if (@Engine::svVinRespCondition == RESP_3F)
            diagSetParameter(resp, "VIN""?????????????????"); // 3F
        else if (@Engine::svVinRespCondition == RESP_00){
            diagSetParameter(resp, "VIN""");                  // 00
        }
        else if (@Engine::svVinRespCondition == RESP_20){
            diagSetParameter(resp, "VIN""                 "); // 20
        }
        else if (@Engine::svVinRespCondition == RESP_ALLSAME){
            diagSetParameter(resp, "VIN""AAAAAAAAAAAAAAAAA"); // 17BYTES ARE SAME
        }
        
        diagSendResponse(resp);
    }
cs



덧글

댓글 입력 영역


이 이글루를 링크한 사람 (블랙)

4