Пример #1
0
 private static void ExportDBCXCP(string targetPath, GridExportContent gridExportContent)
 {
     if (gridExportContent.AgreementTypeCan1 == AgreementType.CCP || gridExportContent.AgreementTypeCan1 == AgreementType.XCP)
     {
         A2lDetailData(targetPath, gridExportContent.GridViewCan1, gridExportContent.GridDataA2lSelectRow);
         DbcDetailData(targetPath, gridExportContent.GridViewCan2, gridExportContent.GridDataDbcSelectRow);
         AddA2lDetailGroup(gridExportContent.GridDataA2lSelectRow, targetPath, gridExportContent.XcpDataCan1);
         AddDBCDetailGroup(targetPath);
         AddCanChInfo(targetPath, gridExportContent.XcpDataCan1, gridExportContent.AnalysisDataCan2, ProtocolType.ALL);
     }
     else if (gridExportContent.AgreementTypeCan1 == AgreementType.DBC)
     {
         A2lDetailData(targetPath, gridExportContent.GridViewCan2, gridExportContent.GridDataA2lSelectRow);
         DbcDetailData(targetPath, gridExportContent.GridViewCan1, gridExportContent.GridDataDbcSelectRow);
         AddA2lDetailGroup(gridExportContent.GridDataA2lSelectRow, targetPath, gridExportContent.XcpDataCan2);
         AddDBCDetailGroup(targetPath);
         AddCanChInfo(targetPath, gridExportContent.XcpDataCan2, gridExportContent.AnalysisDataCan1, ProtocolType.ALL);
     }
 }
Пример #2
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);
            //}
        }