最近研究Simulink生成代码,使用XCP进行测量和标定,需要处理模型代码产生的一堆.a2l文件。本来想找现成的,奈何要么不好用,要么收费,本着能省一点是一点的原则,只能手搓了。上位机原本想用MFC/C#,回想自己老大不小的年纪,算了,还是Python吧。这里记录下大体思路,供有同样需求的伙计参考。
基本流程如下:
Python代码如下:
1.获取Asw文件夹下所有的a2l文件,并拷贝到中间文件夹备用。获取编译器产生的elf文件。
2.关键部分,查找每个a2l文件中的测量和标定部分,并汇总到一个文件中。
3.将上一步产生的有用信息文本,插入模板a2l对应位置。
4. 调用Matlab函数,通过添加来自.elf文件的地址字段来更新模板a2l文件。
rtw.asap2SetAddress('model.a2l','model.elf')
5.由于存在大量print调试语句,debug时处理时间很长,几十个文件大概5分钟。好在打包成exe后,只需要1分钟左右,还可以接受。Python直接调用Matlab函数,暂时没找到办法,用批处理从中过渡了一下,代码略显ugly but useful。如果使用m语言,可能速度更快,可以生成代码的同时,调用命令行编译,自动生成a2l,这个就留待以后研究吧。
后记:需要记住这段时间,因此发这一篇提醒一下自己。