using System;
|
using System.Collections.Generic;
|
|
namespace Shared.SimpleControl.Phone
|
{
|
public class UserSensorAutomationSettingPage : FrameLayout
|
{
|
/// <summary>
|
/// 自动化条件目标的使能数据3*8 24bit 0 无效 1 有效,取前二十bit
|
/// </summary>
|
string targetEnableString = "";
|
|
SensorAutomationDevice autonmationDevice;
|
SensorAutomation sensorAutomation;
|
List<Common> SensorList;
|
VerticalScrolViewLayout conditionView;
|
VerticalScrolViewLayout targetView;
|
public UserSensorAutomationSettingPage (List<Common> listCommon, SensorAutomation sa, SensorAutomationDevice ad)
|
{
|
SensorList = listCommon;
|
autonmationDevice = ad;
|
sensorAutomation = sa;
|
}
|
|
public void ShowPage (Action<string> 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<SensorAutomation> action = (obj) => {
|
sensorAutomation = obj;
|
InitAutomationView ();
|
};
|
EventHandler<MouseEventArgs> 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<MouseEventArgs> 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> byte_List = new List<byte> ();
|
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
|
|
}
|
}
|
}
|
}
|