namespace IStation.DataDockingSocket { public class HandleHelper : IHandleHelper { /// /// 处理注册码 /// public void HandleRegisterCode(Yw.Model.IMonitorDataDockingSession session) { if (session == null) return; if (!session.IsConnected) return; if (SessionHelper.Cache != null) { if (SessionHelper.Cache != session) { if (SessionHelper.Cache.IsConnected) { SessionHelper.Cache.Close($"{session.SessionName} 中,产生新的会话!"); } } } SessionHelper.Cache = session; var appParas = AppParasHelper.Get(); if (appParas == null) { LogHelper.Error("Socket 数据对接中,KQ 缺少数据对接配置文件"); return; } foreach (var item in appParas.InstructionItems) { SendInstructionJobHelper.StartJob(session, item); Thread.Sleep(appParas.InstructionSendSpace * 1000); } } /// /// 处理心跳包 /// public void HandleHeartbeat(Yw.Model.IMonitorDataDockingSession session) { } /// /// 处理数据 /// public void HandleData ( Yw.Model.IMonitorDataDockingSession session, byte[] bytes, List mappers, Action> receive ) { if (session == null) return; if (!session.IsConnected) return; if (bytes == null) return; if (!AppParas.Verify(bytes)) { return; } if (mappers == null || mappers.Count < 1) { return; } var appParas = AppParasHelper.Get(); if (appParas == null) { LogHelper.Error("Socket 数据对接中,SZJT.Ten 缺少数据对接配置文件"); return; } var item = appParas.InstructionItems.Find(x => x.Verify(bytes)); if (item == null) return; var middleList = HandleDataHelper.HandleData(item, bytes); if (middleList != null && middleList.Count > 0) { var recordList = new List(); foreach (var mapper in mappers) { if (mapper.SubList == null || mapper.SubList.Count < 1) { continue; } var mapper_sub = mapper.SubList.First(); var middle = middleList.Find(x => x.SignId == mapper.TransferId); if (middle != null) { var record = new Yw.Model.MonitorHandleRecord { MonitorPointID = mapper.MonitorPointID, DataTime = middle.DataTime }; var dataStatus = new List(); var record_sub = new Yw.Model.MonitorHandleSubRecord(); record_sub.SignalID = mapper_sub.SignalID; record_sub.SrcValue = middle.DataValue; record_sub.DataValue = mapper_sub.Docking(middle.DataValue, ref dataStatus); record_sub.DataStatus = dataStatus; record.SubList.Add(record_sub); recordList.Add(record); } } receive(recordList); } if (ConfigHelper.SupportOld) { OldTransferHelper.Transfer(middleList); } if (appParas.Src) { SrcHelper.Src(bytes); } if (appParas.Debug) { DebugHelper.Debug(middleList); } } } }