跳到主要内容

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
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.Templatesdotnet 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.ModbusModbus RTU / TCP / ASCII
Zeus.Protocols.McMitsubishi MC
Zeus.Protocols.S7Siemens S7
Zeus.Protocols.FinsOmron FINS
Zeus.Protocols.HostLinkOmron Host Link
Zeus.Protocols.MewtocolPanasonic MEWTOCOL
Zeus.Protocols.EtherNetIpAllen-Bradley EtherNet/IP
Zeus.Protocols.Dlt645DL/T 645-2007
Zeus.Protocols.Iec104IEC 60870-5-104
Zeus.Protocols.MqttMQTT 3.1.1
Zeus.Protocols.OpcUaOPC UA
Zeus.Protocols.SnmpSNMP v2c
Zeus.Configuration从 zeus.json 读取通道、设备和采集配置。不拖协议包,请同时安装所用协议
Zeus.Presentation.AbstractionsUI 无关绑定抽象。一般由 WinForms / WPF 包自动带上
Zeus.Presentation.WinFormsWinForms 的 AttachZeus、BindText、BindState
Zeus.Presentation.WpfWPF 的 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 可以找到其它使用者。