适合人群:

本课程适合具有C#语言基础的中级程序员学习,可以提升编程能力,迈向高级工程师及软件架构师。课程以实战的方式,从上位机软件构架,模块化抽象,业务开发,串口与网络编程,多线程编程,MVVM模式实战。

你将会学到:

你将对上位机开发的架构、业务、模块抽象、串口和网口编程得到更加深入的理解和掌握。

课程简介:

本课程是一个实战课程,将演示C#+WPF+Prism+ReactiveUI+EF+MSSQL+串口编程等相关知识,掌握上位机软件架构及模块化编程等相关知识。

本项目的亮点是演示了如何抽象一个反应釜硬件设备,因为这类非标设备内部包含了多个部件,不同的部件拥有不同的通讯方式和通讯模块,如何将它们以接口的方式抽象并独立出来,写到模块当中,并编写类型去继承硬件接口,实现通讯和业务功能,是本项目要解决的一大难点。通过本课程的学习,您将学会市面上常见的非标设备的上位机软件开发,并写出具有高内聚、低耦合、易扩展的软件。

本课程在开发硬件模块时,采用了模拟的硬件,所以不需要真实硬件,但是将串口和网口的通讯编程都完整的进行了演示,因为本课程所演示的项目来自于一个商用的反应釜控制系统。

反应釜在进行操作时,需要控制电机的转速、加料泵、监控温度变化,以作业流程的方式进行操作,而且本项目是一个双反应釜控制系统,有些硬件模块被两个反应釜共同所有,这在一定程度上,增加了抽象的难度。如何巧妙地在业务层实现反应釜的监测和控制,也是本项目值得学习的重点。

硬件模块化开发课程目录

1—10

1001 硬件模块化分
2002 Prism 区域管理和模块定义
3003 Prism 项目创建与安装
4004 Prism 应用的启动流程分析
5005 系统分层
6006 应用层包括哪些模块
7007 核心层和硬件层包括哪些模块
8008 Nuget 安装组件包
9009 配置模块目录
10010 定义区域及事件触发器

11—20

11011 依赖注入方式获取 IOC 中的模块管理器对象
12012 资源字典
13013 程序集与命名空间改名字的注意事项
14014 Font 字库导入到资源并引用
15015 登录界面 UI 布局与 Style 设置字号
16016 安装使用 Mahapps 主题包
17017 Prism 框架的事件聚合器使用
18018 硬件初始化界面 UI 布局
19019 创建硬件生命周期管理类
20020 调用硬件生命周期管理器

21—30

21021 进入主模块
22022 编写自定义特性
23023 扩展 IContainerRegistry
24024 扩展 IContainerProvider
25025 使用 IOC 容器实例化功能
26026 RadioButton 图文按钮样式
27027 Button 图文按钮样式
28028 Button 图标按钮样式
29029 窗体的最小化最大化关闭
30030 PrismProvider 类

31—40

31031 创建反应釜硬件模块
32032 创建反应釜类型及配置参数
33033 初始化反应釜硬件模块
34034 Bug 排查方式及系统配置模块
35035 导航到配置模块界面
36036 JSON 序列化处理
37037 JSON 文件读写
38038 子类必须实现父类的抽象成员
39039 串口和网口的实例化和连接
40040 Modbus 协议的内容分析

41—50

41041 Modbus 协议的数据解析
42042 硬件加载与硬件卸载
43043 创建首页和用户 Session 会话
44044 加载主模块后再显示首页
45045 系统设置页面的 XAML 代码布局
46046 ComboBox 控件数据绑定用法
47047 Config 配置参数保存至本地 json 文件
48048 创建 Reactor 反应釜模块
49049 两个反应釜实体类如何共用一个 View 界面
50050 ViewBox 控件的用途

51—60

51051 Path 路径控件与 CheckBox 控件 Style
52052 Path 路径控件绘制反应釜组态图-1
53053 Path 路径控件绘制反应釜组态图-2
54054 ListBox 样式开发
55055 反应釜流程参数
56056 ListBox 控件的 DataTemplate
57057 ListBox 数据绑定和 Button 样式开发
58058 IValueConverter 转换器接口
59059 枚举与画刷转换器的开发
60060 布尔与枚举转换器的开发

61—70

61061 ListBox 控件子元素绑定 Command
62062 WhenAnyValue 观察用法
63063 开发本地缓存模块
64064 调用本地缓存模块
65065 反应釜的绑定切换
66066 温度控制模块接口开发
67067 温度控制模块子类开发
68068 温度控制模块参数配置及初始化
69069 温度控制模块数据接收与解析
70070 温度控制模块数据解析与指令发送

71—80

71071 PID 参数设置界面布局
72072 创建 PID 参数实体和服务类
73073 PID 参数实现本地缓存
74074 NLOG 组件的安装、配置和使用
75075 反应釜工作过程概述
76076 Listbox 数据绑定和观察者模式应用
77077 PID 参数应用
78078 加热制冷指令 Modbus 协议拼接协议
79079 实现加热制冷业务功能
80080 实现加热制冷业务功能-2

81—90

81081 实现加热制冷业务功能-3
82082 硬件模块的状态显示切换
83083 IOC 依赖注入时不可以在构造函数中注入本身
84084 增加电机运动控制模块
85085 实现电机运动控制模块的接口
86086 实现电机运动模块的消费线程
87087 以 Modbus 协议实现电机的运动控制
88088 实现电机控制应用层的布局
89089 完成电机正转反转和停止的功能开发
90090 抽象加料泵的硬件接口和接口继承

91—100

91091 完成加料泵子类的初始化和参数设置
92092 完成加料泵接收线程和发送线程业务
93093 Popup 弹出控件和使用和 Button 样式开发
94094 完成应用层对加料泵硬件控制调用
95095 加料泵的加料业务处理
96096 数据库课程-抽象数据库的业务接口,创建实体基类
97097 数据库课程-实现 User 表的接口和子类开发
98098 数据库课程-用户登录和插入一条新记录
99099 数据库课程-讲解 CodeFirst 创建数据库
100100 开发数据表的增删改查功能

101—108

101101 写入实验过程中的数据到数据库
102102 写入实验结束时间到数据库
103103 创建历史数据查询模块
104104 实验历史数据查询界面布局开发
105105 实验历史数据查询业务开发
106106 实验历史数据导出 CSV 文件
107107 LiveCharts 的 LineSeries 前端
108108 LiveCharts 曲线报表开发(大结局)