当前位置: 首页 > news >正文

凡科网站官网用vs2013做网站教程

凡科网站官网,用vs2013做网站教程,做网站用的语言,免费模板网站推荐Excel制作 新建一个Excel,后缀为“.xls” 工作本名称改为“CAN_Matrix” 在首行按照列来起名字,在里面只需要填写必须的内容即可。 列数名称第0列Message Name第1列Message Format第2列Message ID第3列Message Length (byte)第4列Message Transmitte…

Excel制作

新建一个Excel,后缀为“.xls”

工作本名称改为“CAN_Matrix”

在首行按照列来起名字,在里面只需要填写必须的内容即可。

列数名称
第0列Message Name
第1列Message Format
第2列Message
ID
第3列Message
Length
(byte)
第4列Message Transmitter
ECU
第5列Message Receiver
ECU
第6列Message Send Method
第7列Message Cycle Period(ms)
第8列Message Cycle Period Fast(ms)
第9列Message Delay Time(ms)
第10列Message IL Support 
第11列Message Num Of Repetition
第12列Message Start Delay Time(ms)
第13列NM Message
第14列CANFD BRS
第15列Message Comment
第16列Signal Name
第17列Signal
Length
(Bit)
第18列Signal Start Bit
第19列Singal Byte
Order
第20列Signal Unit
第21列Signal Data Type
第22列Signal Resolution
第23列Signal OffSet
第24列Signal Min
Value
第25列Signal Max Value
第26列Singal Inactive Value
第27列Singal Send Method
第28列Singal Start Value
第29列NWM- Wakeup Allowed
第30列Signal Value Descriptions
第31列Signal Comment

代码源码

