
我选C# 中的 WinForm,简单上手快,维护起来成本低。
C# 是一门用了都说好的编程语言。
十几年前,我在做上位机开发的时候,当年有两个朋友也在做这行,一个用VS2008开发,一个用VC6.0开发,我仔细研究了他们的代码,经过我的综合分析。最后我选择了用 VS2008 的C# 进行开发。
一、我选择 C# 的原因
1、技术原因
1)C# 的图形界面,采用拖拉拽的形式就能完成,比VC6.0 要快捷。
2)VC6.0 我也用过,但是上学的时候让我产生了阴影,不想继续使用。
3)我用过 Delphi 7、VB6.0以及学习过java ,感觉 C# 与之前用的三种语言相似度高。
综上原因,当时我选择了用 C#,边学边开发,当时用了2周多的时间,就完成了第一个上位项目的开发,当时由于是在十一期间完成了,技术总监非常满意我的进度,还向老板申请了几千块钱作为奖金。
2)意识原因
当时我们选择的工控机是 Windows 系统,在我的理解是 Windows 系统是微软开发的,里面很多驱动程序,dll,也是都C语言开发的,C#语言是微软开发的,都是来自微软,兼容性会更好,所以选择了C#。
现在想想这个原因比较牵强,但已经选择了,就没有改变。
二、开发框架的选择
在 C# 中开发上位机软件,主要是图形化的界面,图形化的应用开发,也有两个框架可以进行选择,一个WinForm,一个是WPF。
关于这两个框架的选择,如果项目不复杂,我建议选择 WinFrom,我有个专门的回答,感兴趣的同学可以去看看。
在我的项目中,90% 的项目选择的是 WinFrom。
三、C# 上位机软件的架构
上位机软件的一个特点就是,上位机软件是C/S 式的架构,上位机工程师主要负责 C 端,C 端的内容包括,5个方面:
关于上位机软件怎么学习,可以参考这篇回答
四、学上位机软件用买硬件嘛?
我建议是不买,上位机的学习过程中,涉及到与下位机、设备进行通信。其实说白了,就是串口、网口、IO口、U口进行通信。
在C#中串口的操作可以通过一个控件来完成,网口就是读取一个IP上传来的数据,而且串口和网口是可以通过软件来模拟的。
U口和IO的通信一般是通过接口进行完成,这个供货商会提供相应的demo。
关于这个问题,我有一篇详细的回答,可以参考。
四、C# 是一门用了都说好的语言,我建议你选择这个
C# 的技术栈比较齐全,即使哪天不做上位机了,还有其他的选择。
C# 的生态系统完善,未来的选择多。
C# 是 .Net 的重要组成部分,.Net 开发者社交区活跃
五、上位机好做,就是太不容易
上位机无论是开发还是实施,难度不是很大,不过出了问题就不好解决,因为上位机软件是与下位机进行通信的,无论是接收数据还是收发指令,很多都是异步进行的,一旦发生问题,复现是很难的,在开发测试过程中一定要考虑到这种情况,做好日志收集,做好异常控制。
此外,上位机软件工程师,经常要出差,进行客户现场测试,需要家人的支持。
不过上位机进阶路线也挺清晰,未来的发展方向可以是技术主管、项目经理、技术总监等,我就是从一个上位机工程师,成长起来的技术总监。
以上,我做上位机时的感受,我做上位10几年,如果您对上位机的其他方面感兴趣,欢迎留言讨论。
