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); } }
/// <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); //} }