当前位置: 首页 > news >正文

LIN信号对比脚本

实现效果:可以将大量信号和多个ldf文件中的lin信号进行比对,并以表格输出帧标识符、信号所属ldf文件名称、对比成功的lin信号

需要你自己构建,我就不上传文件了

python环境:3.x

建立find.csv

用于存放需要对比的信号(想改名字的自己改代码,就不放图展示了)

注意:只能放在第一列,不要有标题什么的,就纯放需要对比的信号

构建compare_signals.py

# -*- coding: utf-8 -*-
import re
import csv
import os
import globdef parse_ldf_signals(ldf_content, ldf_filename):"""从LDF文件内容中解析出信号,并附带其帧ID和来源文件名。"""signal_details = {}frames_match = re.search(r'Frames\s*\{(.+)\}', ldf_content, re.DOTALL)if not frames_match:return signal_detailsframes_content = frames_match.group(1)frame_pattern = re.compile(r'(\w+)\s*:\s*(0x[0-9a-fA-F]+|\d+)\s*,\s*([\w_]+)\s*,\s*(\d+)\s*\{\s*([^}]*?)\s*\}', re.DOTALL)for match in frame_pattern.finditer(frames_content):frame_id = match.group(2)signals_block = match.group(5)if signals_block.strip():signal_pattern = re.compile(r'^\s*(\w+)\s*,', re.MULTILINE)for signal_match in signal_pattern.finditer(signals_block):signal_name = signal_match.group(1)signal_details[signal_name] = (frame_id, ldf_filename)return signal_detailsdef main():"""主函数,实现“包含”匹配,并将同一CSV信号的所有匹配项合并到一行内,并对各字段去重。"""print("--- LDF 与 CSV 信号比对脚本 (聚合输出模式) ---")# --- 解析所有LDF文件 ---ldf_files = glob.glob('*.ldf')if not ldf_files:print("\n错误: 在当前目录下未找到任何 .ldf 文件。")returnprint(f"\n在当前目录找到 {len(ldf_files)} 个LDF文件,开始解析...")master_signal_map = {}for ldf_file in ldf_files:try:with open(ldf_file, 'r', encoding='utf-8', errors='ignore') as f:ldf_content = f.read()signal_map = parse_ldf_signals(ldf_content, ldf_file)master_signal_map.update(signal_map)except Exception as e:print(f"    解析文件 {ldf_file} 时发生错误: {e}")if not master_signal_map:print("\n在所有LDF文件中均未解析到任何信号。")returnprint(f"所有LDF文件解析完成,共找到 {len(master_signal_map)} 个唯一信号。")# --- 处理CSV文件并生成合并后的四列格式输出 ---csv_filename = 'find.csv'if not os.path.exists(csv_filename):print(f"\n错误: CSV文件 '{csv_filename}' 不存在。")returnoutput_filename = f"matched_{os.path.splitext(csv_filename)[0]}.csv"try:with open(csv_filename, 'r', encoding='utf-8', errors='ignore') as infile, \open(output_filename, 'w', encoding='utf-8', newline='') as outfile:reader = csv.reader(infile)writer = csv.writer(outfile)# 写入固定的表头writer.writerow(["CSV_Query_Signal", "Frame_IDs", "Source_LDFs", "Matched_LDF_Signals"])print(f"\n正在处理CSV文件 '{csv_filename}' 并生成聚合结果...")processed_csv_rows = 0# 读取所有CSV信号到内存csv_signals = [row[0].strip() for row in reader if row]# 遍历CSV中的每一个查询信号for csv_signal in csv_signals:processed_csv_rows += 1# 使用集合(set)来自动处理去重found_frame_ids = set()found_source_ldfs = set()found_ldf_signals = set()# 遍历LDF信号数据库,收集所有匹配项for ldf_signal, (frame_id, source_ldf) in master_signal_map.items():if csv_signal in ldf_signal:found_frame_ids.add(frame_id)found_source_ldfs.add(os.path.basename(source_ldf))found_ldf_signals.add(ldf_signal)# 如果找到了匹配项,则合并结果并写入if found_ldf_signals:writer.writerow([csv_signal,"; ".join(sorted(list(found_frame_ids))),"; ".join(sorted(list(found_source_ldfs))),"; ".join(sorted(list(found_ldf_signals)))])else:# 如果未找到匹配项writer.writerow([csv_signal, "未找到", "N/A", "N/A"])print("\n--- 处理完成 ---")print(f"总共处理了 {processed_csv_rows} 个CSV查询信号。")print(f"结果已保存到文件: {output_filename}")except Exception as e:print(f"处理文件时发生错误: {e}")if __name__ == "__main__":main()

构建compare_signals.bat

@echo off
python compare_signals.py
pause

测试效果

将以上三个文件放在ldf文件所在文件夹下,双击bat运行

http://www.dtcms.com/a/407960.html

相关文章:

  • 渭南自建站网站建设wordpress架设服务器
  • Ansible Playbook 保姆级教程:从基础配置到 Roles 实战,运维自动化必看
  • c 网站开发简单实例设计企业vi
  • 宁夏网站建设哪里有个人品牌营销公司
  • 如何做国外的网站国外优秀门户网站
  • 个人网站 jsp 域名空间网站平台建设咨询合同
  • 栈的学习——逆波兰表达式(RPN)
  • SSM网上点餐系统g582p(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 专业app网站建设遵义企业网络推广方案
  • mysql——用户管理
  • 网博士自助建站系统进贤县住房和城乡建设局网站
  • C语言扫雷游戏
  • 做网站租空间wordpress怎样发布
  • 网站建设优選宙斯站长网站自动识别手机代码
  • 永磁同步电机无速度算法--恒is的调整方法实现IF与SMO间的平滑切换
  • 网站建设评分标准网页游戏新区开服
  • 网站的版面设计邯郸网站设计制作
  • 做个网站 多少钱网站html模板下载
  • 月票车超时配置功能
  • 网站软件下载安装网站建设项目采购公告
  • jsp购物网站开发微信小程序与wordpress
  • AlmaLinux release 9.6服务器离线安装nginx-1.24.0详细步骤
  • 淘宝获取商品详情数据API接口PC端和App端的实际操作指南
  • 在哪个公司建设网站好设计网站页面要注意什么
  • 移动固态硬盘连接手机无法读取是什么原因?
  • 做阿里巴巴1688网站程序cms网站开发实验报告
  • 做美图+网站有哪些公司网站怎么做
  • Ubuntu24搭建PHP访问SQL Server环境
  • 甘州区建设局网站做logo的网站
  • 网站名 注册钓鱼网站搭建教程