手把手教你写上位机软件(c#、winform)

手把手教你写上位机软件(c#、winform)_第1张图片

一、需求分析
在自动化行业中的上位机软件类型一般分为以下几种:
1、组装设备的上位机软件
该类型的软件一般有以下功能:
1)和PLC通信;
2)和相机通信,界面显示图片以及通过图像算法获取算法计算结果;
3)各种参数开放到界面可设置;
4)数据的保存,将数据以csv、txt等格式进行保存;
5)日志用于问题分析
2、测试设备的上位机软件
该类型的软件一般有以下功能:
1)和PLC通信;
2)和各种仪器通信,比如距离传感器、流量传感器、压力传感器等,通信方式为串口通信、USB通信、Tcp通信,曲线显示数据;
3)各种参数开放到界面可设置;
4)数据的保存,将数据以csv、txt等格式进行保存;
3、运动控制软件
1)直接通过运动控制卡来控制电机,所以不需要和PLC通信,常见控制卡为固高、研华、雷赛、凌华、翠欧等;
2)和相机通信,界面显示图片以及通过图像算法获取算法计算结果;
3)和各种仪器通信,比如距离传感器、流量传感器等,通信方式为串口通信、USB通信、Tcp通信、曲线显示数据;
4)各种参数开放到界面可设置;
5)数据的保存,将数据以csv、txt等格式进行保存;

本文这里以测试设备软件为例子介绍上位机软件开发的过程:
软件要求:
1)需要使用手动扫码枪扫码,条码需要和最后的测试压力值绑定并存储到报表;
1)该测试设备需要测试某个压力传感器在某个时间段内的压力的最大值,开始测试信号和结束信号由PLC给上位机(由于没有PLC,这里的开始信号和结束信号通过界面的开始和结束按钮来代替);
2)需要使用曲线显示这段时间的压力(由于没有压力传感器,这里使用随机数来产生压力值);
3)使用报表存储原始数据,以及最大压力以及条码;
4)界面需要显示测试状态,不测试时为“等待状态”,测试过程中为“测试中”,测试结束为“测试完成”,并且如果测试收到测试开始信号一分钟后没有收到结束信号的话,测试状态需要变成报警,并且软件要停止测试以防止内存中数据过多引起软件崩溃。
二、软件开发
1)新建一个DataGrab类用于数据的采集;
2)新建一个DataHandle类用于数据的处理以及和PLC信号的交互;
3)新建一个DataDisplay类用于曲线的显示;
4)新建一个Report类用于报表数据的存储;
5)TableDisplay类用于界面上表格的显示;
6)新建一个LogHelper类用于日志的记录;
7)新建一个ParameterSetting文件夹,里面存储参数设置的类
8)新建主界面MainForm类;
工程界面如下:
手把手教你写上位机软件(c#、winform)_第2张图片
部分代码展示:
手把手教你写上位机软件(c#、winform)_第3张图片

三、软件操作过程
第一步、设置条码长度和压力的上限和下限
第二步、输入条码,按下“回车键”,如果条码长度不对则弹出条码长度错误提示,并且无法进行下一步;
第三步、条码输入Ok后,点击“开始”按钮(模拟接收到PLC的开始采集信号)
第四步、点击“停止”按钮(模拟接收到PLC的结束采集信号)
第五步、观察界面压力曲线、表格中最大压力的显示、报表中最大压力以及条码的显示、原始数据报表中包含的采集过程中所有原始数据、Log日志。

手把手教你写上位机软件(c#、winform)_第4张图片
手把手教你写上位机软件(c#、winform)_第5张图片
手把手教你写上位机软件(c#、winform)_第6张图片
四、总结
该软件包含了自动化行业测试设备上位机软件的绝大部分功能如下:
1)键盘按键事件处理用于条码扫描;
2)曲线的显示;
3)报表的存储;
4)跨线程更新UI;
5)表格的使用(datagridview控件);
6)Log日志的使用;
7)参数的设置与保存(序列化保存参数);
8)状态机的使用(利用委托实现不同状态之间的切换);
9)Task的使用。
掌握了以上技术,在工作中应付常规的自动化行业的测试软件都可以。
如果需要工程源码的话,请私信~
上位机软件开发必不可少的技能是界面开发,上位机中使用最多的又是winform,本人经过多年积累,打造了适合小白以及有经验的工程师的winform入门与精通教程 ,带您系统学习winform界面开发技术,详情见我的博客专栏《winform控件从入门到精通》,更多控件的访问链接如下:
点击链接即可转到该控件的详细介绍==:

1、Winform控件开发(1)——Label(史上最全)

2、Winform控件开发(2)——Button(史上最全)

3、Winform控件开发(3)——Form(史上最全)

4、Winform控件开发(4)——Textbox(史上最全)

5、Winform控件开发(5)——checkBox(史上最全)

6、Winform控件开发(6)——radioButton(史上最全)

7、Winform控件开发(7)——ComboBox(史上最全)

8、Winform控件开发(8)——richTextBox(史上最全)

9、Winform控件开发(9)——ListBox(史上最全)

10、Winform控件开发(10)——CheckedListBox(史上最全)

11、Winform控件开发(11)——numericUpDown(史上最全)

12、Winform控件开发(12)——LinkLabel(史上最全)

13、Winform控件开发(13)——DateTimePicker(史上最全)

14、Winform控件开发(14)——NotifyIcon(史上最全)

15、Winform控件开发(15)——contextMenuStrip(史上最全)

16、Winform控件开发(16)——Timer(史上最全)

17、Winform控件开发(17)——PictureBox(史上最全)

18、Winform控件开发(18)——Chart(史上最全)

19、Winform控件开发(19)——DataGridView(史上最全)

20、Winform控件开发(20)——TableLayoutPanel(史上最全

21、Winform控件开发(21)——ProgressBar(史上最全)

22、Winform控件开发(22)——Panel(史上最全)

23、Winform控件开发(23)——FlowLayoutPanel(史上最全)

24、 Winform控件开发(24)——GroupBox(史上最全)

25、Winform控件开发(25)——SplitContainer(史上最全)

26、Winform控件开发(26)——TabControl(史上最全)

你可能感兴趣的:(c#,winform控件从入门到精通,c#)