实用第一f智慧密集
■BBaSEIEieSI3l3BBI3SeSBI3BBEIISBBBI3BI9@SI3eSI3aiSieEISeBI3ei3iaEIBBeBI3BaEIEII3SS@ieEl®
基于Python的DBC文件生成表格软件的设计
樊志伟,张恩迪,黄文进,陈雨飞*
(南通理工学院机械工程学院,江苏南通226000)
摘要:通过分析DBC文件的组成、归纳报文、信号等的代码组成结构,基于Python编程语言,设计了软件功能和软件流程图,通过利用正则表达式获取DBC文件信息,写入Excel表格中,并设计了软件界面。最终实现DBC文件自动生成为Excel表格,提高了阅读和工作效率。
关键词:Python语言;正则表达式;自动生成
1课题背景
控制器局域网络(Controller Area Network,CAN),是ISO国际标准化的串行通信协议,因为具备高性能和可靠性,已被广泛运用在汽车、工业设备等通信方面2」。CAN通信为分布式控制系统实现各节点之间的实
时、可靠的数据通信提供了技术支持。邓召文等[3]基于Lab-View和CAN总线,完成了汽车数据采集系统的设计遥通过采集CAN信号,完成数据解析,从而监视汽车的实时状态,并记录错误信息,最终完成了车辆运行状态的实时监控功能。
德国维克多公司对DBC(Database Can)文件进行了定义并发布,DBC文件是对CAN网络里中各逻辑节点信息的描述,可以完整清晰地将CAN通信的信息进行定义,相当于作为通信协议的指导性文件,根据DBC 文件开发相关软件之间的联系,可以通过该文件监视与分析CAN网络中网络节点的运行状态,即各个信号的运行状态[4'5]0CAN通信常用于汽车软件开发中,DBC文件是软件开发者必备开发文件,DBC是一种文件格式,内容是为ASCII格式的文件[6]。因此,高效阅读DBC文件内容显得十分必要。Excel表格作为常用的数据管理软件,被广泛使用于办公场合,学习难度低。Python编程语言因为其具有清晰划一的风格,且调用库方便,因此具有容易识别,容易维护的优点,已被广泛用于各种场合,也成为目前用途广泛的一种编程语言[7]遥因此,基于Python设计DBC文件生成Excel表格软件,实现DBC文件自动生成Excel表格内容。
2系统方案
2.1DBC文件解析
DBC文件包含报文信息、信号信息等。报文信息主要为报文名称、报文ID、报文长度,信号信息主要为
信号名称、信号起始位、信号长度、字节顺序、数值类型、因子和偏移量、信号的最大值和最小值、单位和信号的接收节点等。DBC文件自动生成Excel表格内容的核心就是获取DBC文件代码的定义规则与格式,DBC 报文代码如下:
BO_Message Id Message Name:Message Size Transmitter
对报文语句代码分析如下:
BO_:报文标志;
Message Id:报文id,以十进制数表示;
Message Name:报文名称;
Message Size:报文数据域字节数,为无符号整型数据;
Transmitter:发送该报文的网络节点。
以某报文举例,代码如下:
BO_210Camera_Data:7Car_PC
含义:报文id为210的报文名称为“Camera_Da-ta”,报文长度为7个字节,该报文由Car_PC发送。
DBC信号代码如下:python正则表达式判断
SG_SignalName:StartBit|SignalSize@ByteOrder ValueType(Factor,Offset)[Min|Max]Unit Receiver 对信号语句代码分析如表1所示。
基金项目:江苏省南通理工学院大学生创新创业训练计划项目,项目编号:202012056019Y,项目名称:基于Python的数据库CAN文件解析工具设计。
作者简介:樊志伟(1997-),男,本科,研究方向:软件开发;陈雨飞(1992-),男,通信作者,硕士,助教,研究方向:软件开发
软件研发与应用SOFTWARE DEVELOPMENT&APPLICATION
表1信号语句代码
代码格式代码含义
SG_信号标志
SignalName信号的名字
SLarLBiL起始位
SignalSize信号长度
ByleOrder字节顺序,0代表Motorola格式,1代表Inter格式
Factor因子
Offset偏移量
MiniMax最小值和最大值
Unit单位
Receiver接收节点
2.2方案描述
基于Python编程语言,通过调用xlwt库、re库、pyqt库、tkinter库完成DBC生成Excel表格软件的设计。通过导入tkinter库实现了对文件的选择与读取,通过导入xlwt库实现了对表格的写入,通过导入re库实现字符串内查模式匹配功能,利用正则表达式提取DBC文件的相关内容,通过导入pyqt库实现软件界面的设计。
软件设计思路为:首先导入DBC文件,选择Excel 表格生成路径,读取网络节点信息,写入Excel表格中,读取DBC文件的报文名称,读取报文名称后的ID、周期、长度等,写入Excel中。读取报文下的信号信息,读取信号发送类型、信号数据类型、属性、信号属性值、信号最大最小值、信号字节长度、信号起始位、信号初始值,写入Excel表格中。最后生成Excel表格和软件生成报告。
2.3软件功能
为方便使用,且具有易操作性,设计了文件路径管理模块、检测模块、生成模块、生成报告模块。
文件路径管理模块包括DBC文件导入、Excel文件路径生成和路径清除功能。
检测模块具有两个功能,一方面是检测DBC文件是否符合DBC格式,如报文和信号数据是否填写有问题;另一方面检测文件路径管理模块总的路径是否填写。
生成模块是对DBC文件进行逐行读取,按照报文和信号的组成规则,通过正则表达式规则识别DBC文件内容,继而写入Excel文件相关对应表格中。
识别网络节点代码:re.match(r"BU_:\s.+;read-dbc);
识别报文代码:re.match(r"BO_\s\d+\s.+[:]\s[0­9]\s\w+$;readdbc);
识别信号代码:re.match(r"\sSG_\s.+\s[:].+$', readdbc);
报文名字代码:sh_dbc.write(line,msg_name,bo_read [2][:-1],style2);
报文长度代码:sh_dbc.w rite(line,msg_length,bo_ read[3],style2);
信号长度代码:bitlength=sg_read[3][end_start+ 1:end_length]。
生成报告模块是将软件操作过程中的步骤及DBC 文件中的报文名称及数量、信号名称及数量生成报告,报告以文本形式保存,生成文本位置与Excel表格生成路径一致,方便操作者快速查看相关数据和操作。
2.4软件流程
软件流程,首先导入DBC文件,选择Excel表格生成路径,执行检测操作,检查DBC文件内容和DBC 文件及Excel表格路径是否正确,如果正确,则进行生成操作,否则根据错误类型选择重新导入DBC文件,或者修改DBC文件内容,或者重新选择Excel表格生成路径。当执行生成后,进行生成报告操作,软件操作结束。
2.5软件界面
通过Python的pyqt库设计界面,首先通过Qt软件设计界面,将设计好的界面文件转成Python代码,集成在Python主程序。界面设计:一方面通过界面形式操作,学习成本低,不用在Python环境中操作,从而软件变得易操作;另一方面,通过软件界面,可以清晰了解每一步的操作结果,及提示下一步操作,降低软件操作难度。界面设计主要由导入DBC文件路径、选择Excel表格生成路径、清除路径、检测、生成、生成报 告等按钮及文本输入框组成,使得软件使用变得易操作,并设计了显示框,可以直观清晰地了解软件每步操作。
3结语
基于Python设计的DBC文件生成Excel表格软件,通过某电池管理系统的DBC文件进行自动生成测试,(下转第34页
)
域进行进一步的侦察。无人机可以利用全球定位系统收集校园的地理信息,运用自带的高清摄像头和红外摄影对校园内存在的险情进行监测和预防。如果在校园内发生火灾或者其他突发事件时,无人机可以及时对现场进行录制,将图片以及画面内容传至后台,将资料提供给相关人员,以便制定合理的解决方案。
5.4将无人机应用够在校园道路交通管理中
学生们上学与放学的时间是交通路况的高峰期,无人机可以在高空进行观察,根据各个路口的交通情况,对拥挤路口进行准确的判断并进行预警,将信息传达给交通部门,使交通部门根据路况信息做出相应的管理。6结语
无人机具有传统摄像头无法与之媲美的优势。无人机的运用在“平安校园”的建设过程中发挥着无可替代的作用,它不仅可以有效处理校园突发事件,还可以针对校园内可能发生的灾害进行预防等。由此可见,各所
(上接第21页)
可以实现DBC文件自动生成Excel表格内容。让软件开发者通过Excel表格查看DBC文件,提高了使用效率。
参考文献
[1]康昌盛.汽车CAN网络通讯技术实际应用浅谈
[J].内燃机与配件,2020,(15):202-203.
[2]白蒲江,王建军.一种基于CAN通讯的测控系统设
计[J].汽车实用技术,2020,45(18):41-43.
⑶邓召文,周围.基于CAN总线的汽车数据采集系统
开发[J].制造业自动化,2019,41(05):1-4+8.
(上接第31页)
况,更好落实计算机软件开发工作,对于不同技术要进行合理应用。在此背景下,我国计算机行业以及软件开发行业将会得到更好发展,跟上时代发展步伐,促使我国计算机事业能够在国际市场中占有一席之地。
参考文献
[1]徐锡阳.基于高端科技的计算机软件开发技术研究
[J].电脑编程技巧与维护,2020,(10):14-15+20.
[2]姬晓鹏.分层技术在计算机软件开发中的应用研究
[J].电子测试,2020,(18):135-136.学校应当将无人机技术应用在校园的安防建设中,使校园的安防监控系统得到进一步提升。
参考文献
[1]邱玉婷,崔剑,马鹏举,孟莹.多学科交叉融合的
无人机实践教学方案设计[J].实验技术与管理, 2020,37(12):175-178.
[2]齐霞,牟绍龙,王玺宇.“无人机+”警务模式的实
践探索[J].广东公安科技,2019,27(04):5-7.
[3]刘琨,张立旺,江俊峰,马鹏飞,孙振世,翁凌锋,
刘铁根.基于无人机视频联动的分布式光纤传感周界安防系统[J].光电子•激光,2019,30(12): 1244-1251.
[4]张东军,陈世伟.无人机的发展及在交通管理领域
应用的综述[J].科技广场,2019,(04):84-90.
[4]刘炳,刘青青.基于STM32F107的CAN总线双通道
通讯技术[J].中国科技信息,2020,(09):56-57.
⑸王礼,涂小芳.基于USBCAN适配器解析与生成
DBC技术研究[J].电子制作,2016,(Z1):44-45.
[6]任大恒,严晓,黄碧雄,王影.电池管理系统的报
文采集与解析[J].计算机系统应用,2020,29
(06):132-136.
[7]张雪莲.试析Python编程语言的特点及应用[J].
电脑编程技巧与维护,2020,(11):29-30+33.
[3]张赟.计算机软件开发的数据库测试技术[J].电
子技术与软件工程,2020,(17):150-151.
[4]孙雷.计算机软件开发的数据库测试技术探讨[J].
中国新通信,2020,22(15):73.
⑸宋斐.浅议计算机软件开发技术的应用与发展研
究一评《计算机应用基础》[J].3版.机械设计, 2020,37(07):
150.