2017-07-11 8 views
0

Ich bin ein Anfänger in CAPL-Skript. Ich schreibe ein Skript, um eine 8-Byte-Nachricht mit einer Frame-ID (PID) zu senden. Wenn ich das Skript im Kanu ausführe, gibt ECU keine Antwort. Jedes Ding im Setup und in der Datenbank ist korrekt. Es gibt ein Problem im Skript. Unten ist das Skript.Wie erstelle ich eine LIN-Nachricht und sende sie in CAPL

/*@!Encoding:1252*/ 
variables 
{ 
    linmessage 0x11 Request; 
    linmessage 0x25 Response; 
    linmessage 0x01 Initiate_wake_up; 

    byte WakeUpFrame = 0x3E; 
    byte Request_Header = 0x11; 
    byte Response_Header = 0x25; 
} 



void Util_SendHeader(byte frameID) 
{ 
    Request.MsgChannel = 1; 
    Request.ID = frameID; 
    Request.RTR=1; 
    output(Request); 
} 



void Wake_Up_Frame() 
{ 
    Util_SendHeader (WakeUpFrame); 
    Request.byte(0)=0x00; 
    Request.byte(1)=0x00; 
    Request.byte(2)=0x00; 
    Request.byte(3)=0x00; 
    Request.byte(4)=0x00; 
    Request.byte(5)=0x00; 
    Request.byte(6)=0x00; 
    Request.byte(7)=0x00; 
    Request.rtr=0; 
    output(Request); 
} 

on key 'q' 
{ 
    Wake_Up_Frame(); 
    Request.byte(0) = 0x00; 
    Request.byte(1) = 0x0A; 
    Request.byte(2) = 0x00; 
    Request.byte(3) = 0x00; 
    Request.byte(4) = 0x00; 
    Request.byte(5) = 0x00; 
    Request.byte(6) = 0x00; 
    Request.byte(7) = 0x00; 
    Util_SendHeader (Request_Header); 
    Request.rtr=0; 
    output(Request); 
    Util_SendHeader (Response_Header); 
} 

Bitte helfen Sie mir.

Antwort

0

Zum Senden einer LIN-Nachricht sind zwei output() -Aufrufe erforderlich - 1. mit .trtr = 0 und 2. mit .trtr = 1. Der erste plant Nachrichtendaten für die Übertragung. der zweite löst die Übertragung aus. Wenn anstelle der zweiten Ausgabe() ein externer Master den Nachrichtenkopf auf dem LIN-Bus sendet und die Header-ID mit der ID der geplanten Nachricht übereinstimmt, überträgt das Tool die Nachricht (die als Slave fungiert). Um eine Nachricht vom Slave zu erhalten, ist nur der zweite Ausgang() erforderlich. Es wird das Werkzeug zur Übertragung der Nachrichtenkopfzeile auf dem LIN-Bus machen. Jeder Slave, der über eine passende Nachricht verfügt (gleiche ID), überträgt die Nachrichtendaten.

Verwandte Themen