2016-08-31 2 views
2

J'ai la ligne de code suivante. Je veux mettre un chemin relatif au lieu de chemin hardcoded comme cela est actuellement mis en 2ème argument de dessous-Définition du chemin relatif pour la fonction Capl sysExecCmd

sysExecCmd("Unlock_Ecu.bat","","D:\\Program Files\\ToolPath"); 

doit être remplacé:

sysExecCmd("Unlock_Ecu.bat","","...\\ToolPath"); 

Comment puis-je le faire en fonction sysExecCmd de Capl?

+0

Merci @Blisskarthik pour les modifications. Toute suggestion pour ce problème aussi bien? – Tkumari

Répondre

2

je le fais habituellement comme indiqué ci-dessous:

variables 
{ 
    char absPath[256]; // Holds Abs Path for current CFG file 
    // Relative Path for ToolPath folder 
    char ToolPath[100]= "\\ToolPath\\"; 
} 

on preStart 
{ 
    /* Get Abs path of current config file */ 
    GetUserFilePath("", absPath, 256); 
    Exec_Batch(); 
} 

void Exec_Batch() 
{ 
    /* Get Absolute Path for executing Bat file */ 
    char absToolPath[256]; 
    strncat(absToolPath, absPath, strlen(absPath)); 
    strncat(absToolPath, ToolPath, strlen(absToolPath) + strlen(ToolPath)); 

    write("Executing Batch File"); 

    sysExecCmd("Unlock_Ecu.bat","",absToolPath); 

    write("Finished execution of Batch File"); 
} 
+0

Hey @Vaibhav, comment vas-tu? Merci de répondre – Tkumari

1

De la documentation sysExecCmd (Souligné par l'auteur):

Pour éviter les chemins absolus dans le code CAPL et être indépendant de la plate-forme d'exécution, procédez comme suit:

Ajouter l'application à démarrer dans la boîte de dialogue Fichiers utilisateur dans CANoe. Lors de l'appel de l'application, le chemin absolu peut être résolu avec la fonction CAPL GetUserFilePath.

Exemple:

char absPath[256]; 
GetUserFilePath("Unlock_Ecu.bat", absPath, 256); 
SysExecCmd(absPath, "");