汽车工程师眼中的C#

本文转载在我的微信公众号:古德曼汽车工业。

希望关注本专栏的朋友,也能一并关注微信公众号。

原文地址:汽车工程师眼中的C#​

背景

不少读者问过【思想】,公众号里的工具都是用什么编写的。答案就是C#。那么本期内容就是聊下C#,内容涉及C#的介绍、C#在汽车行业中的运用、分享【思想】的学习经历与C#视频教程,希望能给这个行业想学编程的工程师提供个思路。

前言

先从【思想】是如何结识C#的,那应该是大一,【思想】刚完成C语言的学习后就对编程有了很大的兴趣。所以就自学了C++,想做一些带界面的Windows程序。由于【思想】大学学的是机械设计与自动化,没系统的学习过数据结构这类的专业课,内存管理经常没做好,内存溢出等错误让【思想】差点放弃学习,后来在一位妹子的推荐下接触了C#,才挽回了一点信心。

C#是什么?

C#读作CSharp,它是微软.NET框架的其中一种与语言形式。起初的.NET框架编译器支持C#与VB,NET两种语言,C#的语法继承了C/C++,VB.Net则继承了VB。

与Java、C++等一样,C#也是一种面向对象的编程语言。C#对学过C/C++语言的朋友是比较友好的,所以受众群体也比较广一点。现在主流的Windows系统(Win7以上版本)默认都支持.Net4.0,基本开发出来的程序也不需要额外的安装运行库,可直接运行。

C#的官方开发环境就是宇宙最强IDE-VisualStudio。目前最新版已经出到2019,但是安装后的体积很大。简易想学习的可以安装比较早期的版本,推荐使用2015版。可以支持大家使用C#开发可执行文件(EXE),动态链接库(DLL),甚至网页程序。

说了这么多,C#相较于C++到底有什么优势与不足呢?之前介绍过为什么【思想】结识了C#,这里就详细说说:在开发比较复杂的程序时,为什么要搭建数据结构。

举个例子:在学习C语言的数组功能时,就直接int a[10]这么一个语句就搞定了。但是实际上我们希望数组的长度是动态的。这里就要用到链表、堆栈、列队等数据结构,同时我们还要对这些数据结构多排序检索等操作。这就需要程序员频繁对内存控件进行操作。

这就很容易出现问题,上图这样内存错误的情况也成为家常便饭。当时【思想】学习C++的时候也经常因为这种内存错误哭晕在厕所。

所以,【思想】个人认为C#最棒的优点就是它已经封装了非常丰富的数据结构,在编程时可以直接调用。复杂的数据结构问题,微软的工程师已经帮大家考虑好了。当然【思想】认为无法直接访问内存也是他的劣势,比如做CAN通讯,Socket通讯经常要操作结构体,在这方面C#并不够灵活。

C#在汽车行业中的应用

C#在汽车行业中的应用,有大一部分都是在电控系统开发工具的制作上。例如,开发一款控制器的同时,还需要设计一个上位机工具,用于开发及生产的阶段调试、售后故障诊断、程序的烧写、数据标定等。

图片来源网络

C#的应用,让汽车工程只需要考虑自己专业方面的逻辑,复杂的数据结构完全可以托管给.net编译器,这样做出来的程序相对稳定,开发速度也比较快。

另外,如果觉得C#的官方控件太过单一,也可以使用一些比较适合汽车领域的第三方控件,例如NI、Dotnetbar这类第三方控件,能够迅速的提高用户界面的品质,上图为NI国家仪器提供的第三方工业风格控件。

思想作品介绍

下面介绍一下【思想】开发的一些小工具,有一部分已经在之前的文章有过详细解析,还有一部分由于种种原因还没能跟大家见面,这里先预告一下,厉害的都会有的。

底层与逻辑层交互接口生成工具

之前提到过的底层与逻辑层交互接口生成工具,导入DBC与IO输入表,可以大大缩短人工写代码的工作量。目前工具还处于开发阶段,具体生成的原理可以留意文章下方的推荐阅读。

DBC与EXCEL转换工具

实现DBC文件与Excel表格文件的自由转换,详细的功能介绍可以看下之前的文章:Excel与DBC文件的互相转换

CAN总线分析工具

后续古德曼汽车工业也会推出基于C#与周立功CAN卡组成的总线分析工具,目前处于测试阶段,敬请期待!大致功能就是在线通过dbc文件解析报文信息,并通过图形形式呈现,类似一个简易的CANoe。

AVL-CRUISE自动化后处理工具

由于【思想】之前从事了一段时间的动力经济性仿真,也基于C#开发出了AVL-CRUISE自动化后处理工具,它可以自动的收集CRUISE仿真工程的参数与结果,自动归档到数据库。这个工具的功能已经十分完善,但是由于当前的数据保密,暂时还不能和大家见面。

最后

最后分享一下【思想】的学习方法。那就是在工作中学习,在折腾中学习。【思想】是一个非常爱折腾的人,应该可以称极客了,经常折腾一些朋友都不清楚干嘛的东西。也做过不少小东西,在这过程中学习了不少知识。除了折腾过C、C++、C#之外还学习过HTML、JavaScript、CSS、PHP,数据库也玩过ACCESS、Mssql、Mysql。也编写过自己的网站程序(可以在【原文链接】访问),分享自己的折腾经历。【思想】希望分享自己的学习方法,帮助到想自我学习的朋友们,希望大家也能够尝试下。

推荐阅读

①-Excel与DBC文件的互相转换

②-CRUISE与Isight联合仿真优化

③-Simulink代码生成应用教程

④-工况路普的采集与数据处理

⑤-混合动力节油的秘密-发动机万有特性

⑥-AVL-CRUISE纯电动仿真策略提高教程

⑦-燃料电池车(FCHEV)动力经济性建模与仿真

你可能感兴趣的:(汽车工程师眼中的C#)