/// <summary> /// 处理空调数据 /// </summary> /// <param name="num">在线数</param> /// <param name="index">索引</param> /// <param name="data">数据</param> /// <param name="type">传感器类型</param> /// <returns></returns> private int ProcessAir(int num, int index, byte[] data, int type) { for (int i = 0; i < num; i++) { AirConditioning airConditioning = new AirConditioning(); airConditioning.Id = Convert.ToString(data[index++], 16); byte height = data[index++]; airConditioning.State = ((height >> 7) & 0x01) == 1 ? StateType.StateOpen : StateType.StateClose; airConditioning.IsOpen = airConditioning.State == StateType.StateOpen; byte low = data[index++]; if (height == 0 && low == 0) { airConditioning.Online = StateType.Offline; } else { airConditioning.Online = StateType.Online; } airConditioning.IsOpen = height >> 7 == 1; int model = height >> 4; switch (model) { case 0: airConditioning.Model = "自动"; break; case 1: airConditioning.Model = "制冷"; break; case 2: airConditioning.Model = "除湿"; break; case 3: airConditioning.Model = "送风"; break; case 4: airConditioning.Model = "制热"; break; } airConditioning.Speed = (height >> 2) & 3; airConditioning.SweepWind = height >> 1 == 1 ? "扫风" : "不扫风"; float val = (0x0f & low); airConditioning.Value = val + 16 + "℃"; airConditioning.Name = "空调"; airConditioning.Controllable = true; airConditioning.Type = type; Sensors.Add(airConditioning); } return(index); }
static void Main(string[] args) { var tv = new TV(); var airConditioning = new AirConditioning(); var tvOnCommand = new TvOnCommand(tv); var airStartCommand = new AirConditioningStartCommand(airConditioning, 21d); var pult = new Pult { BlueBtnCommand = tvOnCommand, RedBtnCommand = airStartCommand }; pult.BlueBtnPress(); pult.RedButtonPress(); Console.ReadKey(); }
public AirConditioningStartCommand(AirConditioning airConditioning, double temperature) { _airConditioning = airConditioning; _temperature = temperature; }