首页 > 编程语言 >CANoe 中控制外部程序的启动与停止

CANoe 中控制外部程序的启动与停止

时间:2024-10-11 18:53:31浏览次数:10  
标签:CANoe 外部 absPath 程序 write StartExe 256

在汽车电子测试和开发中,CANoe 是一个强大的工具,能够模拟和测试各种网络协议。为了增强其功能,开发者常常需要在 CANoe 中启动和停止外部程序。本文将介绍如何通过 CANoe 的系统变量和脚本功能实现这一目标,并结合批处理文件来管理外部程序的生命周期。

1. 背景

在某些测试场景中,可能需要启动外部应用程序(如测试工具、监控软件等)以便与 CANoe 进行交互。通过使用 CANoe 的脚本语言,我们可以根据特定条件(如系统变量的变化)来控制外部程序的启动和停止。

2. 代码实现

以下是实现启动和停止外部程序的代码示例:

on sysvar sysvar::IL_CAN1::EnableNode::StartExe
{
  if(@this == 1)
  {   
    StartExe();
  }
  else if(@this == 0)
  {   
    StopExe();
  }
} 

void StartExe()
{
  char absPath[256]; 
  GetUserFilePath("Net\\VectorCANorIneropExe.exe", absPath, 256);

  if(SysExec(absPath, "") == 1)
  {
    write("调用成功 %s", absPath);
  }
  else
  {     
     write("调用失败 %s", absPath);
  }
}

void StopExe()
{
    char absPath[256]; 
    GetUserFilePath("Net\\Kill.bat", absPath, 256);

    if(SysExec(absPath, "") == 1)
    {
      write("关闭成功 %s", absPath);
    }
    else
    {
      write("关闭失败 %s", absPath);
    }
}
3. 代码解析

  • 系统变量监控

  • on sysvar sysvar::IL_CAN1::EnableNode::StartExe
    {
      if(@this == 1)
      {   
        StartExe();
      }
      else if(@this == 0)
      {   
        StopExe();
      }
    }
    

  • 这段代码监控 sysvar::IL_CAN1::EnableNode::StartExe 系统变量的变化。当该变量的值为 1 时,调用 StartExe() 方法;当值为 0 时,调用 StopExe() 方法。

  • 启动程序

  • void StartExe()
    {
      char absPath[256]; 
      GetUserFilePath("Net\\VectorCANorIneropExe.exe", absPath, 256);
    
      if(SysExec(absPath, "") == 1)
      {
        write("调用成功 %s", absPath);
      }
      else
      {
        write("调用失败 %s", absPath);
      }
    }

  • StartExe 方法首先获取外部程序的绝对路径,然后使用 SysExec 函数启动该程序。如果启动成功,输出成功信息;否则,输出失败信息。

  • 停止程序

  • void StopExe()
    {
        char absPath[256]; 
        GetUserFilePath("Net\\Kill.bat", absPath, 256);
    
        if(SysExec(absPath, "") == 1)
        {
          write("关闭成功 %s", absPath);
        }
        else
        {
          write("关闭失败 %s", absPath);
        }
    }

  • StopExe 方法获取关闭程序的批处理文件路径,并执行该文件以停止外部程序。成功与否的反馈同样通过 write 函数输出。

  • 4. 批处理文件

    为了停止外部程序,我们可以使用一个批处理文件 Kill.bat,其内容如下:

  • bat
    @echo off
    taskkill /f /t /im VectorCANorIneropExe.exe

  • 命令解释
    • taskkill:用于终止一个或多个进程。
    • /f:强制终止进程。
    • /t:终止指定进程及其所有子进程。
    • /im:指定要终止的进程的映像名称(即进程名)。
  • 5. 使用场景
  • 测试自动化:在自动化测试中,可能需要在测试开始时启动某些监控工具,并在测试结束时关闭它们。
  • 实时数据处理:在进行实时数据处理时,可以根据系统状态动态启动或停止数据处理程序。
6. 总结

通过在 CANoe 中使用系统变量和脚本功能,我们可以灵活地控制外部程序的启动和停止。这种方法不仅提高了测试的自动化程度,还增强了测试环境的灵活性。开发者可以根据具体需求,扩展和修改这些方法,以适应不同的测试场景。通过结合批处理文件,我们能够有效地管理和控制外部程序的生命周期,确保测试过程的顺利进行。

标签:CANoe,外部,absPath,程序,write,StartExe,256
From: https://blog.csdn.net/caoxuefei520/article/details/142852518

相关文章

  • 鸿蒙初学002-应用程序包基础知识
    应用与应用程序包用户应用程序泛指运行在设备的操作系统之上,为用户提供特定服务的程序,简称“应用”。一个应用所对应的软件包文件,称为“应用程序包”。当前系统提供了应用程序包开发、安装、查询、更新、卸载的管理机制,便于开发者开发和管理应用。同时,系统还屏蔽了不同的芯片平......
  • C程序设计:计算分段函数
    有一个函数:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪......
  • java+vue计算机毕设工作计划统计分析系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今快节奏的商业环境中,企业的高效运作离不开精细化的管理与规划。随着企业规模的扩大,部门间协作的复杂性、员工工作计划的多样性以及项目进度的动......
  • java+vue计算机毕设工程认证辅助系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着全球工程教育的快速发展,工程认证已成为衡量高等教育质量与国际接轨的重要标尺。它不仅要求教育机构具备完善的教学体系,还强调对学生实践能力和创......
  • java+vue计算机毕设食品点评及售卖系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网的快速发展和人们生活节奏的加快,线上食品点评及售卖系统已成为现代都市生活不可或缺的一部分。近年来,食品安全问题频发,消费者对食品质量、......
  • uniapp、微信小程序、Vue中使用nzh库实现数字转中文大写
    一、nzh库简介nzh库是一款实用的数字转中文大写、中文读数工具,适用于JavaScript和Node.js环境。它可以帮助我们在项目中轻松实现数字与中文大写的相互转换,提高项目的可读性和易用性。二、在uniapp中使用nzh库1、安装nzh库在uniapp项目中,首先需要安装nzh库。打开项目根目录,......
  • 淘宝程序员没活硬整?在 Excel 和 VSCode 中购物!
    大家好,我是程序员鱼皮,最近某宝网站的改进,属实是有点“新”了。你敢相信这是一个购物网站么?你可以在Excel表格中挑选商品进行购物,还原度极高,这两个图表更是点睛之笔。哪个天才想出来的,把特么广告都整成了Excel图表。PS修图软件中也可以购物,不仔细看的话还真以为我在设计......
  • java计算机毕业设计分布式生鲜市场信息系统设计与实现(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着人们生活水平的提高和消费观念的转变,生鲜食品市场迎来了前所未有的发展机遇。然而,传统的生鲜销售模式面临着信息不对称、供应链冗长、损耗率高等......
  • 微信小程序登录授权获取基础信息
            最近在写小程序项目时遇到一些问题,小程序登录授权API接口调用会区分新旧版本库,旧版本在调取wx.getUserProfile接口时会直接从底部弹窗,从而允许或取消授权;而新版本库则需要自行设置弹窗,提醒用户授权使用。    测试新版本和旧版本究竟是哪个可以自动底......
  • 微信小程序的北京旅游古建筑文化景点打卡平台Thinkphp/Laravel
    目录技术栈和环境说明项目介绍具体实现截图文件解析微信开发者工具HBuilderX+uniapp开发技术简介性能/安全/负载方面数据访问方式PHP核心代码部分展示代码目录结构解析系统测试详细视频演示源码获取技术栈和环境说明Laravel以其优雅的语法和快速开发能力著称,简化了......