NuGet 包
新建项目优先用模板
第一次建项目不要先手工选包,直接用模板:
dotnet new install Zeus.Templates
dotnet new zeus-console -n ZeusCheck
dotnet new zeus-winforms -n MyPanel
dotnet new zeus-wpf -n MyPanel.Wpf
dotnet new zeus-modbus -n MyOven
模板会把目标框架、包引用、基础宿主、绑定或 zeus.json 都接好。已有项目再按下面的包补装。
先按场景复制命令
控制台、Windows 服务、后台采集程序
dotnet add package Zeus.Communications
Zeus.Communications 会带上宿主和核心抽象。你可以使用 ZeusHost.Create、虚拟通道、串口、TCP 和 UDP。要用 zeus.json 时再装 Zeus.Configuration。
WinForms 上位机
dotnet add package Zeus.Communications
dotnet add package Zeus.Presentation.WinForms
项目目标框架必须是:
<TargetFramework>net8.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
WPF 上位机
dotnet add package Zeus.Communications
dotnet add package Zeus.Presentation.Wpf
项目目标框架必须是:
<TargetFramework>net8.0-windows</TargetFramework>
<UseWPF>true</UseWPF>
先装通信包和对应 UI 包,再按设备类型补协议包:
Modbus 设备
dotnet add package Zeus.Protocols.Modbus
三菱 MC 设备
dotnet add package Zeus.Protocols.Mc
Siemens S7 设备
dotnet add package Zeus.Protocols.S7
Omron FINS 设备
dotnet add package Zeus.Protocols.Fins
Omron Host Link 设备
dotnet add package Zeus.Protocols.HostLink
Panasonic MEWTOCOL-COM 设备
dotnet add package Zeus.Protocols.Mewtocol
Allen-Bradley EtherNet/IP 设备
dotnet add package Zeus.Protocols.EtherNetIp
DL/T 645 电能表
dotnet add package Zeus.Protocols.Dlt645
IEC 60870-5-104 站
dotnet add package Zeus.Protocols.Iec104
MQTT Broker
dotnet add package Zeus.Protocols.Mqtt
OPC UA Server
dotnet add package Zeus.Protocols.OpcUa
SNMP v2c 设备
dotnet add package Zeus.Protocols.Snmp
自定义帧协议
dotnet add package Zeus.Protocols.Framing
JSON 配置
dotnet add package Zeus.Configuration
dotnet add package Zeus.Protocols.Modbus
Zeus.Configuration 不拖协议实现。JSON 里写了哪种设备,就要同时安装对应协议包,否则装载时会直接提示 dotnet add package Zeus.Protocols.Xxx。
包之间怎么理解
日常项目优先看前几行:先用模板建项目,或按控制台 / WinForms / WPF 装通信包和对应 UI 包。
| 包 | 你装它是为了什么 |
|---|---|
| Zeus.Templates | dotnet new zeus-console / zeus-winforms / zeus-wpf / zeus-modbus |
| Zeus.Abstractions | 通道、设备、点表与宿主契约。一般由其它包自动带上 |
| Zeus.Runtime | 运行时内核。程序集名是 Zeus.Core,因 nuget.org 上 Zeus.Core 已被占用而发布为 Zeus.Runtime |
| Zeus.Hosting | 宿主、生命周期、采集循环。通常由其它包自动带上 |
| Zeus.Communications | 串口、TCP、UDP、虚拟通道。大多数项目都需要 |
| Zeus.Protocols.Framing | 厂家私有帧协议 |
| Zeus.Protocols.Modbus | Modbus RTU / TCP / ASCII |
| Zeus.Protocols.Mc | Mitsubishi MC |
| Zeus.Protocols.S7 | Siemens S7 |
| Zeus.Protocols.Fins | Omron FINS |
| Zeus.Protocols.HostLink | Omron Host Link |
| Zeus.Protocols.Mewtocol | Panasonic MEWTOCOL |
| Zeus.Protocols.EtherNetIp | Allen-Bradley EtherNet/IP |
| Zeus.Protocols.Dlt645 | DL/T 645-2007 |
| Zeus.Protocols.Iec104 | IEC 60870-5-104 |
| Zeus.Protocols.Mqtt | MQTT 3.1.1 |
| Zeus.Protocols.OpcUa | OPC UA |
| Zeus.Protocols.Snmp | SNMP v2c |
| Zeus.Configuration | 从 zeus.json 读取通道、设备和采集配置。不拖协议包,请同时安装所用协议 |
| Zeus.Presentation.Abstractions | UI 无关绑定抽象。一般由 WinForms / WPF 包自动带上 |
| Zeus.Presentation.WinForms | WinForms 的 AttachZeus、BindText、BindState |
| Zeus.Presentation.Wpf | WPF 的 AttachZeus、WpfUiDispatcher、MVVM 绑定源 |
装好后写一段最小代码
using System.Text;
using Zeus;
await using var app = ZeusHost.Create(builder =>
{
builder.AddVirtualChannel("meter");
});
var meter = app.Channels.Get("meter");
meter.DataReceived += (_, e) => Console.WriteLine(Encoding.UTF8.GetString(e.Data.Span));
await app.StartAsync();
await meter.WriteAsync(Encoding.UTF8.GetBytes("PING"));
能输出 PING,说明包引用和基础运行环境没问题。
常见问题
| 现象 | 原因 | 处理 |
|---|---|---|
Unable to find package Zeus.* | nuget.org 不可访问,或包名写错 | 确认能打开 nuget.org,并核对包名 |
编译时找不到 AddVirtualChannel | 没装通信包 | 安装 Zeus.Communications |
编译时找不到 AttachZeus | 没装对应 UI 适配器 | WinForms 装 Zeus.Presentation.WinForms,WPF 装 Zeus.Presentation.Wpf |
| 桌面项目还原失败 | 目标框架不对 | 改成 net8.0-windows |
源码见 github.com/Mokode-dev/Zeus。许可证为 MIT。
加入 QQ 群 771421105 可以找到其它使用者。