码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • CAPL 无法处理 xlsx 表格,Python老大哥曲线助攻


    • 🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用
    • 🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】
    • 🍅 玩转CANoe,博客目录大全,点击跳转👉

    📘前言

    • 🍅 CAPL 可以读取csv表格,却不能直接读取xlsx文件,这是事实。Vector为什么要留这个遗憾呢?
      xlsx格式表格并不是普通的文本文件,底层比较复杂,咱也不懂,总之处理起来并不容易。 CAPL基于C语言,其实C/C++处理 xlsx表格都非常困难,而且第三方库也非常少,即使有依赖文件也比较多。所以我没选择封装动C++态库来实现功能,我选择了相对友好的Python 来实现

    • 🍅 核心思想就是通过Python 脚本来实现将xlsx转为csv格式;CAPL中通过sysExeC函数来调用Python脚本;最后,CAPL脚本处理csv格式表格

    • 根据上面的分析,你可能需要先熟悉下相关的知识点:

    • Python Excel xlsx,xls,csv 格式互转

    • CAPL 脚本下调用cmd 和其它应用程序

    • CAPL读写文本文件 txt,csv等

    • 🍅 演示软硬件环境 Windows11 x64 ; CANoe 11 SP2 x64,Python 3.8 x64
      请添加图片描述

    目录

    • 📘前言
    • 📙 全部代码
    • 🌎总结

    13855848697

    请添加图片描述


    📙 全部代码

    1️⃣ 首先我的D盘目录下 有一个xlsx 格式的测试文件,有一个python 打包之后的toCSV.exe程序

    • 这个toCSV.exe程序放在下方公众号的阿里网盘,有需自取 ,有经验的也可以直接使用Python源码,运行速率会快很多。

    在这里插入图片描述


    2️⃣ CAPL 源码

    • 下面代码是simulation 类型的CAPL,突出这点,是延时处理,只能用定时器来实现
    • 分成三部分:on key 'a' ,调用 toCSV.exe ,根据xlsx表格生成csv表格(复制,另存为,不破坏源xlsx文件);on timer sleep 调用ReadOutDataFromCsv()函数读取csv文件;ReadOutDataFromCsv函数是执行代码
    • 这里要强调下:capl 脚本并不会等待python脚本执行完毕,所以如果接下来要执行读取csv相关代码,要有一定的延时处理(大概3s左右,如果是调用Python脚本源码的会小很多,具体时间可以根据自己代码去调试。)
    variables
    {
      msTimer sleep;
      char InputFile[256] = "D:\\ToCSV\\TEST.xlsx";
      char OutFile[256] = "D:\\ToCSV\\TEST.csv";
    }
    on timer sleep
    {
       ReadOutDataFromCsv(OutFile);
    }
    
    on key 'a'
    {
      char parameter[256];
      char scriptPath[256]="D:\\ToCSV\\toCSV.exe";
      snprintf(parameter,elCount(parameter),"%s csv",InputFile);
      sysExeC(scriptPath,parameter);
      //capl 脚本并不会等待python脚本执行完毕,所以如果接下来要执行读取csv相关代码,要有一定的延时处理
      //test node 可以直接用testwaitfortimeout()函数
      setTimer(sleep,3000);
    }
    int ReadOutDataFromCsv(char FilePath[])
    { 
      char buffer_ascii[100];
      long retSize;
      int i,j,glbHandle;  
      
      glbHandle = OpenFileRead (FilePath,1);
      
      if (glbHandle!=0 )
      {          for(j=0;fileGetStringSZ(buffer_ascii,elcount(buffer_ascii),glbHandle)!=0 ;j++  )
        {      
          write ("lineNum:%d string*********%s.",j,buffer_ascii);     
        }
        fileClose (glbHandle);     
                 
      }  
      else
      {
        write("Read file :%s failed.",FilePath);
        return 0; //failed    
      }
      return 1; //passed
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    3️⃣ 运行完毕后, 文件目录下会生成一个csv文件 ,CAPL脚本输出csv文件的内容
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    🌎总结

    23

    • 🍅 有需要演示中所用demo工程的,可以关注下方公众号网盘自取啦,感谢阅读。

    7

    • 🚩要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!

    • 🚩如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。
      18
  • 相关阅读:
    3、Nginx 常用的命令和配置文件
    企业为什么要用ERP呢?上了ERP,企业又用不好的原因有哪些?
    Python实践:基于Matplotlib实现某产品全年销量数据可视化
    两个点的距离
    探索小程序的世界(专栏导读、基础理论)
    QoS流量整形
    护航数字政府建设,美创科技成为“数字政府建设赋能计划”成员单位
    Win11输入法的选字框不见了怎么办?
    arduino - 用 arduino zero 开发板来学习理解arduino软件编程细节
    ES6中let和const关键字与var关键字之间的区别?
  • 原文地址:https://blog.csdn.net/qq_34414530/article/details/126608918
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号