首页 > 其他分享 >CANoe_CDD_DTC_Excel辅助导入工具

CANoe_CDD_DTC_Excel辅助导入工具

时间:2024-09-13 22:51:47浏览次数:9  
标签:CDD string CANoe DTC Text model tB

1、工具背景介绍

        Vector CANDelaStudio10 中关于DTC使用Vector提供的标准模板可以快速导入DTC,这个方面可以自行百度学习。今天我们介绍在拿到客户的诊断问卷调查表之后,将相关信息快速导入到模板Excel然后再导入到CDD中。

2、工具UI

1、诊断问卷中调取的规则

2、打开诊断问卷导入内容

3、处理数据,将异常数据剔除,同时处理数据

4、选择导出的文件夹

5、导出Excel

3、代码
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CANoeHelperTool
{
    public partial class CDDExcelToDTC : Form
    {
        #region 初始化方法
        public CDDExcelToDTC()
        {
            InitializeComponent();
            tB_OpenDiag.Text = GetDesktopPath();
            tB_CDD_Import.Text = GetDesktopPath();
            cDDExcelToDTCDAL = new CDDExcelToDTCDAL();
        }
        CDDExcelToDTCDAL cDDExcelToDTCDAL;
        #endregion

        #region 数据处理
        List<Model_CDD_DTC_Import> model_CDD_DTC_Imports;
        private async void bt_Open_ClickAsync(object sender, EventArgs e)
        {
            string filePath = null;
            string sheetName = null;
            string display = null;
            string lByte = null;
            string description = null;

            // 在UI线程中获取控件的值
            this.Invoke((MethodInvoker)delegate
            {
                tB_OpenDiag.Text = SelectFile(tB_OpenDiag.Text);
                filePath = tB_OpenDiag.Text;
                sheetName = cB_SheetName.Text;
                display = cB_Display.Text;
                lByte = cB_LByte.Text;
                description = cB_Description.Text;
            });

            if (string.IsNullOrEmpty(filePath))
            {
                return;
            }

            try
            {
                // 使用后台线程获取Excel数据
                model_CDD_DTC_Imports = await Task.Run(() =>
                {
                    return cDDExcelToDTCDAL.GetExcelModels_DTC_01(filePath, sheetName, display, lByte, description);
                });

                // 在UI线程更新DataGridView
                this.Invoke((MethodInvoker)delegate
                {
                    cDDExcelToDTCDAL.UpdateDataGridView(this.dataGridViewData, model_CDD_DTC_Imports);
                });
            }
            catch (Exception ex)
            {
                // 处理异常情况,例如输出错误日志或提示用户更新失败
                MessageBox.Show("获取Excel数据时发生异常:" + ex.Message);
            }
        }

        List<Model_CDD_DTC_Import> model_CDD_DTC_Imports02;
        private void bt_DoData_Click(object sender, EventArgs e)
        {
            string pattern = @"^[UC]\w{6}$";
            model_CDD_DTC_Imports02 = cDDExcelToDTCDAL.FilterDTCByPattern(model_CDD_DTC_Imports, pattern);
            // 在UI线程更新DataGridView
            this.Invoke((MethodInvoker)delegate
            {
                cDDExcelToDTCDAL.UpdateDataGridView(this.dataGridViewData02, model_CDD_DTC_Imports02);
            });
        }

        private void bt_CDD_Import_Click(object sender, EventArgs e)
        {
            tB_CDD_Import.Text = SelectFolder(tB_CDD_Import.Text);
        }

        private void bt_OutExcel_Click(object sender, EventArgs e)
        {
            if (model_CDD_DTC_Imports == null)
            {
                MessageBox.Show("model_CDD_DTC_Imports 未实例化或者为空");
            }

            if (cDDExcelToDTCDAL.OutExcel(model_CDD_DTC_Imports02, tB_CDD_Import.Text + tB_OutputExcelName.Text))
            {
                if (cDDExcelToDTCDAL.SetExcelStyle_01(tB_CDD_Import.Text + tB_OutputExcelName.Text, "DTC"))
                {

                    MessageBox.Show("导出Excel成功");
                }
                else
                {
                    MessageBox.Show("导出Excel失败");
                }
                //MessageBox.Show("导出Excel成功");
            }
            else
            {
                MessageBox.Show("导出Excel失败");
            }
        }
        #endregion

        #region 共用方法
        private string GetDesktopPath()
        {
            string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            return desktopPath;
        }

        public static string SelectFolder(string defaultFolderPath)
        {
            FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
            folderBrowserDialog.SelectedPath = defaultFolderPath;

            DialogResult result = folderBrowserDialog.ShowDialog();

            if (result == DialogResult.OK)
            {
                return folderBrowserDialog.SelectedPath;
            }
            else
            {
                return null;
            }
        }

        public static string SelectFile(string defaultFilePath)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.InitialDirectory = defaultFilePath;

            DialogResult result = openFileDialog.ShowDialog();

            if (result == DialogResult.OK)
            {
                return openFileDialog.FileName;
            }
            else
            {
                return null;
            }
        }
        #endregion
    }
}

