NHJ212DataReceiver是根据《污染物在线监控(监测)系统数据传输标准 HJ 212-2017.pdf》文档,对接收到的212协议报文进行接收和解析。,旨在为设备提供更便利、更简洁的开发模式以更快捷地对接智能工业设备数据。
准备工作
确保你已经安装了最新的 .NET 8.0。
创建与安装
创建一个控制台程序,然后在NuGet包管理器中输入以下命令安装NHJ212DataReceiver
PM> NuGet\Install-Package NHJ212DataReceiver -Version 1.0.3.130
使用
using NHJ212DataReceiver; //创建接收器对象 var receiver = HJ212DataReceiver.Create(new HJ212ReceiverSetting { Name = "HJ212DataReceiver",//接收器名称 Port = 6666,//接收器端口 DataDuration = 5,//缓存数据有效时长,单位分钟 CustomerCNs = new List(),//自定义CN列表 //响应设置 ResponseSetting = new HJ212ReceiverSetting.HJ212ResponseSetting { Enable = true,//是否发送通知包,9014和9013 ResponseType = 0,//响应方式,0:全部设备响应;1:指定设备响应;2:指定设备不响应; MNList = new List ()//指定设备列表 }, //推送API设置 PushApis = new List () }); await receiver.Start();//启动接收器
receiver.Started += (sender, args) => { // "程序已启动"; return ValueTask.CompletedTask; };
receiver.Stopped += (sender, args) => { //"程序已停止"; return ValueTask.CompletedTask; };
receiver.DeviceOnline += (sender, args) => { //$"设备上线。{args.Device.ToJson()}"; return ValueTask.CompletedTask; };
receiver.DeviceOffline += (sender, args) => { //$"设备离线。{args.Device.ToJson()}"; return ValueTask.CompletedTask; };
receiver.DeviceUpdated += (sender, args) => { //$"设备更新。{args.Device.ToJson()}"; return ValueTask.CompletedTask; };
receiver.ReceivedDataPackage += (sender, args) => { //$"接收数据包。{args.Device.ToJson()}"; //$"接收数据包。原始包:{args.DataPackage}"; return ValueTask.CompletedTask; };
receiver.ReceivedHJ212Data += (sender, args) => { //$"接收HJ212数据包。SessionId:{args.Device.SessionID};IP:{args.Device.DeviceIP};"; //$"接收HJ212数据包。MN:{args.Device.MN};DataTime:{args.Device.LastDataTime};"; //$"接收HJ212数据包。{args.Data.PackageText};"; return ValueTask.CompletedTask; };
receiver.ReceivedNoHJ212Data += (sender, args) => { //$"接收非法HJ212数据包。SessionId:{args.Device.SessionID};IP:{args.Device.DeviceIP};"; //$"接收非法HJ212数据包。数据包:{args.Data};"; //$"接收非法HJ212数据包。消息:{args.Message};"; return ValueTask.CompletedTask; };
receiver.ReceivedNoCNHJ212Data += (sender, args) => { //$"接收未知CN指令的HJ212数据包。SessionId:{args.Device.SessionID};IP:{args.Device.DeviceIP};"; //$"接收未知CN指令的HJ212数据包。数据包:{args.Data};"; //$"接收未知CN指令的HJ212数据包。消息:{args.Message};"; return ValueTask.CompletedTask; };
receiver.ReceivedCustomerCNHJ212Data += (sender, args) => { //$"接收自定义HJ212数据包。SessionId:{args.Device.SessionID};IP:{args.Device.DeviceIP};"; //$"接收自定义HJ212数据包。MN:{args.Device.MN};CN:{args.CN};DataTime:{args.Device.LastDataTime};"; //$"接收自定义HJ212数据包。{args.Data.ToJson()};"; return ValueTask.CompletedTask; };
receiver.SendDataPackage += (sender, args) => { //$"发送数据包。SessionId:{args.Device.SessionID};IP:{args.Device.DeviceIP};"; //$"发送数据包。数据包:{args.DataPackage};"; return ValueTask.CompletedTask; };
receiver.SendDataPackageError += (sender, args) => { //$"发送数据包异常。SessionId:{args.Device.SessionID};IP:{args.Device.DeviceIP};"; //$"发送数据包异常。数据包:{args.DataPackage};"; //$"发送数据包异常。消息:{args.Message};"; return ValueTask.CompletedTask; };
receiver.PushedDataToApi += (sender, args) => { //$"API推送数据包。SessionId:{args.Device.SessionID};MN:{args.Device.MN};IP:{args.Device.DeviceIP};"; //$"API推送数据包。数据包:{args.HJ212Data.PackageText};"; //$"API推送数据包。API_Name:{args.PushApi.Name};API_URL:{args.PushApi.Url}"; //$"API推送数据包。PushId:{args.PushId}; 结果:{args.IsSuccess}; 消息:{args.PushMessage};"; return ValueTask.CompletedTask; };
receiver.PushDataToApiError += (sender, args) => { //$"API推送数据包异常。SessionId:{args.Device.SessionID};MN:{args.Device.MN};IP:{args.Device.DeviceIP};"; //$"API推送数据包异常。数据包:{args.HJ212Data.PackageText};"; //$"API推送数据包异常。API_Name:{args.PushApi.Name};API_URL:{args.PushApi.Url}"; //$"API推送数据包异常。消息:{args.Message};"; //$"API推送数据包异常。ApiResponse:{args.ApiResponseString};"; return ValueTask.CompletedTask; };
receiver.NoPushDataToApi += (sender, args) => { //$"API未推送数据包。SessionId:{args.Device.SessionID};MN:{args.Device.MN};IP:{args.Device.DeviceIP};"; //$"API未推送数据包。数据包:{args.HJ212Data.PackageText};"; //$"API未推送数据包。API_Name:{args.PushApi.Name};API_URL:{args.PushApi.Url}"; //$"API未推送数据包。消息:{args.Message};"; return ValueTask.CompletedTask; };
receiver.Error += (sender, args) => { var ex = args.GetException(); //$"异常:{ex.Message}"; //$"Source:{ex.Source}"; //$"StackTrace:{ex.StackTrace}"; };
await receiver.Stop();
receiver.GetDevices();
await receiver.DisconnectDevice("sessionId");
await receiver.Send("sessionId", "##0096QN=20250130181600564;ST=91;CN=1012;PW=123456;MN=00000000;Flag=4;CP=&&SystemTime=20250130181600&&AE41");
await receiver.SendFixTimePackage("sessionId");
receiver.ResetAppSetting(new HJ212ReceiverSetting() { //... });