DBC系列之如何使用python脚本实现excel

您所在的位置:网站首页 python自动生成excel文件 DBC系列之如何使用python脚本实现excel

DBC系列之如何使用python脚本实现excel

#DBC系列之如何使用python脚本实现excel| 来源: 网络整理| 查看: 265

使用python脚本实现excel-dbc 摘要1. 代码实现1.1 读取CAN通信矩阵1.1.1 导入模块1.1.2 读取文件,创建对象实例 1.2 添加全局属性1.2.1 总线类型1.2.2 报文发送类型属性以及默认值1.2.3 报文发送周期属性 1.3 处理信号属性1.3.1 读取对应工作簿1.3.2 创建新的frame1.3.3 封装函数1.3.4 遍历表格处理信号属性 1.4 数据导出生成文件 2. 运行代码测试脚本

摘要

基于上一部分《DBC系列之如何使用python脚本实现excel-dbc(3)[上]》,本文继续记录如何用python实现根据excel的CAN通信矩阵生成DBC文件。

1. 代码实现

开始前还是先准备通信矩阵文件 在这里插入图片描述 我的矩阵文件命名为demo_can_matrix.xlsx, 工作簿名为can_matrix。 然后同级目录下建立一个python文件,我命名为excel2dbc.py

1.1 读取CAN通信矩阵 1.1.1 导入模块 # 导入模块xlrd, canmatrx, demical import xlrd import canmatrix import decimal

xlrd模块用于读取表格,cammatrix用于按一定的格式打包数据,demical模块提供了十进制浮点运算支持

1.1.2 读取文件,创建对象实例 # 输入文件 input_file = "demo_can_matrix.xlsx" sheet_name = "can_matrix" # 使用xlrd库读取excel文件 excel_obj = xlrd.open_workbook(input_file) # 使用canmatrix库创建DBC实例 matrix_obj = canmatrix.CanMatrix()

excel文件名为demo_can_matrix.xlsx,矩阵所在的工作簿名字为can_matrix 先读取excel文件,创建一个对象。这个对象会包含表格中的工作簿 然后用canmatrix库创建一个matrix的对象,这个对象将对保存矩阵中的数据

1.2 添加全局属性 1.2.1 总线类型 # 总线类型 matrix_obj.add_global_defines("BusType", "STRING") matrix_obj.add_define_default("BusType", "CAN")

这个总线类型用于描述这个DBC文件是CAN,LIN,MOST, FlexRay或其他类型的database.

1.2.2 报文发送类型属性以及默认值 # 报文发送类型属性以及默认值 matrix_obj.add_frame_defines("GenMsgSendType", 'ENUM "Cyclic", "Event"' ) matrix_obj.add_define_default("GenMsgSendType", "Cyclic") 1.2.3 报文发送周期属性 matrix_obj.add_frame_defines("GenMsgCycleTime", 'INT 0 65535') matrix_obj.add_define_default("GenMsgCycleTime", "0") 1.3 处理信号属性 1.3.1 读取对应工作簿 # 获取对应canmatrix的工作簿,开始处理表格中的数据 sheet_obj = excel_obj.sheet_by_name(sheet_name) if sheet_obj is None: raise "工作簿名错误,请检查" 1.3.2 创建新的frame # 根据第1行有效信号描述,创建一个新的frame frame_obj = create_new_frame(sheet_obj, 2)

Tips: 表格中的行和列都是从0开始的

1.3.3 封装函数 def create_new_frame(sheet_obj:xlrd.sheet.Sheet, row: int) -> canmatrix.Frame: if row


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3