import tkinter as tk
import filetype
import os.path
import matplotlib.pyplot as plt#导入绘图库
import numpy as np
from tkinter import filedialog #gui库
from sys import argv
DATA_ST =7#8;
CAN_ID_LINE=3#4# CANid 的列数
TIME_LINE = 2;
def t2ms(t):#当前绝对时间转化
#print(t)
h,m,s = t.strip().split(':')#第三列为时间#t.strip().split(":")
s,ms,mms=s.strip().split('.')
if len(ms)<6:
ms=ms+'0'*(6-len(ms))
str_time=str(int(h)*3600+int(m)*60+int(s))+'.'+ms
return str_time
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename(title='打开trc文件', filetypes=[('S2out', '*.xls'),\
('S2out', '*.txt'),('S2out', '*.csv'),('All Files', '*')])
flie_type = os.path.splitext(file_path)[1]
flie_name =os.path.basename(file_path)
print('flie_name=>',flie_name,'flie_type=>',flie_type)
flie_name1,flie_name2=flie_name.split('.')
file_path_dir = os.path.dirname(file_path)#获取原始数据地址
argc =flie_name1+'_ToASC.asc'
argc =file_path_dir+'/'+argc; #将数据保存在获取的文件夹地址内
script ,filename = argc,argv
fw = open(argc, 'w')
string='date Wed Dec 18 09:52:07 AM 2019\nbase hex timestamps absolute\n'
fw.write(string)
fr = open(argc, 'r')
Data_Name=[]
line_cnt=0;
line_all_data=[]
can_id=0;
with open(file_path) as src:#,encoding='utf-8'
x0 =x1 = x2 =x3=x4=x5=x6=x7=x8=x9=x10=x11=x12=line_cnt=0#计数变量 做x轴
lines = src.readlines()
for line_i in range(len(lines)): #按照行读取数据
line_all_data.append(lines[line_i].split(',')) #分裂数据','
line_cnt=line_cnt+1; #行计数器
if line_cnt>1:
#print(line_all_data)
can_id=line_all_data[line_i][CAN_ID_LINE].lower();
can_id=hex(int(can_id,16));
#print(can_id)
if can_id[0:2]=='0x':
can_id=can_id[2:]
can_id=can_id+'x'
can_time=t2ms(line_all_data[line_i][TIME_LINE]);#int(line_all_data[line_i][1])/1000
can_data=line_all_data[line_i][DATA_ST]#.split();
#can_data =str(can_data[0])+' '+str(can_data[1])+' '+str(can_data[2])+' '+str(can_data[3])+' '\
# +str(can_data[4])+' '+str(can_data[5])+' '+str(can_data[6])+' '+str(can_data[7])+'\n'
can_data_len='8';#str(len(line_all_data[line_i][DATA_ST].split()));
can_ch='1'
d='d'
Rx='Rx';
can_data_len=str(can_data_len)
row_data=can_time+' '+can_ch+' '+can_id+' '+Rx+' '+d+' '+can_data_len+' '+can_data;
row_data = row_data+'\n';
fw.write(row_data)
if line_cnt<10:
print(row_data)
print('数据行数',line_cnt)
end='End Triggerblock'
fw.write(end)
print('success')
fw.close()
fr.close()
carsystem-asc-save.rar
需积分: 0 179 浏览量
更新于2021-09-17
收藏 73KB RAR 举报
标题 "carsystem-asc-save.rar" 提供了一个关于CAN数据转换的项目,它涉及将Cantest 2.70软件保存的CSV数据转换为ASC格式,以便于CANOE进行识别和解析。这个过程通常在汽车行业的数据分析和测试中非常重要,因为CAN(Controller Area Network)总线是车辆内部通信的主要标准。
描述中提到的是一个Python脚本(cantest_asc_save.py),它实现了这个转换功能。Python是一种强大的编程语言,特别适合于处理数据,它的库如pandas和numpy使得数据读取、清洗、转换和分析变得简单。在这个项目中,开发者可能使用了pandas来读取CSV文件,对数据进行预处理,然后按照CANOE能够理解的ASC格式重新写入。
ASC文件是CANoe软件用来存储和分析CAN总线数据的标准格式。这种文件包含了时间戳、帧ID、数据字段等关键信息,便于进行网络诊断和性能评估。转换过程中,Python脚本可能涉及到的关键步骤包括:
1. **读取CSV文件**:使用pandas的`read_csv()`函数读取Cantest 2.70导出的数据。
2. **数据预处理**:可能需要处理缺失值、异常值,或者根据CAN协议的要求进行数据转换。
3. **解析CAN帧**:识别并提取CSV文件中的CAN帧信息,如帧ID、数据长度和数据字段。
4. **创建ASC格式**:构建ASC文件的结构,包括时间戳、帧ID和数据字段,遵循CANOE的ASC文件规范。
5. **写入ASC文件**:使用Python的文件操作函数,如`open()`和`write()`,将处理后的数据写入新的ASC文件。
6. **可扩展性**:脚本可能设计成可配置或动态的,允许用户输入不同的CAN数据格式,只需稍加修改即可处理其他来源的CAN数据。
标签 "python asc" 表示这个项目的核心技术是Python编程和ASC文件的生成。这表明开发者需要熟悉Python编程,了解如何处理CSV数据,以及对CANOE软件和CAN总线协议有一定的理解。
这个项目涵盖了以下几个核心知识点:
1. **Python编程**:使用Python进行数据处理和文件操作,特别是利用pandas库处理CSV数据。
2. **CAN总线协议**:理解CAN总线的基本概念和数据帧结构。
3. **ASC文件格式**:了解CANOE软件对ASC文件的具体要求,包括其结构和内容。
4. **数据转换**:如何从一种格式(CSV)转换到另一种格式(ASC),涉及数据解析和重构。
5. **文件I/O操作**:在Python中读写文件,创建新的ASC文件。
6. **数据预处理**:可能包含数据清洗、异常值处理等数据质量控制步骤。
对于想要学习或从事汽车电子、嵌入式系统或CAN总线测试的人来说,理解和掌握这些知识点是非常有价值的。通过这个项目,他们不仅可以提升Python编程技能,还能深入了解CAN总线数据处理和测试流程。

weixin_43754230
- 粉丝: 2
最新资源
- 基于PLC技术龙门式精密油压机电气设计方案探讨.doc
- (源码)基于Win32 API的试制小游戏.zip
- 互联网+背景下高中学生历史学科核心素养的培养初探.docx
- 网络存储产品在NVR系统中的应用-公共场所其他.docx
- 计算机维修电脑部件组成实训报告.doc
- (源码)基于KiCad和ESP32S3的心电图模拟数字转换系统.zip
- 使用纯 Python 编写机器学习算法的实现指南与示例
- 信息化校园建设.ppt
- 四层电梯的PLC控制.doc
- (源码)基于Pygame的推箱子游戏(Sokoban).zip
- 《flash8动画设计实例教程》第五章.ppt
- 软件开发项目初步验收专业技术方案.doc
- 工程项目管理2011年7月自考复习资料.doc
- (源码)基于lnArduino框架的红点焊接机控制板.zip
- XX年国家网络安全宣传周活动实施方案.docx
- (源码)基于Python和TensorFlow的以图搜图系统.zip