初始化CRICS
This commit is contained in:
97
RCUHost/Implement/EnergySavingModeReceiver.cs
Normal file
97
RCUHost/Implement/EnergySavingModeReceiver.cs
Normal file
@@ -0,0 +1,97 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using Common;
|
||||
using Dao;
|
||||
using Domain;
|
||||
using RCUHost.Protocols;
|
||||
|
||||
namespace RCUHost.Implement
|
||||
{
|
||||
public class EnergySavingModeReceiver : GenericReceiverBase, IEnergySavingModeReceiver
|
||||
{
|
||||
public void ApplyEnergySavingMode(Model model, Host host)
|
||||
{
|
||||
byte[] data = CreateEnergySavingModeRequestPacket(model);
|
||||
|
||||
Send(data, host.HostNumber, host.MAC);// host.IP, host.Port);
|
||||
}
|
||||
|
||||
public override CommandType CommandType
|
||||
{
|
||||
get { return CommandType.EnergySavingMode; }
|
||||
}
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private byte[] CreateEnergySavingModeRequestPacket(Model model)
|
||||
{
|
||||
SystemHeader systemHeader = CreateSystemHeader();
|
||||
|
||||
EnergySavingModePacket energySavingModePacket = CreateEnergySavingModePacket(model);
|
||||
|
||||
int size = StructConverter.SizeOf(systemHeader) + StructConverter.SizeOf(energySavingModePacket);
|
||||
|
||||
systemHeader.FrameLength = (ushort)size;
|
||||
|
||||
byte[] buffer = new byte[size];
|
||||
|
||||
byte[] src1 = StructConverter.StructToBytes(systemHeader);
|
||||
Array.Copy(src1, 0, buffer, 0, src1.Length);
|
||||
|
||||
byte[] src3 = StructConverter.StructToBytes(energySavingModePacket);
|
||||
Array.Copy(src3, 0, buffer, src1.Length, src3.Length);
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
private EnergySavingModePacket CreateEnergySavingModePacket(Model model)
|
||||
{
|
||||
EnergySavingModePacket packet = new EnergySavingModePacket();
|
||||
|
||||
packet.CorrectedTemp = Convert.ToByte(model.CorrectedTemp);
|
||||
packet.FanRunStatus = Convert.ToByte(model.FanRunStatus ? 1 : 0);
|
||||
packet.ExhaustFanStatus = Convert.ToByte(model.ExhaustFanStatus);
|
||||
packet.ExhaustFanTime = Convert.ToByte(model.ExhausFanTime);
|
||||
|
||||
packet.InfraredDelayPO = Convert.ToByte(model.InfraredDelayPO);
|
||||
packet.DoorDelayPO = Convert.ToByte(model.DoorDelayPO);
|
||||
packet.PullCardDelayPO = Convert.ToByte(model.PullCardDelayPO);
|
||||
|
||||
ModelDetail detail1 = model.Details.FirstOrDefault(r => r.ModelStatus == "插卡时");
|
||||
ModelDetail detail2 = model.Details.FirstOrDefault(r => r.ModelStatus == "拔卡时");
|
||||
ModelDetail detail3 = model.Details.FirstOrDefault(r => r.ModelStatus == "待租时");
|
||||
ModelDetail detail4 = model.Details.FirstOrDefault(r => r.ModelStatus == "停租时");
|
||||
|
||||
packet.FengJiStatus = new FengJiStatus[4]
|
||||
{
|
||||
CreateFengJiStatus(detail1),
|
||||
CreateFengJiStatus(detail2),
|
||||
CreateFengJiStatus(detail3),
|
||||
CreateFengJiStatus(detail4)
|
||||
};
|
||||
|
||||
return packet;
|
||||
}
|
||||
|
||||
private FengJiStatus CreateFengJiStatus(ModelDetail detail)
|
||||
{
|
||||
return new FengJiStatus
|
||||
{
|
||||
OnOff = detail.OnOff,
|
||||
Type = Convert.ToByte(detail.ModelType),
|
||||
Speed = Convert.ToByte(detail.Speed),
|
||||
SummerTemp = Convert.ToByte(detail.SummerTemp),
|
||||
WinterTemp = Convert.ToByte(detail.WinterTemp),
|
||||
TimingControl = Convert.ToByte(detail.TimingControl ? 1 : 0),
|
||||
Timer = Convert.ToByte(detail.Timer),
|
||||
AllowElectric = Convert.ToByte(detail.AllowElectric ? 1 : 0),
|
||||
};
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user