一、前言
作为上位机开发系列的第一篇文章,先介绍一些总体宏观性的东西。
1 问题引入
在EPS转向中,ECU的标定是一个必要性的工作,目前在行业内最标准的标定工具以及软件是Vector的工具链,VX1000系列设备和对应的软件CANape,但是vector的工具并不是免费的,同时想要使用vector的工具那么也意味着项目的开发要符合AUTOSAR的架构,因为CANape的标定是基于XCP协议的,在autosar的开发工具链中,对于XCP协议有模块化的集成。
基于以上原因,很多小企业选择了开发自己的上位机来实现标定的工作,开发上位机的方式有两种选择,QT或者C#,QT是基于C++的一套框架,C#衍生于C和C++,使用上两者应该是差不多,但是因为C#是基于net框架的语言,在桌面开发上有更好的实用性,所以主要是以C#来开发为主。
基于C#来开发的话,又分为两套框架,一套是WPF框架,一套是winform框架,WPF用起来比winform难一点,但是功能也更强大,我为了尽快做出来,所以当前选择了winform的框架来开发,后期有时间的话,可能会选择再以WPF来进行开发。
2 功能分解
我的上位机程序具体要实现哪些功能?
- 程序下载(通过bootloader下载程序)
- 数据标定(写数据及读数据)
- UDS故障诊断(故障码的相关操作)
主要功能就是以上三点,下面基于主要功能的分解细化一下需求
- 通过winform框架实现一个UI界面,用来做交互
- 因为要实现下载和诊断,所以必须要集成UDS协议,这些功能的规范流程都是基于UDS协议的,包括ISO14229应用层和ISO15765网络层
- 对于通信设备(CAN/CANFD等等)的驱动
- 数据的解析,对于HEX文件或S19文件的解析
二、具体功能
1、界面基础控件初始
2、CAN设备实现基本通信功能
3、HEX文件与S19文件的解析
4、在CAN通信的基础上加入15765网络层
5、14229应用层与上位机开发
6、下载流程的实现
7、标定数据表的导入导出
8、graph图像显示