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
}
}
}
}