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
|
{
|
/// <summary>
|
/// 接收信息辅助类
|
/// </summary>
|
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<byte>(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<byte>(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<Model.BodyWave>.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;
|
}
|
|
});
|
}
|
}
|
}
|