lixiaojun
2022-08-09 c7c696753fbe0b8ebf56eb6cfe584601a36c5fb2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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;
                }
 
            });
        }
    }
}