private static void ExportXCP(string targetPath, RadGridView gridView, GridViewData gridData, XcpData xcpData) { A2lDetailData(targetPath, gridView, gridData); AddA2lDetailGroup(gridData, targetPath, xcpData); AddCanChInfo(targetPath, xcpData, null, ProtocolType.XCP_CCP); }
public XcpProtocol(XcpData data) { InitializeComponent(); this.xcpData = data; this.MaximizeBox = false; this.StartPosition = FormStartPosition.CenterParent; }
private static void ExportDBC(string targetPath, RadGridView gridView, GridViewData gridData, XcpData xcpData, AnalysisData analysisData) { DbcDetailData(targetPath, gridView, gridData); AddDBCDetailGroup(targetPath); AddCanChInfo(targetPath, xcpData, analysisData, ProtocolType.DBC); }
/// <summary> /// 导出所有数据 /// </summary> /// <param name="_allContent"></param> /// <param name="xcpdata"></param> private static void ExportAll(StringBuilder _allContent, XcpData xcpdata) { var measureList = xcpdata.MeasureData; var metholdList = xcpdata.MetholdData; for (int i = 0; i < measureList.Count; i++) { _allContent.Append("\t" + measureList[i].Name + "," + measureList[i].Type + "," + measureList[i].ReferenceMethod + "," + measureList[i].EcuAddress + ","); var res = metholdList.Find(str => str.name == measureList[i].ReferenceMethod); _allContent.Append(res.funType + "," + res.unit + "," + res.coeffsValue + "\r\n"); } }
/// <summary> /// 合并a2l 与dbc数据,统一格式 /// </summary> public static AnalysisData UnionXcpDbc(FileType fileType, XcpData xcpData, DBCData dbcData, string baudRateDbc) { ////name + describle+unit+dataType+dataLen+IsMotorola+startIndex+dataBitLen+dataAddress+factor+offset AnalysisData analysisData = new AnalysisData(); if (fileType == FileType.A2L) { analysisData.AgreeMentXCP = xcpData.AgreeMentType; } analysisData.BaudRateDbc = baudRateDbc.Trim(); try { switch (fileType) { case FileType.A2L: var measureList = xcpData.MeasureData; if (measureList == null) { LogHelper.Log.Info("XCP_DATA_MeasureData为空!"); return(null); } var metholdList = xcpData.MetholdData; if (metholdList == null) { LogHelper.Log.Info("XCP_DATA_METHOLD_LIST为空!"); return(null); } var propertyList = xcpData.PropertyData; if (propertyList == null) { LogHelper.Log.Info("XCP_DATA_PROPERTY_LIST为空!"); return(null); } analysisData.AnalysisiXcpDataList = new List <AnalysisSignal>(); for (int i = 0; i < measureList.Count; i++) { AnalysisSignal analysisSignal = new AnalysisSignal(); analysisSignal.OrderId = i + 1; analysisSignal.Name = measureList[i].Name; analysisSignal.Describle = measureList[i].Describle; ///查询函数值 var mdList = metholdList.Find(tm => tm.name == measureList[i].ReferenceMethod); if (mdList == null) { //LogHelper.Log.Info("查询metholdList失败,查询结果为空!空ID号为"+i+" 方法名为"+measureList[i].ReferenceMethod); //B_TRUE 查询不到 continue; } analysisSignal.Unit = mdList.unit; DataTypeEnum dataTypeEnum = (DataTypeEnum)Enum.Parse(typeof(DataTypeEnum), measureList[i].Type.ToUpper()); SaveDataTypeEnum svType = TypeConvert.AnalysisTypeToSaveType(dataTypeEnum); analysisSignal.SaveDataType = svType; analysisSignal.SaveDataLen = TypeConvert.AnalysisTypeToLength(dataTypeEnum); analysisSignal.IsMotorola = (int)propertyList[0].byteOrder; analysisSignal.StartIndex = 0; analysisSignal.DataBitLen = 0; analysisSignal.DataAddress = measureList[i].EcuAddress; analysisSignal.Factor = mdList.Factor; analysisSignal.OffSet = mdList.OffSet; analysisData.AnalysisiXcpDataList.Add(analysisSignal); //if (i == 1000) // break; } break; case FileType.DBC: var dbcmsgList = dbcData.DBCMessageList; var dbcsigList = dbcData.DBCSignalList; analysisData.AnalysisDbcDataList = new List <AnalysisSignal>(); int count = 0; LogHelper.Log.Info(" start :" + dbcmsgList.Count + " " + dbcsigList.Count); for (int i = 0; i < dbcmsgList.Count; i++) { var dbcList = dbcsigList.FindAll(msg => msg.FrameID == dbcmsgList[i].FrameID); for (int j = 0; j < dbcList.Count; j++) { AnalysisSignal signal = new AnalysisSignal(); signal.OrderId = count + 1; signal.Name = dbcList[j].SignalName; signal.Describle = dbcmsgList[i].FrameName; signal.Unit = dbcList[j].Unit; if (dbcList[j].SymbolType == "+") { signal.SaveDataType = SaveDataTypeEnum.V_UINT; } else if (dbcList[j].SymbolType == "-") { signal.SaveDataType = SaveDataTypeEnum.V_INT; } //signal.SaveDataLen = dbcmsgList[i].MessageLen; //len = (bitLen+7)/len signal.SaveDataLen = (dbcList[j].BitLength + 7) / 8; signal.IsMotorola = (int)dbcList[j].ByteOrder; signal.StartIndex = dbcList[j].StartBitIndex; signal.DataBitLen = dbcList[j].BitLength; signal.DataAddress = dbcmsgList[i].FrameID; signal.Factor = dbcList[j].Factor; signal.OffSet = dbcList[j].Offset; analysisData.AnalysisDbcDataList.Add(signal); count++; } } break; } } catch (Exception e) { LogHelper.Log.Error("a2l dbc数据整合失败!失败原因:" + e.Message + e.StackTrace); } return(analysisData); }
private static void AddCanChInfo(string targPath, XcpData xcpData, AnalysisData analysisData, ProtocolType protocolType) { string infoHead = "CanChInfo INFO[2] = \r\n{"; StringBuilder sb = new StringBuilder(); sb.AppendLine(infoHead); if (protocolType == ProtocolType.XCP_CCP) { if (xcpData.AgreeMentType == AgreementType.CCP) { sb.AppendLine($"\t{(int)ExportProtocolType.CCP_OPEN},{xcpData.IF_DATA_ASAP1B_CCP_DATA.BAUDRATE},(uint32_t){EXINFO_FUN_NAME_CAN1},{exInfoLen},"); } else if (xcpData.AgreeMentType == AgreementType.XCP) { if (xcpData.XcpOnCanData.CurrentSelectItem == xcpData.XcpOnCanData.VehicleApplData.CanName) { sb.AppendLine($"\t{(int)ExportProtocolType.XCP_OPEN},{xcpData.XcpOnCanData.VehicleApplData.Baudrate},(uint32_t){EXINFO_FUN_NAME_CAN1},{exInfoLen},"); } else if (xcpData.XcpOnCanData.CurrentSelectItem == xcpData.XcpOnCanData.VehicleApplRamData.CanName) { sb.AppendLine($"\t{(int)ExportProtocolType.XCP_OPEN},{xcpData.XcpOnCanData.VehicleApplRamData.Baudrate},(uint32_t){EXINFO_FUN_NAME_CAN1},{exInfoLen},"); } else if (xcpData.XcpOnCanData.CurrentSelectItem == xcpData.XcpOnCanData.CalibrationLeData.CanName) { sb.AppendLine($"\t{(int)ExportProtocolType.XCP_OPEN},{xcpData.XcpOnCanData.CalibrationLeData.Baudrate},(uint32_t){EXINFO_FUN_NAME_CAN1},{exInfoLen},"); } else if (xcpData.XcpOnCanData.CurrentSelectItem == xcpData.XcpOnCanData.CalibrationLeRamData.CanName) { sb.AppendLine($"\t{(int)ExportProtocolType.XCP_OPEN},{xcpData.XcpOnCanData.CalibrationLeRamData.Baudrate},(uint32_t){EXINFO_FUN_NAME_CAN1},{exInfoLen},"); } } sb.AppendLine($"\t{0},{0},{0},{0},"); } else if (protocolType == ProtocolType.DBC) { sb.AppendLine($"\t{0},{0},{0},{0},"); sb.AppendLine($"\t{(int)ExportProtocolType.CAN_MONITOR},{analysisData.BaudRateDbc},(uint32_t){EXINFO_FUN_NAME_CAN2},{frameIdList.Count},"); } else if (protocolType == ProtocolType.ALL) { if (xcpData.AgreeMentType == AgreementType.CCP) { sb.AppendLine($"\t{(int)ExportProtocolType.CCP_OPEN},{xcpData.IF_DATA_ASAP1B_CCP_DATA.BAUDRATE},(uint32_t){EXINFO_FUN_NAME_CAN1},{exInfoLen},"); } else if (xcpData.AgreeMentType == AgreementType.XCP) { if (xcpData.XcpOnCanData.CurrentSelectItem == xcpData.XcpOnCanData.VehicleApplData.CanName) { sb.AppendLine($"\t{(int)ExportProtocolType.XCP_OPEN},{xcpData.XcpOnCanData.VehicleApplData.Baudrate},(uint32_t){EXINFO_FUN_NAME_CAN1},{exInfoLen},"); } else if (xcpData.XcpOnCanData.CurrentSelectItem == xcpData.XcpOnCanData.VehicleApplRamData.CanName) { sb.AppendLine($"\t{(int)ExportProtocolType.XCP_OPEN},{xcpData.XcpOnCanData.VehicleApplRamData.Baudrate},(uint32_t){EXINFO_FUN_NAME_CAN1},{exInfoLen},"); } else if (xcpData.XcpOnCanData.CurrentSelectItem == xcpData.XcpOnCanData.CalibrationLeData.CanName) { sb.AppendLine($"\t{(int)ExportProtocolType.XCP_OPEN},{xcpData.XcpOnCanData.CalibrationLeData.Baudrate},(uint32_t){EXINFO_FUN_NAME_CAN1},{exInfoLen},"); } else if (xcpData.XcpOnCanData.CurrentSelectItem == xcpData.XcpOnCanData.CalibrationLeRamData.CanName) { sb.AppendLine($"\t{(int)ExportProtocolType.XCP_OPEN},{xcpData.XcpOnCanData.CalibrationLeRamData.Baudrate},(uint32_t){EXINFO_FUN_NAME_CAN1},{exInfoLen},"); } } sb.AppendLine($"\t{(int)ExportProtocolType.CAN_MONITOR},{analysisData.BaudRateDbc},(uint32_t){EXINFO_FUN_NAME_CAN2},{frameIdList.Count},"); } sb.AppendLine("};"); WriteData.WriteString(sb, targPath); }
private static void AddA2lDetailGroup(GridViewData listData, string path, XcpData dataCan1) { StringBuilder sbExInfo = new StringBuilder(); sbExInfo.Append(EXINFO_TYPE_HEAD); sbExInfo.AppendLine(EXINFO_FUN_NAME_CAN1 + EXINFO_TYPE_METHOLD_NAME); if (dataCan1.AgreeMentType == AgreementType.CCP) { sbExInfo.AppendLine($"\t\t{(int)ExInfoType.SLAVER_ID_TYPE},{dataCan1.IF_DATA_ASAP1B_CCP_DATA.CAN_MSG_ID_RECE},0,"); sbExInfo.AppendLine($"\t\t{(int)ExInfoType.MASTER_ID_TYPE},{dataCan1.IF_DATA_ASAP1B_CCP_DATA.CAN_MSG_ID_SEND},0,"); sbExInfo.AppendLine($"\t\t{(int)ExInfoType.DAQ100_ID_TYPE},{dataCan1.IF_DATA_ASAP1B_CCP_DATA.CCP_100MS_DATA.CAN_ID_FIXED},0,"); sbExInfo.AppendLine($"\t\t{(int)ExInfoType.DAQ10_ID_TYPE},{dataCan1.IF_DATA_ASAP1B_CCP_DATA.CCP_10MS_DATA.CAN_ID_FIXED},0,"); exInfoLen = 4; if (listData.LimitTimeListSegMent.Count > 0) { sbExInfo.AppendLine("\t\t" + "2" + "," + SEGMENT_NAME + "," + listData.LimitTimeListSegMent.Count + ","); exInfoLen += 1; } if (listData.LimitTimeList100ms.Count > 0) { sbExInfo.AppendLine($"\t\t{(int)ExInfoType.DAQ100_TAB_TYPE},(uint32_t){_100MS_NAME},{listData.LimitTimeList100ms.Count},"); exInfoLen++; } if (listData.LimitTimeList10ms.Count > 0) { sbExInfo.AppendLine($"\t\t{(int)ExInfoType.DAQ10_TAB_TYPE},(uint32_t){_10MS_NAME},{listData.LimitTimeList10ms.Count},"); exInfoLen++; } sbExInfo.AppendLine($"\t\t{(int)ExInfoType.CCP_ECUADDR_TYPE},{dataCan1.IF_DATA_ASAP1B_CCP_DATA.STATION_ADDRESS},0,"); exInfoLen++; sbExInfo.AppendLine("};"); } else if (dataCan1.AgreeMentType == AgreementType.XCP) { exInfoLen = 2; if (dataCan1.XcpOnCanData.CurrentSelectItem == dataCan1.XcpOnCanData.VehicleApplData.CanName) { sbExInfo.AppendLine($"\t\t{(int)ExInfoType.SLAVER_ID_TYPE},{dataCan1.XcpOnCanData.VehicleApplData.SlaveID},0,"); sbExInfo.AppendLine($"\t\t{(int)ExInfoType.MASTER_ID_TYPE},{dataCan1.XcpOnCanData.VehicleApplData.MasterID},0,"); } else if (dataCan1.XcpOnCanData.CurrentSelectItem == dataCan1.XcpOnCanData.VehicleApplRamData.CanName) { sbExInfo.AppendLine($"\t\t{(int)ExInfoType.SLAVER_ID_TYPE},{dataCan1.XcpOnCanData.VehicleApplRamData.SlaveID},0,"); sbExInfo.AppendLine($"\t\t{(int)ExInfoType.MASTER_ID_TYPE},{dataCan1.XcpOnCanData.VehicleApplRamData.MasterID},0,"); } else if (dataCan1.XcpOnCanData.CurrentSelectItem == dataCan1.XcpOnCanData.CalibrationLeData.CanName) { sbExInfo.AppendLine($"\t\t{(int)ExInfoType.SLAVER_ID_TYPE},{dataCan1.XcpOnCanData.CalibrationLeData.SlaveID},0,"); sbExInfo.AppendLine($"\t\t{(int)ExInfoType.MASTER_ID_TYPE},{dataCan1.XcpOnCanData.CalibrationLeData.MasterID},0,"); } else if (dataCan1.XcpOnCanData.CurrentSelectItem == dataCan1.XcpOnCanData.CalibrationLeRamData.CanName) { sbExInfo.AppendLine($"\t\t{(int)ExInfoType.SLAVER_ID_TYPE},{dataCan1.XcpOnCanData.CalibrationLeRamData.SlaveID},0,"); sbExInfo.AppendLine($"\t\t{(int)ExInfoType.MASTER_ID_TYPE},{dataCan1.XcpOnCanData.CalibrationLeRamData.MasterID},0,"); } //sbExInfo.AppendLine($"\t\t{(int)ExInfoType.DAQ100_ID_TYPE},{dataCan1.IF_DATA_ASAP1B_CCP_DATA.CCP_100MS_DATA.CAN_ID_FIXED},0,"); //sbExInfo.AppendLine($"\t\t{(int)ExInfoType.DAQ10_ID_TYPE},{dataCan1.IF_DATA_ASAP1B_CCP_DATA.CCP_10MS_DATA.CAN_ID_FIXED},0,"); if (listData.LimitTimeListSegMent.Count > 0) { sbExInfo.AppendLine("\t\t" + "2" + "," + SEGMENT_NAME + "," + listData.LimitTimeListSegMent.Count + ","); } if (listData.LimitTimeList100ms.Count > 0) { sbExInfo.AppendLine($"\t\t{(int)ExInfoType.DAQ100_TAB_TYPE},(uint32_t){_100MS_NAME},{listData.LimitTimeList100ms.Count},"); exInfoLen++; } if (listData.LimitTimeList10ms.Count > 0) { sbExInfo.AppendLine($"\t\t{(int)ExInfoType.DAQ10_TAB_TYPE},(uint32_t){_10MS_NAME},{listData.LimitTimeList10ms.Count},"); exInfoLen++; } //sbExInfo.AppendLine($"\t\t{(int)ExInfoType.CCP_ECUADDR_TYPE},{dataCan1.IF_DATA_ASAP1B_CCP_DATA.STATION_ADDRESS},0,"); sbExInfo.AppendLine("};"); } WriteData.WriteString(sbExInfo, path); }