lmz7573 2023-03-04 22:44 采纳率: 12.5%
浏览 85
已结题

matlab脚本编程

matlab脚本
复制上级目录中的文件model\ABC_ert_rtw\ABC.a2l到当前文件夹model
复制上级目录中的文件Debug\CBA.elf到当前文件夹model
rtw.asap2SetAddress('ABC.a2l','CBA.elf')
删除文件ABC.a2l的前220行
替换文件ABC.a2l中的0xD001为0xA004
复制当前文件夹中的文件ABC_fileheader.a2l并重命名为ABC20230304222105.a2l(文件命名为日期时间戳到秒)
将文件ABC.a2l中的内容添加到文件ABC20230304222105.a2l中

目前以上答案还不能解决:如何用matlab脚本把下面的文件前21行删掉
示例文件如下:

/******************************************************************************
 *
 *  ASAP2 file:     ABC.a2l
 *
 * Code generation for model "C".
 *
 * (add additional file header information here)
 *
 ******************************************************************************/
 
ASAP2_VERSION  1 31   /* Version 1.31 */
    
    /begin MOD_COMMON  "Mod Common Comment Here" 
    /end MOD_COMMON
    
    /begin RECORD_LAYOUT Scalar_BOOLEAN
      FNC_VALUES  1 UBYTE COLUMN_DIR DIRECT
    /end   RECORD_LAYOUT
    
  
    
    /begin CHARACTERISTIC      
      /* Name                   */      krsh
      /* Long Identifier        */      ""
      /* Characteristic Type    */      CURVE
      /* ECU Address            */      0xD0010150
      /* Record Layout          */      Lookup1D_UWORD
      /* Maxdiff                */      0
      /* Conversion Method      */      CCM_uint16
      /* Lower Limit            */      0.0
      /* Upper Limit            */      4096.0
      /begin AXIS_DESCR                 
        /* Description of X-Axis Points */
        /* Axis Type            */      COM_AXIS
        /* Reference to Input   */      NO_INPUT_QUANTITY
        /* Conversion Method    */      Cnt16
        /* Number of Axis Pts   */      6
        /* Lower Limit          */      0.0
        /* Upper Limit          */      4096.0
        AXIS_PTS_REF                    ktaint_adc_Acccorr_axis
      /end AXIS_DESCR
    /end CHARACTERISTIC
 
 


  • 写回答

8条回答 默认 最新

  • CodeBytes 2023-03-04 23:00
    关注

    该回答引用ChatGPT

    以下是可能实现你想要的 MATLAB 脚本的代码:

    
    % 复制 ABC.a2l 和 CBA.elf 文件到当前文件夹
    copyfile('../model/ABC_ert_rtw/ABC.a2l', './model/');
    copyfile('../Debug/CBA.elf', './model/');
    
    % 设置 ASAP2 文件地址
    rtw.asap2SetAddress('ABC.a2l', 'CBA.elf');
    
    % 删除文件 ABC.a2l 的前 220 行
    fid = fopen('./model/ABC.a2l', 'r');
    data = fread(fid);
    fclose(fid);
    data = char(data');
    data = strsplit(data, '\n');
    data(1:220) = [];
    data = strjoin(data, '\n');
    fid = fopen('./model/ABC.a2l', 'w');
    fwrite(fid, data);
    fclose(fid);
    
    % 替换 ABC.a2l 文件中的 0xD001 为 0xA004
    fid = fopen('./model/ABC.a2l', 'r');
    data = fread(fid);
    fclose(fid);
    data(data == hex2dec('D0') & circshift(data, -1) == hex2dec('01')) = hex2dec('A0');
    data(data == hex2dec('01') & circshift(data, 1) == hex2dec('D0')) = hex2dec('04');
    fid = fopen('./model/ABC.a2l', 'w');
    fwrite(fid, data);
    fclose(fid);
    
    % 复制 ABC_fileheader.a2l 文件并重命名为 ABC20230304222105.a2l
    timestamp = datestr(now, 'yyyymmddHHMMSS');
    copyfile('./model/ABC_fileheader.a2l', ['./model/ABC', timestamp, '.a2l']);
    
    % 将 ABC.a2l 文件中的内容添加到 ABC20230304222105.a2l 中
    fid1 = fopen('./model/ABC.a2l', 'r');
    data1 = fread(fid1);
    fclose(fid1);
    fid2 = fopen(['./model/ABC', timestamp, '.a2l'], 'a');
    fwrite(fid2, data1);
    fclose(fid2);
    
    

    请注意,这个脚本是根据你提供的要求编写的,但我无法确定你提供的文件和文件夹路径是否正确,也无法保证这个脚本会在所有情况下运行成功。因此,如果你遇到任何问题,请仔细检查文件和文件夹路径是否正确,并查看 MATLAB 返回的任何错误消息。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月5日
  • 修改了问题 3月5日
  • 创建了问题 3月4日

悬赏问题

  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)