Example #1
0
        private static void A2lDetailData(string targetPath, RadGridView gridView, GridViewData listData)
        {
            try
            {
                lock (obj)
                {
                    StringBuilder _segmentStr = new StringBuilder();
                    StringBuilder _10msStr    = new StringBuilder();
                    StringBuilder _100msStr   = new StringBuilder();

                    //定义XCP时间分类限制数组名
                    _segmentHeadName = HEADER_NAME + FUN_TYPE + SEGMENT_NAME + _A2L_ARRAY_CHAR + _SPLIT_CHAR;
                    _10msHeadName    = HEADER_NAME + FUN_TYPE + _10MS_NAME + _A2L_ARRAY_CHAR + _SPLIT_CHAR;
                    _100msHeadName   = HEADER_NAME + FUN_TYPE + _100MS_NAME + _A2L_ARRAY_CHAR + _SPLIT_CHAR;

                    if (listData.LimitTimeListSegMent.Count > 0)
                    {
                        //添加头
                        _segmentStr.Append(_segmentHeadName);
                        //添加数据
                        AppendData(listData.LimitTimeListSegMent, _segmentStr, gridView);
                    }
                    if (listData.LimitTimeList10ms.Count > 0)
                    {
                        _10msStr.Append(_10msHeadName);
                        AppendData(listData.LimitTimeList10ms, _10msStr, gridView);
                    }
                    if (listData.LimitTimeList100ms.Count > 0)
                    {
                        _100msStr.Append(_100msHeadName);
                        AppendData(listData.LimitTimeList100ms, _100msStr, gridView);
                    }
                    //写入数据
                    if (_segmentStr.Length > 0)
                    {
                        WriteData.WriteString(_segmentStr, targetPath);
                    }
                    if (_10msStr.Length > 0)
                    {
                        WriteData.WriteString(_10msStr, targetPath);
                    }
                    if (_100msStr.Length > 0)
                    {
                        WriteData.WriteString(_100msStr, targetPath);
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.Log.Error(ex.Message + "\r\n" + ex.StackTrace);
            }
        }
Example #2
0
        private static void DbcDetailData(string targetPath, RadGridView gridView, GridViewData listData)
        {
            try
            {
                //遍历行数据
                StringBuilder dbcBuilder = new StringBuilder();
                acturalDBCList  = new List <AnalysisSignal>();
                frameIdList     = new List <string>();
                allDbcGroupData = new List <StringBuilder>();
                //遍历选择行数据
                List <AnalysisSignal> analysisDbcDataList = DbcDataToSignal(listData, gridView);

                //根据分组ID查询该ID对应所有数据行
                for (int i = 0; i < frameIdList.Count; i++)
                {
                    var           resdbcList   = acturalDBCList.FindAll(dbc => dbc.DataAddress == frameIdList[i]);
                    StringBuilder dbcGroupData = new StringBuilder();
                    dbcGroupData.Append(DBC_DETAIL_HEAD);
                    string metholdName = DBC_DEATIL_METHOLD_NAME + "_" + frameIdList[i];
                    dbcGroupData.AppendLine(metholdName + "[] = \r\n{ ");
                    //保存格式内容:名称+描述+单位+数据类型+数据长度+字节顺序+截取开始地址(dbc有用)+截取长度+数据地址(a2l-ecu地址,monitor-canid)+系数+偏移量
                    for (int j = 0; j < resdbcList.Count; j++)
                    {
                        dbcGroupData.Append("\t\t" + '"' + resdbcList[j].Name + '"' + ",");
                        var dbcMsg = analysisDbcDataList.Find(dbc => dbc.DataAddress == resdbcList[j].DataAddress);
                        dbcGroupData.Append('"' + dbcMsg.Describle + '"' + ",");
                        dbcGroupData.Append('"' + resdbcList[j].Unit + '"' + ",");
                        dbcGroupData.Append(resdbcList[j].SaveDataType + ",");
                        dbcGroupData.Append(resdbcList[j].SaveDataLen + ",");
                        dbcGroupData.Append(resdbcList[j].IsMotorola + ",");
                        dbcGroupData.Append(resdbcList[j].StartIndex + ",");
                        dbcGroupData.Append(resdbcList[j].DataBitLen + ",");
                        dbcGroupData.Append(resdbcList[j].DataAddress + ",");
                        dbcGroupData.Append(resdbcList[j].Factor + ",");
                        dbcGroupData.AppendLine(resdbcList[j].OffSet + ",");
                    }
                    dbcGroupData.AppendLine("};");

                    LogHelper.Log.Info("DBC开始写入数据!");
                    allDbcGroupData.Add(dbcGroupData);
                    LogHelper.Log.Info("DBC写数据完成!");
                }

                //写数据
                WriteData.WriteString(allDbcGroupData, targetPath);
            }
            catch (Exception ex)
            {
                LogHelper.Log.Info(ex.Message + ex.StackTrace);
            }
        }
Example #3
0
        private static void AddDBCDetailGroup(string targPath)
        {
            StringBuilder sbExInfo = new StringBuilder();

            sbExInfo.Append(EXINFO_TYPE_HEAD);
            sbExInfo.AppendLine(EXINFO_FUN_NAME_CAN2 + EXINFO_TYPE_METHOLD_NAME);
            //sbExInfo.AppendLine("\t\t0" + "," + "0" + "," + "0" + ",");
            //sbExInfo.AppendLine("\t\t1" + "," + "0" + "," + "0" + ",");
            for (int i = 0; i < frameIdList.Count; i++)
            {
                var    resdbcList  = acturalDBCList.FindAll(dbc => dbc.DataAddress == frameIdList[i]);
                string metholdName = DBC_DEATIL_METHOLD_NAME + "_" + frameIdList[i];
                sbExInfo.AppendLine($"\t\t{(int)ExInfoType.MORNITOR_TAB_TYPE},(uint32_t){metholdName},{resdbcList.Count},");
            }
            sbExInfo.AppendLine("};");
            WriteData.WriteString(sbExInfo, targPath);
        }
Example #4
0
        /// <summary>
        /// 导出a2l与dbc文件到本地
        /// </summary>
        public static void ExportCanFile(string targetPath, string excutePath, GridExportContent gridExportContent)
        {
            //判断是否选择CAN
            //选择CAN后是否有数据
            //有数据后,是否有选择要执行的行
            stringBuilderHead = new StringBuilder();
            File.Delete(targetPath);
            stringBuilderHead.AppendLine($"#include\"datatype.h\"");
            WriteData.WriteString(stringBuilderHead, targetPath);

            if (gridExportContent.CurrentSelectCanType == CurrentCanType.CAN1)
            {
                //是否加载数据
                if (gridExportContent.GridViewCan1.RowCount < 1)
                {
                    MessageBox.Show("CAN1通道没有可导出的数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    File.Delete(targetPath);
                    return;
                }
                //是否选择数据
                if (gridExportContent.AgreementTypeCan1 == AgreementType.CCP || gridExportContent.AgreementTypeCan1 == AgreementType.XCP)
                {
                    //判断CAN1是否有数据
                    if (gridExportContent.GridDataA2lSelectRow.LimitTimeList10ms.Count < 1 && gridExportContent.GridDataA2lSelectRow.LimitTimeList100ms.Count < 1)
                    {
                        MessageBox.Show("CAN1通道未选择导出数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        File.Delete(targetPath);
                        return;
                    }
                    ExportXCP(targetPath, gridExportContent.GridViewCan1, gridExportContent.GridDataA2lSelectRow, gridExportContent.XcpDataCan1);
                }
                else if (gridExportContent.AgreementTypeCan1 == AgreementType.DBC)
                {
                    if (gridExportContent.GridDataDbcSelectRow.DbcCheckIndex.Count < 1)
                    {
                        MessageBox.Show("CAN1通道未选择导出数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        File.Delete(targetPath);
                        return;
                    }
                    ExportDBC(targetPath, gridExportContent.GridViewCan1, gridExportContent.GridDataDbcSelectRow, gridExportContent.XcpDataCan1, gridExportContent.AnalysisDataCan1);
                }
            }
            else if (gridExportContent.CurrentSelectCanType == CurrentCanType.CAN2)
            {
                //是否有数据
                if (gridExportContent.GridViewCan2.RowCount < 1)
                {
                    MessageBox.Show("CAN2通道没有可导出的数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    File.Delete(targetPath);
                    return;
                }
                //是否选择数据
                if (gridExportContent.AgreementTypeCan2 == AgreementType.CCP || gridExportContent.AgreementTypeCan2 == AgreementType.XCP)
                {
                    //判断CAN2是否有数据
                    if (gridExportContent.GridDataA2lSelectRow.LimitTimeList10ms.Count < 1 && gridExportContent.GridDataA2lSelectRow.LimitTimeList100ms.Count < 1)
                    {
                        MessageBox.Show("CAN2通道未选择导出数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        File.Delete(targetPath);
                        return;
                    }
                    ExportXCP(targetPath, gridExportContent.GridViewCan2, gridExportContent.GridDataA2lSelectRow, gridExportContent.XcpDataCan2);
                }
                else if (gridExportContent.AgreementTypeCan2 == AgreementType.DBC)
                {
                    if (gridExportContent.GridDataDbcSelectRow.DbcCheckIndex.Count < 1)
                    {
                        MessageBox.Show("CAN2通道未选择导出数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        File.Delete(targetPath);
                        return;
                    }
                    ExportDBC(targetPath, gridExportContent.GridViewCan2, gridExportContent.GridDataDbcSelectRow, gridExportContent.XcpDataCan2, gridExportContent.AnalysisDataCan2);
                }
            }
            else if (gridExportContent.CurrentSelectCanType == CurrentCanType.CAN1_CAN2)
            {
                //是否有数据
                if (gridExportContent.GridViewCan1.RowCount < 1)
                {
                    MessageBox.Show("CAN1通道没有可导出的数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    File.Delete(targetPath);
                    return;
                }
                if (gridExportContent.GridViewCan2.RowCount < 1)
                {
                    MessageBox.Show("CAN2通道没有可导出的数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    File.Delete(targetPath);
                    return;
                }
                //是否选择数据
                if (gridExportContent.AgreementTypeCan1 == AgreementType.CCP || gridExportContent.AgreementTypeCan1 == AgreementType.XCP)
                {
                    //判断CAN1是否选择数据
                    if (gridExportContent.GridDataA2lSelectRow.LimitTimeList10ms.Count < 1 && gridExportContent.GridDataA2lSelectRow.LimitTimeList100ms.Count < 1)
                    {
                        MessageBox.Show("CAN1通道未选择导出数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        File.Delete(targetPath);
                        return;
                    }
                    if (gridExportContent.AgreementTypeCan2 == AgreementType.CCP || gridExportContent.AgreementTypeCan2 == AgreementType.XCP)
                    {
                        if (gridExportContent.GridDataA2lSelectRow.LimitTimeList10ms.Count < 1 && gridExportContent.GridDataA2lSelectRow.LimitTimeList100ms.Count < 1)
                        {
                            MessageBox.Show("CAN2通道未选择导出数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            File.Delete(targetPath);
                            return;
                        }
                        //xcp+xcp待验证
                        ExportXCP(targetPath, gridExportContent.GridViewCan1, gridExportContent.GridDataA2lSelectRow, gridExportContent.XcpDataCan1);
                        ExportXCP(targetPath, gridExportContent.GridViewCan2, gridExportContent.GridDataDbcSelectRow, gridExportContent.XcpDataCan2);
                    }
                    else if (gridExportContent.AgreementTypeCan2 == AgreementType.DBC)
                    {
                        if (gridExportContent.GridDataDbcSelectRow.DbcCheckIndex.Count < 1)
                        {
                            MessageBox.Show("CAN2通道未选择导出数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            File.Delete(targetPath);
                            return;
                        }
                        ExportDBCXCP(targetPath, gridExportContent);
                    }
                }
                else if (gridExportContent.AgreementTypeCan1 == AgreementType.DBC)
                {
                    //判断CAN1是否有选择数据
                    if (gridExportContent.GridDataDbcSelectRow.DbcCheckIndex.Count < 1)
                    {
                        MessageBox.Show("CAN1通道未选择导出数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        File.Delete(targetPath);
                        return;
                    }
                    if (gridExportContent.AgreementTypeCan2 == AgreementType.CCP || gridExportContent.AgreementTypeCan2 == AgreementType.XCP)
                    {
                        if (gridExportContent.GridDataA2lSelectRow.LimitTimeList10ms.Count < 1 && gridExportContent.GridDataA2lSelectRow.LimitTimeList100ms.Count < 1)
                        {
                            MessageBox.Show("CAN2通道未选择导出数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            File.Delete(targetPath);
                            return;
                        }
                        ExportDBCXCP(targetPath, gridExportContent);
                    }
                    else if (gridExportContent.AgreementTypeCan2 == AgreementType.DBC)
                    {
                        if (gridExportContent.GridDataDbcSelectRow.DbcCheckIndex.Count < 1)
                        {
                            MessageBox.Show("CAN2通道未选择导出数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            File.Delete(targetPath);
                            return;
                        }
                        //待验证
                        ExportDBC(targetPath, gridExportContent.GridViewCan1, gridExportContent.GridDataDbcSelectRow, gridExportContent.XcpDataCan1, gridExportContent.AnalysisDataCan1);
                        ExportDBC(targetPath, gridExportContent.GridViewCan2, gridExportContent.GridDataDbcSelectRow, gridExportContent.XcpDataCan2, gridExportContent.AnalysisDataCan2);
                    }
                }
            }
            else
            {
                //未选择CAN
                MessageBox.Show("没有可导出的数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            //导出完成后执行.bat
            //var batName = ConfigurationManager.AppSettings["batName"].ToString();
            //if (batName == "")
            //    batName = "xcpmake.bat";
            //if (!File.Exists(excutePath + batName))
            //    return ;
            //var executeResult = true;//=  Execute.ExecuteApply(excutepath, batName);
            //if (executeResult)
            //{
            //    if (MessageBox.Show("已成功生成DLL,是否打开DLL路径!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
            //    {
            //        System.Diagnostics.Process.Start(excutePath);//仅打开文件目录
            //        //System.Diagnostics.Process.Start("Explorer", "/select," + excutepath + "\\" + batName);//打开目录,定位文件
            //    }
            //}
            //else
            //{
            //    MessageBox.Show("生成DLL失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            //}
        }
Example #5
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 #6
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);
        }