代码拉取完成,页面将自动刷新
同步操作将从 HuangJunzeng/dbc_Parse 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
import cantools
import os
class dbcParse_MessageUnpackFileGenerate:
def __init__(self):
pass
# 创建CAN报文解析函数.c文件
def __create_messageunpack_c_file(self, dbc_file_pathname, dbc_ecu_name):
dbc_info = cantools.db.load_file(dbc_file_pathname)
dbc_c_file_name = dbc_file_pathname.replace('.dbc', '_MessageUnpack.c')
dbc_name = dbc_file_pathname.replace('.dbc', '')
file_folder = 'src_generate'
if not os.path.exists(file_folder):
os.mkdir(file_folder)
dbc_c_file_pathname = os.path.join(file_folder, dbc_c_file_name)
with open(dbc_c_file_pathname, 'w', encoding='utf-8') as file_c:
line_chars = '#include \"' + dbc_file_pathname.replace('.dbc', '_MessageUnpack.h') + '\"'
file_c.write(line_chars + '\n\n')
for message in dbc_info.messages:
if(dbc_ecu_name in message.senders):
continue
else:
# # 定义全局结构体,存放解析后的报文内容
# line_chars = dbc_name + '_' + message.name.upper() + '_STRUCT t' + message.name + ';'
# file_c.write(line_chars + '\n')
# 写入函数名
line_chars = 'void ' + dbc_file_pathname.replace('.dbc', '_') + message.name + '_Unpack(const uint8 const * pData, ' + dbc_name + '_' + message.name.upper() + '_STRUCT *p' + message.name + ')\n{'
file_c.write(line_chars + '\n')
for signal in message.signals:
sigPbcfgName = dbc_file_pathname.replace('.dbc', '') + '_' + message.name + '_' + signal.name + '_PbCfg'
sigValName = '(void *)(&(p' + message.name + '->' + 'sig_' + signal.name + '_Val)' + ')'
line_chars = ' dbcParse_CanSignalDecode(&' + sigPbcfgName + ', pData, ' + sigValName + ');'
file_c.write(line_chars + '\n')
line_chars = '}\n'
file_c.write(line_chars + '\n')
# 创建CAN报文解析函数.h文件
def __create_messageunpack_h_file(self, dbc_file_pathname, dbc_ecu_name):
dbc_info = cantools.db.load_file(dbc_file_pathname)
dbc_h_file_name = dbc_file_pathname.replace('.dbc', '_MessageUnpack.h')
dbc_name = dbc_file_pathname.replace('.dbc', '')
file_folder = 'src_generate'
if not os.path.exists(file_folder):
os.mkdir(file_folder)
dbc_h_file_pathname = os.path.join(file_folder, dbc_h_file_name)
with open(dbc_h_file_pathname, 'w', encoding='utf-8') as file_h:
line_chars = '#include \"' + dbc_file_pathname.replace('.dbc', '_SignalsPbconfig.h') + '\"'
file_h.write(line_chars + '\n\n')
for message in dbc_info.messages:
if(dbc_ecu_name in message.senders):
continue
else:
# # 声明全局结构体,存放解析后的报文内容
# line_chars = 'extern ' + dbc_name + '_' + message.name.upper() + '_STRUCT t' + message.name + ';'
# file_h.write(line_chars + '\n')
# 声明函数
line_chars = 'extern void ' + dbc_file_pathname.replace('.dbc', '_') + message.name + '_Unpack(const uint8 const * pData, ' + dbc_name + '_' + message.name.upper() + '_STRUCT *p' + message.name + ');\n'
file_h.write(line_chars + '\n')
def create_messageunpack_files(self, dbc_file_pathname, dbc_ecu_name):
self.__create_messageunpack_c_file(dbc_file_pathname, dbc_ecu_name)
self.__create_messageunpack_h_file(dbc_file_pathname, dbc_ecu_name)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。