using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; using HBLConsole.Service; using HBLConsole.GVL; using BPA.Message; using HBLConsole.Communication; using BPA.Message.Enum; using BPA.Models; namespace HBLConsole.Business { public class HeartbeatReport { private volatile static HeartbeatReport _Instance; public static HeartbeatReport GetInstance => _Instance ?? (_Instance = new HeartbeatReport()); private HeartbeatReport() { } /// /// 消息包 /// public BPAPackage MessagePackage { get; set; } = new BPAPackage(); public Action GetMessage { get; set; } DeviceStatus deviceStatus = new DeviceStatus(); string Topic = string.Empty; public void Init() { deviceStatus.DeviceType = GeneralConfig.DeviceType; Topic = TOPIC.GetInstance.GetHeatbeatTopic(GeneralConfig.DeviceType); ThreadManage.GetInstance.StartLong(new Action(() => { deviceStatus.BatchingInfo = GeneralConfig.BatchingInfos; deviceStatus.Healthy = GeneralConfig.Healthy ? DeviceHealthy.Health : DeviceHealthy.UnHealth; if (GetMessage != null) GetMessage(); MessagePackage.ClientId = InternetInfo.ClientId; MessagePackage.ClientType = GeneralConfig.DeviceType; MessagePackage.MessageId = MessageID.MORK_HEART_BEAT; MessagePackage.MessageVersion = 0x01; MessagePackage.Timestamp = DateTime.Now; MessagePackage.Message = deviceStatus;//GetMessage == null ? deviceStatus : GetMessage(); MqttHelper.GetInstance.MqttPublishAsync(Topic, MessagePackage.Serialize()); Thread.Sleep(1000); }), "设备心跳上报"); } } }