2017-07-11 5 views
0

Je suis un débutant dans le script CAPL. J'écris un script pour envoyer un message de 8 octets avec un identifiant de trame (PID). Quand je lance le script en canoë, l'ECU ne donne pas de réponse. Tout dans la configuration et la base de données est correct. Il y a un problème dans le script. Voici le script.Comment créer un message LIN et l'envoyer dans 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); 
} 

Aidez-moi s'il vous plaît.

Répondre

0

Pour envoyer un message LIN, deux appels de sortie() sont requis: 1 st avec .rtr = 0 et la seconde avec .rtr = 1. Le premier planifie les données de message pour la transmission. le second déclenche la transmission. Si au lieu de la seconde sortie(), un maître externe envoie un en-tête de message sur le bus LIN et que l'ID d'en-tête correspond à l'ID du message planifié, l'outil transmet le message (en tant qu'esclave). Pour recevoir un message de l'esclave, seule la seconde sortie() est requise. Cela rendra l'outil pour transmettre l'en-tête du message sur le bus LIN. Tout esclave ayant un message correspondant prêt (même ID) transmettra les données du message.