using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using IStation.Untity; using IStation.Model; using SuperSocket.Server; using SuperSocket; namespace IStation.Server { /// /// 接收信息辅助类 /// internal class RequestReceivedHelper { //接收数据 public static async ValueTask Receive(IAppSession session, PackageInfo packageInfo) { await Task.Run(async () => { if (packageInfo == null) return; switch (packageInfo.Header.Type) { case eDatagramType.心跳接口: { await session.SendAsync(new ReadOnlyMemory(packageInfo.HeaderBuffer)); LogHelper.Info($"{session.RemoteEndPoint}:发送心跳包."); } break; case eDatagramType.波形数据接口: { LogHelper.Info($"{session.RemoteEndPoint}:发送波形数据包."); var model = BodyWave.Get(packageInfo.BodyBuffer); var dt_now = DateTime.Now; if ((dt_now - model.DataTime).TotalHours > 1) { { //对时 var timeHeader = new Model.Header(); timeHeader.Type = 0; timeHeader.Memo = BitConverter.GetBytes((int)DateTimeTransfer.ToSeconds(dt_now)).Reverse().ToArray(); timeHeader.KeyNum = 1; timeHeader.PackLen = 0; var timeBuffer = timeHeader.GetBuffer(); await session.SendAsync(new ReadOnlyMemory(timeBuffer)); LogHelper.Info($"{session.RemoteEndPoint}-DataTime:{model.DataTime:yyyy-MM-dd HH:mm:ss},触发对时接口."); } model.SendTime = dt_now; model.DataTime = dt_now; } if (model.Rpm > 0) { LogHelper.Info($"{model.IP}:Rpm:{model.Rpm}"); } MemoryQueueHelper.Push(model); } break; case eDatagramType.对时接口: { } break; case eDatagramType.启停车数据接口: { LogHelper.Info($"{session.RemoteEndPoint}:发送启停车数据."); var model = StartStop.Get(packageInfo.BodyBuffer); LogHelper.Info($"{session.RemoteEndPoint}-{JsonHelper.Object2Json(model)}"); } break; default: break; } }); } } }