码农知识堂 - 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
  • 相关阅读:
    智慧城市可视化管理系统解决方案
    解决vue ui无法远程访问的问题
    ATL新能源科技薪资待遇及Verify测评语言理解数字推理题型简介
    2022年全球市场弦乐器的弦总体规模、主要生产商、主要地区、产品和应用细分研究报告
    前端面试宝典React篇18 谈谈 React Hook 的设计模式
    什么是 DNS 泛洪攻击(DNS 泛洪)
    Dialog的IDE搭建systermView的方法步骤(DA1469X)
    Windows OpenGL 图像伽马线
    Baumer工业相机堡盟工业相机如何使用BGAPISDK生成视频(C++)
    Unity游戏开发基础之数据结构部分
  • 原文地址:https://blog.csdn.net/qq_34414530/article/details/126608918
  • 最新文章
  • 【FHE】我们如何实现同态加密推理(八):SiLU 的密文化——两条路径,和一个 8 字节的开关
    SQLcl 中 c/old/new 替换变量为何失效?先定位再替换
    不让模型写作文,直接从它脑子里读答案:Jev 决策在 .NET 的两条路线
    Halo插件:支持GitHub的图床附件策略
    电视投屏界的“一股清流”!SimpleTVCast 6.0.0-beta 抢先体验:无需TV端App,界面大换血!✨
    华三VXLAN集中式网关实战指南:Spine多活网关 + 双活接入(M-LAG)
    软件更好写之后口碑会更重要
    大 O、大 Omega、大 Theta 的区别,O(n) 复杂度是什么意思
    Java标签跳转:一个鲜为人知但却很实用的小技巧
    多智能体系统论文速读
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号