4、CDD导入成功界面

5、后记

   后续出如何将诊断问卷导入到CDD,和如何解析CDD

标签:CDD,string,CANoe,DTC,Text,model,tB
From: https://blog.csdn.net/caoxuefei520/article/details/142151240

相关文章

  • 创建一个CANoe仿真工程之一--------CAPL编程,全仿真实战
    以demo002为例,整理思路control可以看做是控制器  display看做是显示器两者要建立联系1.引擎点火(钥匙往右拧开)同时小汽车显示灯要亮起来可以看到引擎开关关联的是系统变量,也就是打开开关,系统变量的值会发生变化,如果同时需要小汽车显示灯亮起来,那么就需要把系统变量的......
  • CANoe等工程文件夹批量化建立工具
    1、工具制作原因    个人在工作经历中,需要频繁建立文件夹,就设计一个配置文件夹建立工具,为了方便平时自己快速建立文件夹。然后后期方便自己能够再增加其他管控文件夹,并且使用自己的工具集合在一起,方便使用。2、实现UI3、配置文件使用ini文件配置你需要批量生成的......
  • AI创新,DataOps聚能 | 白鲸开源DTCC共话DataOps新篇章
    近日,由IT168联合旗下ITPUB、ChinaUnix两大技术社区主办的第15届中国数据库技术大会(DTCC2024)隆重召开。大会以“自研创新数智未来”为主题,吸引了数百位行业专家和广大数据领域从业者共聚这场年度数据库技术交流盛宴,共同探讨新时代下数据库的技术动态和应用实践。作为全球领先......
  • CANoe_UDS-boorloader 自动化测试系列(六)基本功能:CAPL实现bin文件数据解析
    CANoe_UDS-booroader自动化测试系列(一)创建一个CANoe测试工程(测试节点的选选择)CANoe_UDS-booroader自动化测试系列(二)基本刷写流程CANoe_UDS-booroader自动化测试系列(三)基本功能:CAPL实现UDS协议下的CAN报文接收#解析#发送CANoe_UDS-booroader自动化测试系列(四)基本功能:CAPL实......
  • DTC(Diagnostic Trouble Code)
    DTC(诊断故障码)是用于汽车和其他电子设备中的一种代码,旨在指示系统中存在的故障或问题。它是车辆自诊断系统(如OBD-II)生成的,用于帮助技术人员检测和解决故障。###DTC的组成1.**字母部分**:  -**P**:动力传动系统(Powertrain),包括发动机和变速器故障。  -**B**:车身(Body),......
  • Android CDD(兼容性定义文档)
    1.什么是AndroidCDDAndroid兼容性定义文档(CDD)列举了设备需要满足哪些要求才能与最新的Android版本兼容。也就是说每当Android新版本更新时,我们需要检查Android最新的CDD,保证我们的系统满足AndroidCDD的要求。设备实现必须满足此兼容性定义文档(包括以参考资料的形式纳入......
  • CANoe小白上手思路
    本文申明:2024.8.19无实操截图,皆在提供新建仿真工程思路,按个人需求根据CANoe明显的图标名称进行操作。操作环境:CANoe版本9.0.54,CANcase版本VN1610/30/40。新建工程和配置网络第一步:连上CANcase,打开CANoe,选择可用模板并创建配置新建工程,之后配置波特率。第二步:Mapping配......
  • CANoe_UDS-boorloader 自动化测试系列(二)基本功能:CAPL实现UDS协议下的CAN报文接收#解析
    目录一、前言二、CAPL实现1、报文接收接收报文函数:2、报文发送发送报文函数:三、总结展望一、前言halle,大家好,我是小鸟鹏。上篇文章《CANoe_UDS-boorloader自动测试系列(二)基本刷写流程》简单介绍了整Bootloader的基本刷写流程,包括具体使用哪些服务实现哪些功能,对......
  • 【CANoe制作DataBase(DBC文件)】
            本篇是CANoe使用制作DBC文件,DBC是DatabaseCan的缩写,其代表的是CAN的数据库文件,里面定义了CAN总线上有哪些CAN节点、每个节点各自发出什么CAN报文,每个报文下又有哪些信号,CAN总线不管是开发、测试还是分析,DBC文件都是必不可少的。目录        本篇......
  • 【技术分享】解决CANoe软件Trace窗口筛选栏空白问题
    引言在汽车电子开发领域,Vector公司提供的CANoe、CANape和CANalyzer软件是我们不可或缺的工具。然而,近期一些用户在更新了Windows系统后,遇到了Trace窗口筛选栏变白的问题。本文将分享一个实用的解决方案,帮助您快速恢复软件功能。问题描述7月11日,Windows系统推送了新的更新。......