该项目是一个基于 Zigbee 的生态养猪场信息管理系统,仅含上位机和网站部分。
说明:当时命名时匆忙将 MIS 写成了 GIS,后便一直使用该名称。
整个项目并没有什么亮点,就是简单的串口读取数据,保存到数据库中,网页显示;但是整个项目结构却是很有意思:
- 通过 asp.net core 的自带宿主发布方式发布网站,使用者并不需要安装 web 服务器和 .net 环境;
- 通过 ef 的 migrate 方法自动迁移数据库,不需要将数据库拷贝给使用者;
- 通过上位机启动网站,并打开浏览器,一件操作。
总的来说,使用者只需在第一次运行时选择一下 web 文件夹,就会自动配置好 web 和 数据库。 之后每次启动程序均会自动启动 web 并且打开浏览器。
要完成以上的操作,需要建立一个 .net standard 类库(GISCore)存放数据库上下文,供 .net core 的网站(GISWebApp) 和 .net framework 的 Winform(GISWinApp) 引用。
值得注意的是,调用 Migrate 方法迁移数据库依赖执行 Add-Migration
命令后生成的迁移类,由于微软取消了接在 .net standard 中直接迁移数据库的功能,所以需要一系列骚操作:
- 根据微软提示,在上下文中配置
optionsBuilder.UseSqlServer(constr, b => b.MigrationsAssembly("GISWebApp"))
; - 设置 GISWebApp 为启动项目,到 GISWebApp 项目中执行
Add-Migrations
命令; - 将生成的 Migrations 文件夹拷贝到上下文所在的类库项目中;
- 去掉步骤 1 中的修改;
- 现在便可以在 Winform 中调用 Migrate 方法了。
- 在命令行执行发布命令
dotnet publish -r:win-x64
发布 GISWebApp; - 直接在 VS 中发布 GISWinApp;
- 双击步骤 2 中的到的安装程序;
- 安装后运行程序,选择步骤 1 中得到的 publish 文件以配置网站。
- 按操作配置网站和数据库
- 先使用虚拟串口模拟出两个串口,然后用串口助手模拟发送端连接一个串口,软件连接另一个串口
- 虚拟串口发送数据
数据格式(以 $ 结束):温度,湿度,NH3,光照[,警报]$
例如: 23,60,100,1000[,1]$
说明:(,为半角); [] 表示可选