# encoding='utf-8'
import xlrd
from decimal import Decimalimport sys
global Table        #表格
global RowCount     #行数
global ColumnCount  #列数
global OutputFile   #输出文件ExcelTable = "CAN_Matrix"   #表格
Note = "xin1"               #节点名称MessageName_Position = 0 #报文名称序号
MessageFormat_Position = 1 #报文格式序号
MessageID_Position = 2 #报文ID序号
MessageLength_Position = 3 #报文长度序号
MessageTransmitterNote_Position = 4 #报文发送节点序号
MessageReceiverNote_Position = 5 #报文接收节点序号
MessageSendMethod_Position  = 6 #报文发送方式序号
MessagePeriod_Position = 7 #报文周期序号
MessagePeriodFast_Position = 8 #报文快速周期序号
MessageDelayTime_Position = 9 #报文延迟时间序号
MessageILSupport_Position = 10 #报文支持IL序号
MessageNumOfRepetition_Position = 11 #报文重发次数序号
MessageStartDelayTime_Position = 12 #报文开始延迟时间序号
MessageNM_Position = 13 #报文网络管理序号
MessageCANFDBRS_Position = 14 #报文CANFDBRS序号
MessageComment_Position = 15 #报文注释序号SignalName_Position = 16 #信号名称序号
SignalStartLength_Position = 17 #信号长度序号
SignalStartBit_Position = 18 #信号起始位序号
SignalByteOrder_Position = 19 #信号字节序序号
SignalUnit_Position = 20 #信号单位序号
SignalDataType_Position = 21 #信号数据类型序号
SignalResolution_Position = 22 #信号比率序号
SignalOffset_Position = 23 #信号偏移序号
SignalMinValue_Position = 24 #信号最小值序号
SignalMaxValue_Position = 25 #信号最大值序号
SingalInactiveValue_Position = 26 #信号未激活值序号
SingalSendMethod_Position = 27 #信号发送方式序号
SingalStartValue_Position = 28 #信号开始值序号
SingalNWMWakeupAllowed_Position = 29 #信号网管唤醒序号
SignalValueDescriptions_Position = 30 #信号数值描述序号
SignalComment_Position = 31 #信号标注序号def remove_exponent(num):  # 去掉读取到的数值的小数点后边的0return num.to_integral() if num == num.to_integral() else num.normalize()def Read_Base_Infomation(): # 获取基本信息global Table        #表格global RowCount     #行数global ColumnCount  #列数global OutputFile   #输出文件if len(sys.argv) > 1:InputFilePath = sys.argv[1]else:InputFilePath = "DBCDemo.xls"#print(f"InputFilePath:{InputFilePath}\n")LastIndex = InputFilePath.rfind('\\')StartIndex = InputFilePath.find('.xls', LastIndex)InputFileSuffix = InputFilePath[LastIndex + 1:]#print(f"InputFileSuffix:{InputFileSuffix}\n")Xlsx = xlrd.open_workbook(InputFileSuffix)    # 找到输入文件Table = Xlsx.sheet_by_name(ExcelTable)  # 找到sheetRowCount = Table.nrows                  # 提取行数ColumnCount = Table.ncols               # 提取列数InputFileNoSuffix = InputFilePath[LastIndex + 1:StartIndex - 3]#输出文件#print(f"InputFileNoSuffix:{InputFileNoSuffix}\n")OutputFile = InputFileNoSuffix + ".dbc"#print(f"OutputFile:{OutputFile}\n")def Output_DBC_Head():#打印文件头部global OutputFile   #输出文件with open(OutputFile, "w",encoding="utf-8") as f:f.write("VERSION \"\"")f.write("\n\n")f.write('''
NS_ : NS_DESC_CM_BA_DEF_BA_VAL_CAT_DEF_CAT_FILTERBA_DEF_DEF_EV_DATA_ENVVAR_DATA_SGTYPE_SGTYPE_VAL_BA_DEF_SGTYPE_BA_SGTYPE_SIG_TYPE_REF_VAL_TABLE_SIG_GROUP_SIG_VALTYPE_SIGTYPE_VALTYPE_BO_TX_BU_BA_DEF_REL_BA_REL_BA_DEF_DEF_REL_BU_SG_REL_BU_EV_REL_BU_BO_REL_SG_MUL_VAL_BS_:\n\n''')f.write(f"BU_: {Note}\n\n\n")def Output_MessageMappingSignal():#报文和信号映射关系global Table        #表格global RowCount     #行数global OutputFile   #输出文件with open(OutputFile, "a+",encoding="utf-8") as f:i = 1 #跳过表头while i < RowCount:#逐行轮询MessageName = Table.cell_value(i, MessageName_Position)# 报文名称if MessageName == "":   # 本行为空print(f"Empty Message exists\n")returnelse:                   # 本行有内容#MessageID = Table.cell_value(i, MessageID_Position)MessageID = int((Table.cell_value(i, MessageID_Position)), 16)# 报文ID十六进制#print(f"MessageID:{MessageID}\n")MessageLength = remove_exponent(Decimal(Table.cell_value(i, MessageLength_Position)).quantize(Decimal("0")))# 报文长度MessageTransmitterNote = Table.cell_value(i, MessageTransmitterNote_Position)# 报文发送节点MessageReceiverNote = Table.cell_value(i, MessageReceiverNote_Position)# 报文接收节点if MessageTransmitterNote == Note :# 写入报文ID信息f.write(f"BO_ {MessageID} {MessageName}: {MessageLength} {Note}\n")  else:f.write(f"BO_ {MessageID} {MessageName}: {MessageLength} Vector__XXX\n")               while 1:#扫描这个报文里面的所有信号if (i == RowCount) or (MessageID != int((Table.cell_value(i, MessageID_Position)), 16)):#后面没有该报文的信号或者已经到尽头f.write("\n")breakelse:# 后面还有该报文的信号SingleName = Table.cell_value(i, SignalName_Position)#信号名称#print(f"SingleName:{SingleName}\n")SignalStartBit = remove_exponent(Decimal(Table.cell_value(i, SignalStartBit_Position)).quantize(Decimal("0")))#信号起始位,去除小数点后边的0以及保留小数点后O位#print(f"SignalStartBit:{SignalStartBit}\n")SignalLength = remove_exponent(Decimal(Table.cell_value(i, SignalStartLength_Position)).quantize(Decimal("0"))) #信号长度#print(f"SignalLength:{SignalLength}\n")if Table.cell_value(i, SignalByteOrder_Position) == "Motorola MSB" or Table.cell_value(i, SignalByteOrder_Position) == "Motorola" or Table.cell_value(i, SignalByteOrder_Position) == "":#信号字节序SignalByteOrder = "@0"else:SignalByteOrder = "@1"#print(f"SignalByteOrder:{SignalByteOrder}\n")if Table.cell_value(i, SignalDataType_Position) == "Unsigned" or Table.cell_value(i, SignalDataType_Position) == "unsigned" or Table.cell_value(i, SignalDataType_Position) == "":#信号有无符号SignalDateType = "+"else:SignalDateType = "-"#print(f"SignalDateType:{SignalDateType}\n")if Table.cell_value(i, SignalUnit_Position) == "":#信号单位SignalUnit = ""else:SignalUnit = Table.cell_value(i, SignalUnit_Position)#print(f"SignalUnit:{SignalUnit}\n")if Table.cell_value(i, SignalResolution_Position) == "":#信号精度SignalResolution = 1else:SignalResolution = remove_exponent(Decimal(Table.cell_value(i, SignalResolution_Position)).quantize(Decimal("0.00000")))if Table.cell_value(i, SignalOffset_Position) == "":#信号偏移SignalOffset = 0else:SignalOffset = remove_exponent(Decimal(Table.cell_value(i, SignalOffset_Position)).quantize(Decimal("0.00000")))#print(f"SignalOffset:{SignalOffset}\n")                         if Table.cell_value(i, SignalOffset_Position) == "":SignalMinValue = 0;else:HexValue = str(Table.cell_value(i, SignalMinValue_Position))#信号最小值if HexValue.startswith('0x') or HexValue.startswith('0X'):SignalMinValue = int(HexValue, 16)  # 将字符串转换为10进制整数else:SignalMinValue = remove_exponent(Decimal(Table.cell_value(i, SignalMinValue_Position)).quantize(Decimal("0")))#print(f"SignalMinValue:{SignalMinValue}\n") if Table.cell_value(i, SignalMaxValue_Position) == "":SignalMaxValue = 0xFF;else:           HexValue = str(Table.cell_value(i, SignalMaxValue_Position))#信号最大值if HexValue.startswith('0x') or HexValue.startswith('0X'):SignalMaxValue = int(HexValue, 16)  # 将字符串转换为10进制整数else:SignalMaxValue = remove_exponent(Decimal(Table.cell_value(i, SignalMaxValue_Position)).quantize(Decimal("0")))        #print(f"SignalMaxValue:{SignalMaxValue}\n") if MessageTransmitterNote == Note :f.write(f" SG_ {SingleName} : {SignalStartBit}|{SignalLength}{SignalByteOrder}{SignalDateType} ({SignalResolution},{SignalOffset}) [{SignalMinValue}|{SignalMaxValue}] \"{SignalUnit}\" Vector__XXX\n")else :f.write(f" SG_ {SingleName} : {SignalStartBit}|{SignalLength}{SignalByteOrder}{SignalDateType} ({SignalResolution},{SignalOffset}) [{SignalMinValue}|{SignalMaxValue}] \"{SignalUnit}\" {Note} \n")    i = i + 1 #扫描下一行#print(f"i:{i}\n")f.write("\n")def Output_DBC_Comment(): global Noteglobal OutputFile   #输出文件with open(OutputFile, "a+", encoding="GB2312") as f:     f.write("""
BA_DEF_ SG_  "GenSigStartValue" FLOAT 0 100000000000;
BA_DEF_ SG_  "GenSigSendType" ENUM  "Cyclic","OnWrite","OnWriteWithRepetition","OnChange","OnChangeWithRepetition","IfActive","IfActiveWithRepetition","NoSigSendType","NotUsed","NotUsed","NotUsed","NotUsed","NotUsed";
BA_DEF_ SG_  "GenSigInactiveValue" INT 0 100000;
BA_DEF_ SG_  "NWM-WakeupAllowed" ENUM  "No","Yes";
BA_DEF_ BO_  "GenMsgSendType" ENUM  "Cyclic","NotUsed","NotUsed","NotUsed","NotUsed","Cyclic","NotUsed","IfActive","NoMsgSendType","NotUsed","vector_leerstring";
BA_DEF_ BO_  "GenMsgNrOfRepetition" INT 0 999999;
BA_DEF_ BO_  "GenMsgDelayTime" INT 0 1000;
BA_DEF_ BO_  "GenMsgCycleTime" INT 0 50000;
BA_DEF_ BO_  "GenMsgCycleTimeFast" INT 0 50000;
BA_DEF_ BO_  "GenMsgILSupport" ENUM  "No","Yes";
BA_DEF_ BO_  "NmMessage" ENUM  "no","yes";
BA_DEF_ BO_  "GenMsgStartDelayTime" INT 0 65535;
BA_DEF_ BU_  "NmStationAddress" INT 0 63;
BA_DEF_ BU_  "NmNode" ENUM  "no","yes";
BA_DEF_  "NmBaseAddress" HEX 1024 1087;
BA_DEF_ BO_  "CANFD_BRS" ENUM  "0","1";
BA_DEF_  "DBName" STRING ;
BA_DEF_  "BusType" STRING ;
BA_DEF_ BU_  "NodeLayerModules" STRING ;
BA_DEF_ BU_  "ECU" STRING ;
BA_DEF_ BU_  "CANoeJitterMax" INT 0 0;
BA_DEF_ BU_  "CANoeJitterMin" INT 0 0;
BA_DEF_ BU_  "CANoeDrift" INT 0 0;
BA_DEF_ BU_  "CANoeStartDelay" INT 0 0;
BA_DEF_ BO_  "VFrameFormat" ENUM  "StandardCAN","ExtendedCAN","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","reserved","StandardCAN_FD","ExtendedCAN_FD";
BA_DEF_DEF_  "GenSigStartValue" 0;
BA_DEF_DEF_  "GenSigSendType" "Cyclic";
BA_DEF_DEF_  "GenSigInactiveValue" 0;
BA_DEF_DEF_  "NWM-WakeupAllowed" "";
BA_DEF_DEF_  "GenMsgSendType" "NoMsgSendType";
BA_DEF_DEF_  "GenMsgNrOfRepetition" 0;
BA_DEF_DEF_  "GenMsgDelayTime" 0;
BA_DEF_DEF_  "GenMsgCycleTime" 0;
BA_DEF_DEF_  "GenMsgCycleTimeFast" 0;
BA_DEF_DEF_  "GenMsgILSupport" "Yes";
BA_DEF_DEF_  "NmMessage" "no";
BA_DEF_DEF_  "GenMsgStartDelayTime" 0;
BA_DEF_DEF_  "NmStationAddress" 0;
BA_DEF_DEF_  "NmNode" "no";
BA_DEF_DEF_  "NmBaseAddress" 1024;
BA_DEF_DEF_  "CANFD_BRS" "1";
BA_DEF_DEF_  "DBName" "";
BA_DEF_DEF_  "BusType" "";
BA_DEF_DEF_  "NodeLayerModules" "";
BA_DEF_DEF_  "ECU" "";
BA_DEF_DEF_  "CANoeJitterMax" 0;
BA_DEF_DEF_  "CANoeJitterMin" 0;
BA_DEF_DEF_  "CANoeDrift" 0;
BA_DEF_DEF_  "CANoeStartDelay" 0;
BA_DEF_DEF_  "VFrameFormat" "StandardCAN";
BA_ "BusType" "CAN FD";
""")f.write(f'BA_ "DBName" \"{Note}\";\n\n')def Output_SignalAttributes():#添加信号属性global Table        #表格global RowCount     #行数global OutputFile   #输出文件with open(OutputFile, "a+", encoding="utf-8") as f:#with open(OutputFile, "a+", encoding="GB2312") as f:  i = 1 #跳过表头while i < RowCount:#逐行轮询SingleName = Table.cell_value(i, SignalName_Position)#信号名称#print(f"SingleName:{SingleName}\n")MessageID = int((Table.cell_value(i, MessageID_Position)), 16)# 报文ID十六进制if Table.cell_value(i, SingalInactiveValue_Position) != "":#信号未激活值SingalInactiveValue = remove_exponent(Decimal(Table.cell_value(i, SingalInactiveValue_Position)).quantize(Decimal("0")))#print(f"SingalInactiveValue:{SingalInactiveValue}\n")f.write(f"BA_ \"GenSigInactiveValue\" SG_ {MessageID} {SingleName} {SingalInactiveValue};\n")if Table.cell_value(i, SingalSendMethod_Position) != "":#信号发送方式SingalSendMethod = Table.cell_value(i, SingalSendMethod_Position)#print(f"SingalSendMethod:{SingalSendMethod}\n")if SingalSendMethod == "Cyclic":f.write(f"BA_ \"GenSigSendType\" SG_ {MessageID} {SingleName} 0;\n")elif SingalSendMethod == "OnWrite":f.write(f"BA_ \"GenSigSendType\" SG_ {MessageID} {SingleName} 1;\n")elif SingalSendMethod == "OnWriteWithRepetition":f.write(f"BA_ \"GenSigSendType\" SG_ {MessageID} {SingleName} 2;\n")              elif SingalSendMethod == "OnChange":f.write(f"BA_ \"GenSigSendType\" SG_ {MessageID} {SingleName} 3;\n")elif SingalSendMethod == "OnChangeWithRepetition":f.write(f"BA_ \"GenSigSendType\" SG_ {MessageID} {SingleName} 4;\n")elif SingalSendMethod == "IfActive":f.write(f"BA_ \"GenSigSendType\" SG_ {MessageID} {SingleName} 5;\n")elif SingalSendMethod == "IfActiveWithRepetition":f.write(f"BA_ \"GenSigSendType\" SG_ {MessageID} {SingleName} 6;\n")else:f.write(f"BA_ \"GenSigSendType\" SG_ {MessageID} {SingleName} 0;\n")if Table.cell_value(i, SingalStartValue_Position) != "":#信号开始值SingalStartValue = remove_exponent(Decimal(Table.cell_value(i, SingalStartValue_Position)).quantize(Decimal("0")))#print(f"SingalStartValue:{SingalStartValue}\n")f.write(f"BA_ \"GenSigStartValue\" SG_ {MessageID} {SingleName} {SingalStartValue};\n")if Table.cell_value(i, SingalNWMWakeupAllowed_Position) != "":#信号网管唤醒序号SingalNWMWakeupAllowed = Table.cell_value(i, SingalNWMWakeupAllowed_Position)#print(f"SingalNWMWakeupAllowed:{SingalNWMWakeupAllowed}\n")if SingalNWMWakeupAllowed == "Yes" or SingalNWMWakeupAllowed == "YES":f.write(f"BA_ \"NWM-WakeupAllowed\" SG_ {MessageID} {SingleName} 1;\n")else:f.write(f"BA_ \"NWM-WakeupAllowed\" SG_ {MessageID} {SingleName} 0;\n")              i = i + 1def Output_SignalValue():#打印信号值定义global RowCount     #行数global Table global OutputFile   #输出文件with open(OutputFile, "a+", encoding="utf-8") as f:i = 1 #跳过表头while i < RowCount:#逐行轮询if Table.cell_value(i, SignalName_Position) != "":MessageID = int((Table.cell_value(i, MessageID_Position)), 16)if Table.cell_value(i, SignalValueDescriptions_Position) != "":SingleName = Table.cell_value(i, SignalName_Position)SignalValueDescription = Table.cell_value(i, SignalValueDescriptions_Position).strip().replace("\r", "").split("\n")SignalValueDescription = list(reversed(SignalValueDescription))if SignalValueDescription != [""]:#处理列表元素使其生成DBC文件格式中一样的格式ELE = "\" ".join(SignalValueDescription).replace("0x","").replace(":"," \"")+"\""f.write(f"VAL_ {MessageID} {SingleName} {ELE} ;\n") i = i + 1      def Output_SignalComment():#添加信号注释global Table        #表格global RowCount     #行数global OutputFile   #输出文件with open(OutputFile, "a+", encoding="utf-8") as f:#信号注释,不提倡添加中文注释#with open(OutputFile, "a+", encoding="GB2312") as f:  i = 1 #跳过表头while i < RowCount:#逐行轮询if Table.cell_value(i, SignalName_Position) != "":MessageID = int((Table.cell_value(i, MessageID_Position)), 16)if Table.cell_value(i, SignalValueDescriptions_Position) != "":SingleName = Table.cell_value(i, SignalName_Position)if Table.cell_value(i, SignalComment_Position) != "":#信号标注序号SignalComment = Table.cell_value(i, SignalComment_Position).strip().replace("\n", "").replace("\r", "")f.write(f"CM_ SG_ {MessageID} {SingleName} \"{SignalComment}\";\n")i = i + 1def Output_MessageAttribute():#打印报文属性global RowCount     #行数global Tableglobal OutputFile   #输出文件with open(OutputFile, "a+",encoding="utf-8") as f:i = 1 #跳过表头while i < RowCount:#逐行轮询MessageID = int((Table.cell_value(i, MessageID_Position)), 16)# 报文IDif Table.cell_value(i, MessageFormat_Position) != "":# 报文格式MessageFormat = Table.cell_value(i, MessageFormat_Position)#print(f"MessageFormat:{MessageFormat}\n")if MessageFormat == "CAN Standard":  f.write(f"BA_ \"VFrameFormat\" BO_ {MessageID} 0;\n")elif MessageFormat == "CAN Extended":               f.write(f"BA_ \"VFrameFormat\" BO_ {MessageID} 1;\n") elif MessageFormat == "CAN FD Standard":              f.write(f"BA_ \"VFrameFormat\" BO_ {MessageID} 14;\n")                      elif MessageFormat == "CAN FD Extended":              f.write(f"BA_ \"VFrameFormat\" BO_ {MessageID} 15;\n")           else:              f.write(f"BA_ \"VFrameFormat\" BO_ {MessageID} 0;\n")  if Table.cell_value(i, MessageSendMethod_Position) != "":# 报文发送方式MessageSendMethod = Table.cell_value(i, MessageSendMethod_Position)#print(f"MessageSendMethod:{MessageSendMethod}\n")if MessageSendMethod == "Cyclic":f.write(f"BA_ \"GenMsgSendType\" BO_ {MessageID} 0;\n")   elif MessageSendMethod == "IfActive":           f.write(f"BA_ \"GenMsgSendType\" BO_ {MessageID} 7;\n")     else:f.write(f"BA_ \"GenMsgSendType\" BO_ {MessageID} 0;\n")     if Table.cell_value(i, MessagePeriod_Position) != "":            MessagePeriod = Table.cell_value(i, MessagePeriod_Position)if MessagePeriod != "Event":# 报文周期      MessagePeriod = remove_exponent(Decimal(Table.cell_value(i, MessagePeriod_Position)).quantize(Decimal("0")))                #print(f"MessagePeriod:{MessagePeriod}\n")f.write(f"BA_ \"GenMsgCycleTime\" BO_ {MessageID} {MessagePeriod};\n") if Table.cell_value(i, MessagePeriodFast_Position) != "":#报文快速周期 MessagePeriodFast = remove_exponent(Decimal(Table.cell_value(i, MessagePeriodFast_Position)).quantize(Decimal("0")))         f.write(f"BA_ \"GenMsgCycleTimeFast\" BO_ {MessageID} {MessagePeriodFast};\n") if Table.cell_value(i, MessageDelayTime_Position) != "":#报文延迟时间MessageDelayTime = remove_exponent(Decimal(Table.cell_value(i, MessageDelayTime_Position)).quantize(Decimal("0")))            f.write(f"BA_ \"GenMsgDelayTime\" BO_ {MessageID} {MessageDelayTime};\n")  if Table.cell_value(i, MessageILSupport_Position) != "":#报文支持IL序号MessageILSupport = Table.cell_value(i, MessageILSupport_Position)if MessageILSupport == "Yes" or MessageILSupport == "YES":f.write(f"BA_ \"GenMsgILSupport\" BO_ {MessageID} 1;\n") else:f.write(f"BA_ \"GenMsgILSupport\" BO_ {MessageID} 0;\n")    if Table.cell_value(i, MessageNumOfRepetition_Position) != "":#报文重发次数MessageNumOfRepetition = remove_exponent(Decimal(Table.cell_value(i, MessageNumOfRepetition_Position)).quantize(Decimal("0")))              f.write(f"BA_ \"GenMsgNrOfRepetition\" BO_ {MessageID} {MessageNumOfRepetition};\n") if Table.cell_value(i, MessageStartDelayTime_Position) != "":#报文开始延迟时间MessageStartDelayTime = remove_exponent(Decimal(Table.cell_value(i, MessageStartDelayTime_Position)).quantize(Decimal("0")))            f.write(f"BA_ \"GenMsgStartDelayTime\" BO_ {MessageID} {MessageStartDelayTime};\n") if Table.cell_value(i, MessageNM_Position) != "":#报文网络管理MessageNM = Table.cell_value(i, MessageNM_Position)        if MessageNM == "Yes" or MessageNM == "YES":f.write(f"BA_ \"NmMessage\" BO_ {MessageID} 1;\n") else:f.write(f"BA_ \"NmMessage\" BO_ {MessageID} 0;\n")if Table.cell_value(i, MessageCANFDBRS_Position) != "":#报文CANFDBRSMessageCANFDBRS = Table.cell_value(i, MessageCANFDBRS_Position)                                          if MessageCANFDBRS == "Yes" or MessageCANFDBRS == "YES":f.write(f"BA_ \"CANFD_BRS\" BO_ {MessageID} 1;\n") else:f.write(f"BA_ \"CANFD_BRS\" BO_ {MessageID} 0;\n")i = i + 1def Output_MessageComment():#打印报文注释global Table        #表格global RowCount     #行数global OutputFile   #输出文件with open(OutputFile, "a+", encoding="GB2312") as f:#打印报文注释  i = 1 #跳过表头while i < RowCount:#逐行轮询MessageID = int((Table.cell_value(i, MessageID_Position)), 16)# 报文IDMessageComment = Table.cell_value(i, MessageComment_Position)# 报文注释if MessageComment != "":f.write(f"CM_ BO_ {MessageID} \"{MessageComment}\";\n") i = i + 1if __name__ == "__main__" :print(f"Start")#打印的顺序不要乱,不然会打不开文件Read_Base_Infomation()Output_DBC_Head()Output_MessageMappingSignal()Output_SignalComment()Output_MessageComment() Output_DBC_Comment()  Output_SignalAttributes()Output_MessageAttribute()Output_SignalValue()print(f"Success!!")

http://www.yayakq.cn/news/757466/

相关文章:

  • 黄冈网站建设效果域名解析官网
  • 找网站做谷歌seo优化
  • 设计网站有没有版权网站建设许可证
  • 什么叫网站建设四网合一专业的网站建设排名
  • 智能科普网站平台建设方案宁波网络营销策划
  • 深圳wap网站建设公司10万以下纯电动汽车排名
  • 衡水做wap网站多少钱网站开发教学视频
  • 国外空间网站源码腾讯企点是干嘛的
  • 营销型网站设计稿广州广告公司排行榜
  • 莞城网站制作编程网校
  • 河北省老区建设促进会网站什么是网络营销请举几个例子说明
  • 怎么看网站开发语言跨境电商怎么样
  • 湘潭商城网站建设定制网络公司最怕怎么投诉
  • 国内优秀的企业网站培训课
  • 网站的seo优化报告做美食分享网站源码
  • php与mysql网站开发全接触html简单广告代码
  • 门头沟网站建设德州网站建设哪家专业
  • 贵州省铜仁市住房和城乡建设局网站seo网络推广招聘
  • 包装纸箱公司怎么做网站杭州市建设工程招标
  • 三网合一网站建设系统 价格网站制作前必须做的事情有哪些
  • 珠海网站建设制作设计wordpress 编辑代码
  • 自建网站的步骤工程建设是指
  • 网站设计制作的服务和质量广州全网推广
  • 网站建设设计说明书做网站还有前景吗
  • 东营网站制作做旅行社的都是在哪网站拿票
  • 做那类网站赚钱阳春网站制作
  • 秦皇岛网站推广联系电话做企业网站需要提供什么资料
  • 重庆城乡建设网站杭州百度开户
  • 网站seo平台大连企业网站建设定制
  • 阳泉网站建设郑州公司建网站