基于Python Script,RTE自动配置简单示例

部署运行你感兴趣的模型镜像

上一篇文章讲述了基于达芬奇工具,实现对AUTOSAR,RTE接口的手动配置。针对于一个RTE接口,手动配置起来还是可以接受的。但面对客户的几百个,几千个RTE接口的需求,手动配置就显得微不足道了,费时伤神。

说句实话,可以把你累到吐血,从技术角度来说,完全是体力活,做起来又毫无意义。这种手动配置、单一的体力工作,归根结底还是要交给工具自动来实现。

今天,我们通过编写python脚本,实现对RTE接口的自动配置。自动配置的实现方法为:利用python工具,调用相关的库,生成可编辑的ARXML文件。然后,再将生成的ARXML文件导入达芬奇工具中,实现最终的RTE接口关联,解放双手,事半功倍,可以大大提高工作效率,可以说是一键式服务。也可以基于这种思路实现创新,书写更过的工具脚本。

下面我们详细的介绍一下工具脚本的编写和代码的实现。具体步骤如下:工具主要使用python自带的两个库,分别为:分析提取excel文件的xlrd库,以及xml库。下面操excel图片为例。

首先需要导入xlrd库,利用xlrd.open_workbook()指令打开根目录的excel文件,然后通过相关指令操作excel的行列数据。然后,根据AUTOSAR的结构,构建生成的ARXML中的表征数据。具体代码实现如下所示:

运行代码,就会生成所需要ARXML文件,生成的实际内容如下图所示:

可能你生成的ARXML文件中内容格式都在一行,为了美观和方便阅读,那需要怎样操作呢?需要通过代码实现换行,换行代码具体怎么书写,我们下一次再分享。

感兴趣的小伙伴可以把上述代码再自己的电脑敲一下,尝试一下能否生成自己想要的ARXML文件,完成RTE接口的自动配置。这个例子很简单,大家感兴趣的话,可以自行学习Python,实现更复杂的功能。

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

import re import pandas as pd import os from pathlib import Path def extract_rte_write_functions(file_path): """ 从C文件中提取所有Rte_Write函数名称 参数: file_path (str): C文件路径 返回: list: 提取的函数名称列表 """ pattern = r'Rte_Write_\w+' # 匹配Rte_Write_后跟函数名的模式 functions = set() # 使用集合自动去重 try: # 显式指定UTF-8编码,避免编码错误 with open(file_path, 'r', encoding='utf-8', errors='ignore') as f: for line in f: # 检查是否包含Rte_Write调用 if "Rte_Write" in line: # 查找所有匹配的函数名 matches = re.findall(pattern, line) for match in matches: # 移除可能的分号或空格 functions.add(match.strip(' ;')) except Exception as e: print(f"文件读取错误: {str(e)}") return [] return sorted(functions) # 返回排序后的列表 def save_to_excel(data, output_file): """ 将数据保存到Excel文件 参数: data (list): 要保存的数据列表 output_file (str): 输出文件路径 """ if not data: print("未找到有效数据,跳过Excel生成") return try: df = pd.DataFrame(data, columns=['Rte_Write Function']) df.to_excel(output_file, index=False) print(f"✓ 成功导出到Excel: {output_file}") print(f"共找到 {len(data)} 个唯一函数调用") except Exception as e: print(f"Excel导出失败: {str(e)}") def get_valid_file_path(default_file): """ 获取有效的文件路径,支持多种输入方式 参数: default_file (str): 默认文件名 返回: str: 有效的文件绝对路径 """ # 尝试方案1:脚本所在目录查找 script_dir = os.path.dirname(os.path.abspath(__file__)) script_path = os.path.join(script_dir, default_file) if Path(script_path).is_file(): print(f"自动使用脚本所在目录文件: {script_path}") return script_path # 尝试方案2:当前工作目录查找 cwd = os.getcwd() cwd_path = os.path.join(cwd, default_file) if Path(cwd_path).is_file(): print(f"自动使用当前工作目录文件: {cwd_path}") return cwd_path # 尝试方案3:用户手动输入 print("\n" + "="*50) print(f"文件未自动定位,请手动输入 {default_file} 的完整路径") print("提示:可将文件拖拽到终端窗口获取完整路径") print("="*50 + "\n") while True: user_path = input("请输入完整文件路径: ").strip() # 移除路径两端的引号(拖拽文件有时会带引号) user_path = user_path.strip('"').strip() if Path(user_path).is_file(): return user_path print(f"❌ 文件不存在: {user_path},请重新输入") if __name__ == "__main__": # 配置输入输出文件名 input_filename = "MID_E2E.c" output_filename = "rte_write_functions.xlsx" # 智能定位文件路径 input_file = get_valid_file_path(input_filename) # 确保输出文件在可写目录 script_dir = os.path.dirname(os.path.abspath(__file__)) output_file = os.path.join(script_dir, output_filename) # 提取函数名称并保存结果 functions = extract_rte_write_functions(input_file) save_to_excel(functions, output_file) # 显示额外信息 print("\nRTE函数提取完成!") print(f"输入文件: {input_file}") print(f"输出文件: {output_file}") if functions: print(f"前5个函数示例: {functions[:5]}") 这段代码我看着很乱能不能优化
09-19
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值