DBC系列之如何使用python脚本实现excel |
您所在的位置:网站首页 › python自动生成excel文件 › DBC系列之如何使用python脚本实现excel |
使用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 decimalxlrd模块用于读取表格,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 |