设置Capl函数sysExecCmd的相对路径

时间:2016-08-31 08:34:50

标签: capl

我有以下代码行。我想设置相对路径而不是硬编码路径,如下面第二个参数中设置的那样 -

.YelloBox {
    width: 515px;
    height: 602px;
    opacity: 0.3;
    background-color: #ffffff;
    background-color: var(--white);
    border: solid 1px #a28c77;
    border: solid 1px var(--reddish-grey);
    text-align: center;
    margin: 0 auto;
    display: table;
}

应替换为:

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

如何在Capl的sysExecCmd函数中执行此操作?

2 个答案:

答案 0 :(得分:2)

我通常按以下方式执行:

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");
}

答案 1 :(得分:1)

sysExecCmd文档(强调我的):

  

要避免CAPL代码中的绝对路径并独立于执行平台,请按以下步骤操作:

     

将要启动的应用程序添加到“CANoe选项”对话框中的“用户文件”。   在应用程序调用时,可以使用CAPL函数GetUserFilePath来解析绝对路径。

示例:

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