using System; using System.Collections.Generic; namespace Shared.SimpleControl.Phone { public class UserSensorAutomationSettingPage : FrameLayout { /// /// 自动化条件目标的使能数据3*8 24bit 0 无效 1 有效,取前二十bit /// string targetEnableString = ""; SensorAutomationDevice autonmationDevice; SensorAutomation sensorAutomation; List SensorList; VerticalScrolViewLayout conditionView; VerticalScrolViewLayout targetView; public UserSensorAutomationSettingPage (List listCommon, SensorAutomation sa, SensorAutomationDevice ad) { SensorList = listCommon; autonmationDevice = ad; sensorAutomation = sa; } public void ShowPage (Action rename) { this.BackgroundColor = SkinStyle.Current.MainColor; #region 标题 var topView = new FrameLayout () { Y = Application.GetRealHeight (36), Height = Application.GetRealHeight (90), BackgroundColor = SkinStyle.Current.MainColor }; AddChidren (topView); var title = new Button () { TextAlignment = TextAlignment.Center, TextID = R.MyInternationalizationString.AutomationSetting, TextColor = SkinStyle.Current.TextColor1, TextSize = 19, }; topView.AddChidren (title); var logo = new Button () { Width = Application.GetRealWidth (154), Height = Application.GetRealHeight (90), X = Application.GetRealWidth (486), UnSelectedImagePath = MainPage.LogoString, }; topView.AddChidren (logo); var back = new Button () { Height = Application.GetRealHeight (90), Width = Application.GetRealWidth (85), UnSelectedImagePath = "Item/Back.png", SelectedImagePath = "Item/BackSelected.png", }; topView.AddChidren (back); back.MouseUpEventHandler += (sender, e) => { (Parent as PageLayout).PageIndex -= 1; }; #endregion var bodyScrolView = new VerticalScrolViewLayout () { Y = topView.Bottom, BackgroundColor = SkinStyle.Current.ViewColor, Height = Application.GetRealHeight (1136 - 126 - 90)-1 }; AddChidren (bodyScrolView); Button btnCondition = new Button () { Height = Application.GetRealHeight(100), TextAlignment = TextAlignment.Center, TextID = R.MyInternationalizationString.TriggerCondition, TextSize = 16, TextColor = SkinStyle.Current.TextColor1, BackgroundColor = SkinStyle.Current.ViewColor }; bodyScrolView.AddChidren (btnCondition); conditionView = new VerticalScrolViewLayout () { BackgroundColor = SkinStyle.Current.ViewColor, ScrollEnabled = false, Height = 0, }; bodyScrolView.AddChidren (conditionView); var conditionButtonView = new VerticalScrolViewLayout (){ Height = Application.GetRealHeight (110), ScrollEnabled = false, BackgroundColor = SkinStyle.Current.MainColor }; bodyScrolView.AddChidren (conditionButtonView); var btnConditionAddIcon = new Button () { Height = Application.GetRealHeight (110), Width = Application.GetRealWidth (110), Gravity = Gravity.Center, SelectedImagePath = "Sensor/AddOn.png", UnSelectedImagePath = "Sensor/Add.png" }; conditionButtonView.AddChidren (btnConditionAddIcon); Button btnTarget = new Button () { Height = Application.GetRealHeight (100), TextAlignment = TextAlignment.Center, TextID = R.MyInternationalizationString.Target, TextSize = 16, TextColor = SkinStyle.Current.TextColor1, BackgroundColor = SkinStyle.Current.ViewColor }; bodyScrolView.AddChidren (btnTarget); targetView = new VerticalScrolViewLayout (){ BackgroundColor = SkinStyle.Current.ViewColor, ScrollEnabled = false, Height = 0 }; bodyScrolView.AddChidren (targetView); FrameLayout targetButtonView = new FrameLayout () { Height = Application.GetRealHeight (110), BackgroundColor = SkinStyle.Current.MainColor }; bodyScrolView.AddChidren (targetButtonView); var btnTargetAddIcon = new Button () { Height = Application.GetRealHeight(110), Width = Application.GetRealWidth(110), Gravity = Gravity.Center, SelectedImagePath = "Sensor/Add.png", UnSelectedImagePath = "Sensor/Add.png" }; targetButtonView.AddChidren (btnTargetAddIcon); Action action = (obj) => { sensorAutomation = obj; InitAutomationView (); }; EventHandler addConditonHandler = (sender, e) => { var uslp = new UserSensorAutomationConditionSettingPage (SensorList, autonmationDevice, sensorAutomation); UserMiddle.DevicePageView.AddChidren (uslp); uslp.ShowPage (action); UserMiddle.DevicePageView.PageIndex = UserMiddle.DevicePageView.ChildrenCount - 1; }; conditionButtonView.MouseUpEventHandler += addConditonHandler; btnConditionAddIcon.MouseUpEventHandler += addConditonHandler; EventHandler addTargetHandler = (sender, e) => { if (sensorAutomation.TargetBytesList.Count == 20) { new Alert ("", Language.StringByID(R.MyInternationalizationString.NoMoreTargetCanBeAdded), Language.StringByID (R.MyInternationalizationString.Close)).Show (); return; } var uslp = new UserSensorAutomationDeviceTypeChoose (sensorAutomation,action); UserMiddle.DevicePageView.AddChidren (uslp); uslp.ShowPage (); UserMiddle.DevicePageView.PageIndex = UserMiddle.DevicePageView.ChildrenCount - 1; }; targetButtonView.MouseUpEventHandler += addTargetHandler; btnTargetAddIcon.MouseUpEventHandler += addTargetHandler; var bodyBottomView = new FrameLayout () { Y = bodyScrolView.Bottom, Height = Application.GetRealHeight(90)+1,//+ Application.GetRealHeight (70) + 1, BackgroundColor = SkinStyle.Current.White20Transparent, }; AddChidren (bodyBottomView); //var cycleView = new FrameLayout () { // Y = 1, // Height = Application.GetRealHeight (70), // //BackgroundColor = SkinStyle.Current.White20Transparent, // BackgroundColor = SkinStyle.Current.MainColor, //}; //bodyBottomView.AddChidren (cycleView); //var btnCycle = new Button () { // X = Application.GetRealWidth(60), // Width = Application.GetRealWidth(300), // //TextID = R.MyInternationalizationString.SAVE, // Text = "重复周期", // TextAlignment = TextAlignment.CenterLeft, // TextColor = SkinStyle.Current.TextColor1, // BackgroundColor = SkinStyle.Current.MainColor, //}; //cycleView.AddChidren (btnCycle); //var btnCycleText = new Button () { // X = btnCycle.Right, // Width = Application.GetRealWidth(200), // TextAlignment = TextAlignment.CenterRight, // Text = "只执行一次", // TextColor = SkinStyle.Current.TextColor1, //}; //cycleView.AddChidren (btnCycleText); //var rightButton = new Button () { // Width = Application.GetRealWidth (28), // Height = Application.GetRealHeight (40), // Gravity = Gravity.CenterVertical, // X = Application.GetRealWidth (580), // UnSelectedImagePath = "Item/Right.png", // SelectedImagePath = "Item/RightSelected.png", //}; //cycleView.AddChidren (rightButton); var btnSave = new Button () { Y = 1,//+Application.GetRealHeight (70) + 1 Height = Application.GetRealHeight (90), TextID = R.MyInternationalizationString.SAVE, TextAlignment = TextAlignment.Center, TextColor = SkinStyle.Current.TextColor1, BackgroundColor = SkinStyle.Current.MainColor, TextSize = 16 }; bodyBottomView.AddChidren (btnSave); btnSave.MouseUpEventHandler += (senddd, ddd) => { //创建自动化,修改自动化条件使能,修改自动化条件目标使能,修改自动化条件目标数据 var dialog = new Dialog (); var dialogBodyView = new FrameLayout () { Gravity = Gravity.Center, Width = Application.GetRealWidth (400), Height = Application.GetRealHeight (300), BackgroundColor = SkinStyle.Current.DialogColor, Radius = 5, BorderColor = SkinStyle.Current.Transparent, BorderWidth = 1 }; dialog.AddChidren (dialogBodyView); var etAutomationName = new EditText () { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight (60), Width = Application.GetRealWidth(260), Height = Application.GetRealHeight(90), BackgroundColor = SkinStyle.Current.White20Transparent, TextColor = SkinStyle.Current.TextColor, TextAlignment = TextAlignment.Center, BorderColor = SkinStyle.Current.ButtonColor, BorderWidth = 1, Radius = 1, PlaceholderText = "", Text = sensorAutomation.AutomationName }; dialogBodyView.AddChidren (etAutomationName); var bottomView = new FrameLayout () { Y = Application.GetRealHeight (202), Height = Application.GetRealHeight (100), BackgroundColor = SkinStyle.Current.White20Transparent, }; dialogBodyView.AddChidren (bottomView); var btnDialogClose = new Button () { Width = Application.GetRealWidth(200), BackgroundColor = SkinStyle.Current.ButtonColor, TextAlignment = TextAlignment.Center, TextID = R.MyInternationalizationString.cancel, TextColor = SkinStyle.Current.TextColor1, }; bottomView.AddChidren (btnDialogClose); btnDialogClose.MouseUpEventHandler += (df, dsa) => { dialog.Close (); }; var btnDialogSave = new Button () { X = btnDialogClose.Right +1, Width = Application.GetRealWidth(200), BackgroundColor = SkinStyle.Current.ButtonColor, TextAlignment = TextAlignment.Center, TextID = R.MyInternationalizationString.SAVE, TextColor = SkinStyle.Current.TextColor1, }; bottomView.AddChidren (btnDialogSave); btnDialogSave.MouseUpEventHandler += (df, dsa) => { MainPage.Loading.Start ("Saving..."); string conditionName = etAutomationName.Text.Trim (); System.Threading.Tasks.Task.Run (() => { try { int j = 0; for (int i = 0; i < 39;i++){//先把自动化里面的所有条件清空,防止有一些条件已经被删除的没有去掉 if (autonmationDevice.ConditionIdList [i] == sensorAutomation.AutomationId) { autonmationDevice.ConditionIdList [i] = 255; } } foreach (var autoCondition in sensorAutomation.sensorAutomationConditionList) { autonmationDevice.ConditionIdList [(autoCondition.PushId * 8 + autoCondition.ConditionLevel)] = sensorAutomation.AutomationId; autonmationDevice.AutomationEnableList [(autoCondition.PushId * 8 + autoCondition.ConditionLevel)] = 1; j = 0; var targetEnableStringSend = ""; foreach (var targetBytes in sensorAutomation.TargetBytesList) { targetEnableStringSend += "1"; targetBytes [0] = autoCondition.PushId; targetBytes [1] = autoCondition.ConditionLevel; targetBytes [2] = (byte)j; var setSensorScenceRevice = Control.ControlBytesSendHasReturn (Command.SetSensorScence, autonmationDevice.SubnetID, autonmationDevice.DeviceID, targetBytes); if (setSensorScenceRevice == null) { Application.RunOnMainThread (() => { new Alert ("", Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), Language.StringByID (R.MyInternationalizationString.Close)).Show (); return; }); } j++; } targetEnableStringSend= targetEnableStringSend.PadRight (24, '0'); var targetEnableBytesSend = BinaryStr2ByteArray (targetEnableStringSend); //读取自动化条件触发目标的使能数据 var automationTargetLevelEnable = Control.ControlBytesSendHasReturn (Command.ReadSensorAutomationLevelTargetEnable, autonmationDevice.SubnetID, autonmationDevice.DeviceID, new byte [] { autoCondition.PushId }); //将对应的自动化条件触发的目标使能修改 automationTargetLevelEnable [3 * autoCondition.ConditionLevel + 1] = targetEnableBytesSend [0]; automationTargetLevelEnable [3 * autoCondition.ConditionLevel + 2] = targetEnableBytesSend [1]; automationTargetLevelEnable [3 * autoCondition.ConditionLevel + 3] = targetEnableBytesSend [2]; var setAutomationTargetLevelEnable = Control.ControlBytesSendHasReturn (Command.SetSensorAutomationTargetLevelEnable, autonmationDevice.SubnetID, autonmationDevice.DeviceID, automationTargetLevelEnable); var sss = Control.ControlBytesSendHasReturn (Command.SetSensorAutomationTargetLevelEnable, autonmationDevice.SubnetID, autonmationDevice.DeviceID, automationTargetLevelEnable); } var conditianStatusListRevice = Control.ControlBytesSendHasReturn (Command.SetSensorAutomationEnableList, autonmationDevice.SubnetID, autonmationDevice.DeviceID, autonmationDevice.AutomationEnableList); var conditionIdListRevice = Control.ControlBytesSendHasReturn (Command.SetSensorAutomationListID, autonmationDevice.SubnetID, autonmationDevice.DeviceID, autonmationDevice.ConditionIdList); byte [] conditionNameBytes = CommonPage.MyEncodingUTF8.GetBytes (conditionName); byte [] sendCondtionNameBytes = new byte [21]; sendCondtionNameBytes [0] = sensorAutomation.AutomationId; Array.Copy (conditionNameBytes, 0, sendCondtionNameBytes, 1,20< conditionNameBytes.Length ? 20 : conditionNameBytes.Length); var conditionNameRevice = Control.ControlBytesSendHasReturn (Command.SetSensorAutomationName, autonmationDevice.SubnetID, autonmationDevice.DeviceID, sendCondtionNameBytes); sensorAutomation.AutomationName = conditionName; } catch (Exception ex) { Console.WriteLine (ex.Message); } finally { Application.RunOnMainThread (() => { rename (sensorAutomation.AutomationName); (Parent as PageLayout).PageIndex -= 1; MainPage.Loading.Hide (); dialog.Close (); }); } }); }; dialog.Show (); }; InitAutomationView (); } byte [] BinaryStr2ByteArray (string binaryStr) { if (string.IsNullOrEmpty (binaryStr)) binaryStr = string.Empty; List byte_List = new List (); var strL = binaryStr.Length; if (strL == 0) byte_List.Add (0); else if (strL > 0 && strL <= 8) byte_List.Add (Convert.ToByte (binaryStr, 2)); else { var tempStr = string.Empty; for (var i = strL; i > 0; i = i - 8) { if (i - 4 > 0) tempStr = binaryStr.Substring (i - 8, 8); else tempStr = binaryStr.Substring (0, i); byte_List.Add (Convert.ToByte (tempStr, 2)); } } byte_List.Reverse (); return byte_List.ToArray (); } void InitAutomationView () { conditionView.RemoveAll (); targetView.RemoveAll (); conditionView.Height = Application.GetRealHeight (100 * sensorAutomation.sensorAutomationConditionList.Count); foreach (var auto in sensorAutomation.sensorAutomationConditionList) { string conditionTipText = ""; switch (auto.PushId) { case 0://DeviceType.SensorPM25: //devicePushType = 0; conditionTipText = "PM2.5"; switch (auto.ConditionLevel) { case 0: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceTipPM25Level1); break; case 1: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceTipPM25Level2); break; case 2: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceTipPM25Level3); break; case 3: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceTipPM25Level4); break; case 4: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition1); break; case 5: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition2); break; case 6: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition3); break; case 7: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition4); break; } break; case 1://DeviceType.SensorCO2: //devicePushType = 1; conditionTipText = "CO2"; switch (auto.ConditionLevel) { case 0: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceTipCO2Level1); break; case 1: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceTipCO2Level2); break; case 2: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceTipCO2Level3); break; case 3: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceTipCO2Level4); break; case 4: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition1); break; case 5: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition2); break; case 6: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition3); break; case 7: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition4); break; } break; case 2://DeviceType.SensorTVOC: //devicePushType = 2; conditionTipText = "TVOC"; switch (auto.ConditionLevel) { case 0: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceTVOCTipLevel1); break; case 1: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceTVOCTipLevel2); break; case 2: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceTVOCTipLevel3); break; case 3: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceTVOCTipLevel4); break; case 4: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition1); break; case 5: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition2); break; case 6: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition3); break; case 7: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition4); break; } break; case 3://DeviceType.SensorTemperature: //devicePushType = 3; conditionTipText = Language.StringByID (R.MyInternationalizationString.Temperature); switch (auto.ConditionLevel) { case 0: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceTempTipLevel1); break; case 1: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceTempTipLevel2); break; case 2: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceTempTipLevel3); break; case 3: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceTempTipLevel4); break; case 4: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition1); break; case 5: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition2); break; case 6: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition3); break; case 7: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition4); break; } break; case 4://DeviceType.SensorHumidity: //devicePushType = 4; conditionTipText = Language.StringByID (R.MyInternationalizationString.Humidity); switch (auto.ConditionLevel) { case 0: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceHumidityTipLevel3); break; case 1: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceTempTipLevel1); break; case 2: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceHumidityTipLevel1); break; case 3: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.SensorReferenceHumidityTipLevel2); break; case 4: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition1); break; case 5: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition2); break; case 6: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition3); break; case 7: conditionTipText += " " + Language.StringByID (R.MyInternationalizationString.CustomCondition4); break; } break; } RowLayout rowConditionView = new RowLayout () { Height = Application.GetRealHeight (100), BackgroundColor = SkinStyle.Current.MainColor, }; conditionView.AddChidren (rowConditionView); Button btnDel = new Button () { BackgroundColor = SkinStyle.Current.DelColor, TextID = R.MyInternationalizationString.Del, TextColor = SkinStyle.Current.TextColor2, Tag = (auto.PushId * 8 + auto.ConditionLevel) }; rowConditionView.AddRightView (btnDel); btnDel.MouseUpEventHandler += (ddff, ffdd) => { sensorAutomation.AutomationConditionIdList.Remove (Convert.ToInt32 (((Button)ddff).Tag)); InitAutomationView (); }; Button btnCondition = new Button () { X = Application.GetRealWidth (60), Width = Application.GetRealWidth (580), Text = conditionTipText, TextColor = SkinStyle.Current.TextColor1, TextAlignment = TextAlignment.CenterLeft, }; rowConditionView.AddChidren (btnCondition); } if (sensorAutomation.AutomationStatus != 0 || sensorAutomation.AutomationStatus != 255) { #region 目标设置 MainPage.Loading.Start ("Please wait..."); System.Threading.Tasks.Task.Run (() => { try { if (targetEnableString == "") {//第一次加载界面先读取自动化配置的目标使能数据 sensorAutomation.TargetBytesList.Clear (); var sensorAutomationLevelTargetEnable = Control.ControlBytesSendHasReturn (Command.ReadSensorAutomationLevelTargetEnable, autonmationDevice.SubnetID, autonmationDevice.DeviceID, new byte [] { sensorAutomation.sensorAutomationConditionList [0].PushId }); if (sensorAutomationLevelTargetEnable == null) return; //sensorAutomation.sensorAutomationLevelTargetEnable = sensorAutomationLevelTargetEnable; var targetEnableBytes = new byte [] { sensorAutomationLevelTargetEnable[3* sensorAutomation.sensorAutomationConditionList [0].ConditionLevel+1], sensorAutomationLevelTargetEnable[3* sensorAutomation.sensorAutomationConditionList [0].ConditionLevel+2],sensorAutomationLevelTargetEnable[3* sensorAutomation.sensorAutomationConditionList [0].ConditionLevel+3]}; targetEnableString = Convert.ToString (targetEnableBytes [0], 2).PadLeft (8, '0') + Convert.ToString (targetEnableBytes [1], 2).PadLeft (8, '0') + Convert.ToString (targetEnableBytes [2], 2).PadLeft (8, '0'); for (int ii = 0; ii < 20; ii++) { //读取自动化等级配置了的目标数据 if (targetEnableString [ii] == '0') { continue; } /// 4 Control_kind 控制类型 /// 5 Control_sub_net 子网号 /// 6 Control_dev 设备号 /// 7 Control_fenqu 回路号 var readTargetBytes = Control.ControlBytesSendHasReturn (Command.ReadSensorScence, autonmationDevice.SubnetID, autonmationDevice.DeviceID, new byte [] { (byte)sensorAutomation.sensorAutomationConditionList [0].PushId,(byte)sensorAutomation.sensorAutomationConditionList [0].ConditionLevel, (byte)ii }); sensorAutomation.TargetBytesList.Add (readTargetBytes); } } Application.RunOnMainThread (() => { targetView.Height = Application.GetRealHeight (100 * sensorAutomation.TargetBytesList.Count); }); for (int ii = 0; ii < sensorAutomation.TargetBytesList.Count; ii++) { var readTargetBytes = sensorAutomation.TargetBytesList [ii]; string targetDeviceName = "Unknow"; foreach (var room in Room.Lists) { if (room.Name == "") continue; if (readTargetBytes [3] == 0x59) { var device = room.DeviceList.Find ((obj) => obj.SubnetID == readTargetBytes [4] && obj.DeviceID == readTargetBytes [5] && obj.LoopID == readTargetBytes [6]); if (device != null) { targetDeviceName = room.Name; targetDeviceName += " - " + device.Name; if (readTargetBytes [7] == 0) { targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.Close); } else if (readTargetBytes [7] == 100) { targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.Open); } break; } } else if (readTargetBytes [3] == 0x5f) { var device = room.DeviceList.Find ((obj) => obj.SubnetID == readTargetBytes [4] && obj.DeviceID == readTargetBytes [5] && obj.LoopID == readTargetBytes [8]); if (device != null) { targetDeviceName = room.Name; targetDeviceName += " - " + device.Name; //targetDeviceName = device.Name; if (readTargetBytes [6] == 3 || readTargetBytes [6] == 20) { if (readTargetBytes [7] == 0) { targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.Close); } else if (readTargetBytes [7] == 1) { targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.Open); } } else if (readTargetBytes [6] == 21) { switch (readTargetBytes [7]) { case 1: targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.Normal); break; case 2: targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.Day); break; case 3: targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.AtNight); break; case 4: targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.GoAway); break; case 5: targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.Auto); break; } } else if (readTargetBytes [6] < 28 && readTargetBytes [6] > 24) { device.obj2++; if (device.obj2 > 28) { device.obj2 = 25; } switch (device.obj3) { case 25: targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.Normal); break; case 26: targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.Day); break; case 27: targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.AtNight); break; case 28: targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.GoAway); break; } targetDeviceName += " " + readTargetBytes [7] + "°C"; } else if (readTargetBytes [6] == 6) { switch (readTargetBytes [7]) { case 0: targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.Cool); break; case 1: targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.Hot); break; case 2: targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.Ventila); break; case 3: targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.Auto); break; case 4: targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.Dehumidify); break; } } else if (readTargetBytes [6] == 4) { targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.Cool) + " " + readTargetBytes [7] + "°C"; } else if (readTargetBytes [6] == 7) { targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.Hot) + " " + readTargetBytes [7] + "°C"; } else if (readTargetBytes [6] == 8) { targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.Auto) + " " + readTargetBytes [7] + "°C"; } else if (readTargetBytes [6] == 19) { targetDeviceName += " - " + Language.StringByID (R.MyInternationalizationString.Dehumidify) + " " + readTargetBytes [7] + "°C"; } break; } } } Application.RunOnMainThread (() => { var rowTargetView = new RowLayout () { Height = Application.GetRealHeight (100), BackgroundColor = SkinStyle.Current.MainColor, }; targetView.AddChidren (rowTargetView); var btnDel = new Button () { BackgroundColor = SkinStyle.Current.DelColor, TextID = R.MyInternationalizationString.Del, TextColor = SkinStyle.Current.TextColor2, Tag = ii }; rowTargetView.AddRightView (btnDel); btnDel.MouseUpEventHandler += (ddff, ffdd) => { sensorAutomation.TargetBytesList.RemoveAt (Convert.ToInt32 (((Button)ddff).Tag)); InitAutomationView (); }; var btnTarget = new Button () { X = Application.GetRealWidth (60), Width = Application.GetRealWidth (580), Text = targetDeviceName, TextColor = SkinStyle.Current.TextColor1, TextAlignment = TextAlignment.CenterLeft, }; rowTargetView.AddChidren (btnTarget); }); } } catch (Exception ex) { Console.WriteLine (ex.Message); } finally { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); }); } }); #endregion #region 执行周期 //var cycleBytes = Control.ControlBytesSendHasReturn (Command.ReadSensorAutomationDateTimeCycle, autonmationDevice.SubnetID, autonmationDevice.DeviceID, new byte [] { sensorAutomation.sensorAutomationConditionList [0].PushId }); //TimeView timeView = new TimeView () { //}; #endregion } } } }