Example #1
0
 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);
 }
Example #2
0
 public XcpProtocol(XcpData data)
 {
     InitializeComponent();
     this.xcpData       = data;
     this.MaximizeBox   = false;
     this.StartPosition = FormStartPosition.CenterParent;
 }
Example #3
0
 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);
 }
Example #4
0
        /// <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");
            }
        }
Example #5
0
        /// <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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }