using Shared.Common;
|
using System;
|
using System.Collections.Generic;
|
using System.Text;
|
using System.Threading.Tasks;
|
using ZigBee.Device;
|
|
namespace Shared.Phone.UserCenter.DeviceCurtain
|
{
|
/// <summary>
|
/// 开合帘的方向与限位的配置界面
|
/// </summary>
|
public class AutoOpenDirectionAndLimitSettionForm : EditorCommonForm
|
{
|
#region ■ 变量声明___________________________
|
|
/// <summary>
|
///窗帘的回路
|
/// </summary>
|
private Rollershade curtainDevice = null;
|
/// <summary>
|
/// 窗帘数据
|
/// </summary>
|
private CurtainData curtainData = null;
|
/// <summary>
|
/// 允许接收上限位(0:不允许 1:允许)
|
/// </summary>
|
private string receiveUplimit = "0";
|
/// <summary>
|
/// 允许接收下限位(0:不允许 1:允许)
|
/// </summary>
|
private string receiveDownLimit = "0";
|
/// <summary>
|
/// 是否备份窗帘数据
|
/// </summary>
|
private bool backupCurtainData = false;
|
/// <summary>
|
/// 列表控件
|
/// </summary>
|
private VerticalListControl listView = null;
|
|
#endregion
|
|
#region ■ 初始化_____________________________
|
|
/// <summary>
|
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
|
/// </summary>
|
/// <param name="i_listdevice">窗帘的回路</param>
|
public void ShowForm(Rollershade i_CurtainDevice)
|
{
|
UserView.HomePage.Instance.ScrollEnabled = false;
|
|
this.curtainDevice = i_CurtainDevice;
|
|
//设置标题信息
|
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uDirectionAndLimit));
|
|
HdlThreadLogic.Current.RunThread(() =>
|
{
|
//初始化中部控件
|
this.InitMiddleFrame();
|
});
|
}
|
|
/// <summary>
|
/// 初始化中部信息
|
/// </summary>
|
private void InitMiddleFrame()
|
{
|
//获取设备初始数据
|
var result = this.InitCurtainDefultData();
|
if (result == false)
|
{
|
//显示重新加载的界面
|
this.ShowReLoadView();
|
return;
|
}
|
HdlThreadLogic.Current.RunMain(() =>
|
{
|
//清空bodyFrame
|
bodyFrameLayout.BackgroundColor = UserCenterColor.Current.White;
|
this.ClearBodyFrame();
|
|
this.listView = new VerticalListControl(29);
|
listView.Y = Application.GetRealHeight(-6);
|
listView.Height = bodyFrameLayout.Height;
|
bodyFrameLayout.AddChidren(listView);
|
|
//添加方向行
|
this.AddDirectionRow();
|
//添加限位行
|
this.AddLimitRow();
|
//添加重置电机行
|
this.AddElectricalMachineryRow();
|
//保存
|
var btnSave = new BottomClickButton();
|
btnSave.TextID = R.MyInternationalizationString.uSave;
|
bodyFrameLayout.AddChidren(btnSave);
|
btnSave.ButtonClickEvent += (sender, e) =>
|
{
|
//这个保存没啥意义
|
this.CloseForm();
|
};
|
//限位数据接收
|
this.ReceiveLimitData();
|
});
|
}
|
|
#endregion
|
|
#region ■ 方向行_____________________________
|
|
/// <summary>
|
/// 添加方向行
|
/// </summary>
|
private void AddDirectionRow()
|
{
|
var rowDirection = new FrameRowControl(listView.rowSpace / 2);
|
listView.AddChidren(rowDirection);
|
//方向
|
rowDirection.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uDirection), 600);
|
//右箭头
|
rowDirection.AddRightArrow();
|
//状态
|
var btnStatu = rowDirection.AddMostRightView("", 300);
|
btnStatu.TextID = curtainData.Direction == false ? R.MyInternationalizationString.uForwardDirection : R.MyInternationalizationString.uReverseDirection;
|
//底线
|
rowDirection.AddBottomLine();
|
|
int nowSelectNo = curtainData.Direction == false ? 0 : 1;
|
rowDirection.ButtonClickEvent += (sender, e) =>
|
{
|
var listText = new List<string>();
|
listText.Add(Language.StringByID(R.MyInternationalizationString.uForwardDirection));//正向
|
listText.Add(Language.StringByID(R.MyInternationalizationString.uReverseDirection));//反向
|
|
var form = new BottomDialogSelectForm();
|
form.AddForm(Language.StringByID(R.MyInternationalizationString.uDirectionSelect), listText, nowSelectNo);
|
form.FinishSelectEvent += async (index) =>
|
{
|
//变更方向
|
var result = await HdlDeviceCurtainLogic.Current.SetCurtainDirection(curtainDevice, index == 0 ? false : true);
|
if (result == false)
|
{
|
return;
|
}
|
nowSelectNo = index;
|
btnStatu.Text = listText[index];
|
curtainData.Direction = index == 0 ? false : true;
|
};
|
};
|
}
|
|
#endregion
|
|
#region ■ 限位行_____________________________
|
|
/// <summary>
|
/// 添加限位行
|
/// </summary>
|
private void AddLimitRow()
|
{
|
var frameBack = new FrameLayout();
|
frameBack.Height = Application.GetRealHeight(679);
|
|
var rowLimit = new FrameRowControl(listView.rowSpace / 2);
|
rowLimit.UseClickStatu = false;
|
listView.AddChidren(rowLimit);
|
//限位
|
rowLimit.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uLimit), 600);
|
//右箭头
|
var btnRinght = rowLimit.AddMostRightEmptyIcon(58, 58);
|
rowLimit.ChangedChidrenBindMode(btnRinght, ChidrenBindMode.NotBind);
|
btnRinght.UseClickStatu = false;
|
btnRinght.UnSelectedImagePath = "Item/Next.png";
|
btnRinght.SelectedImagePath = "Item/Down.png";
|
btnRinght.IsSelected = true;
|
btnRinght.ButtonClickEvent += (sender, e) =>
|
{
|
btnRinght.IsSelected = !btnRinght.IsSelected;
|
//展开折叠
|
frameBack.Height = frameBack.Height > 10 ? 0 : Application.GetRealHeight(679);
|
};
|
//底线
|
rowLimit.AddBottomLine();
|
|
listView.AddChidren(frameBack);
|
//添加开限位进度条
|
this.AddOpenLimitProgress(frameBack);
|
//添加合限位进度条
|
this.AddCloseLimitProgress(frameBack);
|
}
|
|
/// <summary>
|
/// 添加开限位进度条
|
/// </summary>
|
/// <param name="frameBack"></param>
|
private void AddOpenLimitProgress(FrameLayout frameBack)
|
{
|
//开限位
|
var btnProgressView = new NormalViewControl(200, 50, true);
|
btnProgressView.X = ControlCommonResourse.XXLeft;
|
btnProgressView.Y = Application.GetRealHeight(60);
|
btnProgressView.TextSize = 12;
|
btnProgressView.TextColor = UserCenterColor.Current.TextGrayColor1;
|
btnProgressView.TextID = R.MyInternationalizationString.uOpenLimit;
|
frameBack.AddChidren(btnProgressView);
|
|
int progressValue = (int)(curtainData.OpenLimitValue / (curtainData.CurtainLength * 1.0) * 100);
|
var btnProgress1 = new NormalViewControl(200, 50, true);
|
btnProgress1.X = Application.GetRealWidth(200);
|
btnProgress1.Y = btnProgressView.Y;
|
btnProgress1.TextSize = 12;
|
btnProgress1.TextColor = UserCenterColor.Current.TextGrayColor1;
|
btnProgress1.Text = progressValue + "%";
|
frameBack.AddChidren(btnProgress1);
|
//进度条
|
var seekBar = new HorizontalSeekBar();
|
seekBar.Y = btnProgressView.Bottom + Application.GetRealHeight(46);
|
seekBar.Gravity = Gravity.CenterHorizontal;
|
seekBar.Width = Application.GetRealWidth(962);
|
seekBar.Height = Application.GetRealHeight(84);
|
seekBar.Max = 100;
|
seekBar.BackgroundColor = 0xfff5f5f5;
|
seekBar.ThumbColor = Common.ZigbeeColor.Current.GXCButtonBlueColor;
|
seekBar.ProgressColor = 0xff288bfd;
|
seekBar.Progress = progressValue;
|
frameBack.AddChidren(seekBar);
|
|
var btnTemp1 = new NormalViewControl(200, 50, true);
|
btnTemp1.X = ControlCommonResourse.XXLeft;
|
btnTemp1.Y = btnProgressView.Bottom + Application.GetRealHeight(115);
|
btnTemp1.TextSize = 12;
|
btnTemp1.TextColor = UserCenterColor.Current.TextGrayColor3;
|
btnTemp1.Text = "0%";
|
frameBack.AddChidren(btnTemp1);
|
var btnTemp2 = new NormalViewControl(200, 50, true);
|
btnTemp2.X = frameBack.Width - Application.GetRealWidth(200 + 50);
|
btnTemp2.Y = btnTemp1.Y;
|
btnTemp2.TextAlignment = TextAlignment.CenterRight;
|
btnTemp2.TextSize = 12;
|
btnTemp2.TextColor = UserCenterColor.Current.TextGrayColor3;
|
btnTemp2.Text = "100%";
|
frameBack.AddChidren(btnTemp2);
|
//线
|
var btnLine = new NormalViewControl(frameBack.Width - ControlCommonResourse.XXLeft * 2, ControlCommonResourse.BottomLineHeight, false);
|
btnLine.X = ControlCommonResourse.XXLeft;
|
btnLine.Y = btnTemp2.Bottom + Application.GetRealHeight(69);
|
btnLine.BackgroundColor = UserCenterColor.Current.ButtomLine;
|
frameBack.AddChidren(btnLine);
|
|
int oldValue = progressValue;
|
int waitTime = 4;//500毫秒为单位
|
bool startWait = false;
|
bool checking = false;
|
seekBar.ProgressChanged += (sender, value) =>
|
{
|
//值继续改变,则等待时间还原
|
waitTime = 4;
|
if (checking == false)
|
{
|
startWait = true;
|
}
|
|
btnProgress1.Text = value + "%";
|
//数据变更,百分比
|
curtainData.OpenLimitPersent = value;
|
};
|
HdlThreadLogic.Current.RunThread(async () =>
|
{
|
while (seekBar.Parent != null)
|
{
|
if (startWait == false)
|
{
|
await Task.Delay(200);
|
continue;
|
}
|
//开启值改变等待
|
await Task.Delay(500);
|
waitTime--;
|
if (waitTime <= 0)
|
{
|
//如果2秒内值不再改变,则进行判断
|
startWait = false;
|
checking = true;
|
|
var value = seekBar.Progress;
|
if (oldValue == value)
|
{
|
//相同数值
|
checking = false;
|
continue;
|
}
|
oldValue = value;
|
if (curtainData.DeleteOpenLimit == true)
|
{
|
//重置开限位点
|
var result = await HdlDeviceCurtainLogic.Current.DeleteCurtainLimitPoint(curtainDevice, Rollershade.LimiType.UpLimit);
|
if (result == false)
|
{
|
checking = false;
|
continue;
|
}
|
curtainData.DeleteOpenLimit = false;
|
}
|
receiveUplimit = "1";
|
//将窗帘调整到指定百分比
|
curtainDevice.WcdGoToTiltValue(value);
|
checking = false;
|
}
|
}
|
});
|
|
//var oldTime = DateTime.Now;
|
//var oldValue = 0;
|
//seekBar.MouseUpEventHandler += async (sender, e) =>
|
//{
|
// if ((DateTime.Now - oldTime).TotalSeconds <= 1)
|
// {
|
// //最少需要2秒间隔
|
// return;
|
// }
|
// var value = seekBar.Progress;
|
// if (oldValue == value)
|
// {
|
// //相同数值
|
// return;
|
// }
|
// oldValue = value;
|
// oldTime = DateTime.Now;
|
|
// if (curtainData.DeleteOpenLimit == true)
|
// {
|
// //重置开限位点
|
// var result = await HdlDeviceCurtainLogic.Current.DeleteCurtainLimitPoint(curtainDevice, Rollershade.LimiType.UpLimit);
|
// if (result == false)
|
// {
|
// return;
|
// }
|
// curtainData.DeleteOpenLimit = false;
|
// }
|
// receiveUplimit = "1";
|
// //将窗帘调整到指定百分比
|
// curtainDevice.WcdGoToTiltValue(value);
|
//};
|
}
|
|
/// <summary>
|
/// 添加合限位进度条
|
/// </summary>
|
/// <param name="frameBack"></param>
|
private void AddCloseLimitProgress(FrameLayout frameBack)
|
{
|
//合限位
|
var btnProgressView = new NormalViewControl(200, 50, true);
|
btnProgressView.X = ControlCommonResourse.XXLeft;
|
btnProgressView.Y = Application.GetRealHeight(397);
|
btnProgressView.TextSize = 12;
|
btnProgressView.TextColor = UserCenterColor.Current.TextGrayColor1;
|
btnProgressView.TextID = R.MyInternationalizationString.uCloseLimit;
|
frameBack.AddChidren(btnProgressView);
|
|
int progressValue = (int)(curtainData.CloseLimitValue / (curtainData.CurtainLength * 1.0) * 100);
|
var btnProgress1 = new NormalViewControl(200, 50, true);
|
btnProgress1.X = Application.GetRealWidth(200);
|
btnProgress1.Y = btnProgressView.Y;
|
btnProgress1.TextSize = 12;
|
btnProgress1.TextColor = UserCenterColor.Current.TextGrayColor1;
|
btnProgress1.Text = progressValue + "%";
|
frameBack.AddChidren(btnProgress1);
|
//进度条
|
var seekBar = new HorizontalSeekBar();
|
seekBar.Y = btnProgressView.Bottom + Application.GetRealHeight(46);
|
seekBar.Gravity = Gravity.CenterHorizontal;
|
seekBar.Width = Application.GetRealWidth(962);
|
seekBar.Height = Application.GetRealHeight(84);
|
seekBar.Max = 100;
|
seekBar.BackgroundColor = 0xfff5f5f5;
|
seekBar.ThumbColor = Common.ZigbeeColor.Current.GXCButtonBlueColor;
|
seekBar.ProgressColor = 0xff288bfd;
|
seekBar.Progress = progressValue;
|
frameBack.AddChidren(seekBar);
|
|
var btnTemp1 = new NormalViewControl(200, 50, true);
|
btnTemp1.X = ControlCommonResourse.XXLeft;
|
btnTemp1.Y = btnProgressView.Bottom + Application.GetRealHeight(115);
|
btnTemp1.TextSize = 12;
|
btnTemp1.TextColor = UserCenterColor.Current.TextGrayColor3;
|
btnTemp1.Text = "0%";
|
frameBack.AddChidren(btnTemp1);
|
var btnTemp2 = new NormalViewControl(200, 50, true);
|
btnTemp2.X = frameBack.Width - Application.GetRealWidth(200 + 50);
|
btnTemp2.Y = btnTemp1.Y;
|
btnTemp2.TextAlignment = TextAlignment.CenterRight;
|
btnTemp2.TextSize = 12;
|
btnTemp2.TextColor = UserCenterColor.Current.TextGrayColor3;
|
btnTemp2.Text = "100%";
|
frameBack.AddChidren(btnTemp2);
|
//线
|
var btnLine = new NormalViewControl(frameBack.Width - ControlCommonResourse.XXLeft * 2, ControlCommonResourse.BottomLineHeight, false);
|
btnLine.X = ControlCommonResourse.XXLeft;
|
btnLine.Y = btnTemp2.Bottom + Application.GetRealHeight(69);
|
btnLine.BackgroundColor = UserCenterColor.Current.ButtomLine;
|
frameBack.AddChidren(btnLine);
|
|
int oldValue = progressValue;
|
int waitTime = 4;//500毫秒为单位
|
bool startWait = false;
|
bool checking = false;
|
seekBar.ProgressChanged += (sender, value) =>
|
{
|
//值继续改变,则等待时间还原
|
waitTime = 4;
|
if (checking == false)
|
{
|
startWait = true;
|
}
|
|
btnProgress1.Text = value + "%";
|
//数据变更,百分比
|
curtainData.CloseLimitPersent = value;
|
};
|
HdlThreadLogic.Current.RunThread(async () =>
|
{
|
while (seekBar.Parent != null)
|
{
|
if (startWait == false)
|
{
|
await Task.Delay(200);
|
continue;
|
}
|
//开启值改变等待
|
await Task.Delay(500);
|
waitTime--;
|
if (waitTime <= 0)
|
{
|
//如果2秒内值不再改变,则进行判断
|
startWait = false;
|
checking = true;
|
|
var value = seekBar.Progress;
|
if (oldValue == value)
|
{
|
//相同数值
|
checking = false;
|
continue;
|
}
|
oldValue = value;
|
if (curtainData.DeleteCloseLimit == true)
|
{
|
//重置合限位点
|
var result = await HdlDeviceCurtainLogic.Current.DeleteCurtainLimitPoint(curtainDevice, Rollershade.LimiType.DownLimit);
|
if (result == false)
|
{
|
checking = false;
|
continue;
|
}
|
curtainData.DeleteCloseLimit = false;
|
}
|
receiveDownLimit = "1";
|
//将窗帘调整到指定百分比
|
curtainDevice.WcdGoToTiltValue(value);
|
checking = false;
|
}
|
}
|
});
|
|
//var oldTime = DateTime.Now;
|
//var oldValue = 0;
|
//seekBar.MouseUpEventHandler += async (sender, e) =>
|
//{
|
// if ((DateTime.Now - oldTime).TotalSeconds <= 1)
|
// {
|
// //最少需要2秒间隔
|
// return;
|
// }
|
// var value = seekBar.Progress;
|
// if (oldValue == value)
|
// {
|
// //相同数值
|
// return;
|
// }
|
// oldValue = value;
|
// oldTime = DateTime.Now;
|
|
// if (curtainData.DeleteCloseLimit == true)
|
// {
|
// //重置合限位点
|
// var result = await HdlDeviceCurtainLogic.Current.DeleteCurtainLimitPoint(curtainDevice, Rollershade.LimiType.DownLimit);
|
// if (result == false)
|
// {
|
// return;
|
// }
|
// curtainData.DeleteCloseLimit = false;
|
// }
|
// receiveDownLimit = "1";
|
// //将窗帘调整到指定百分比
|
// curtainDevice.WcdGoToTiltValue(value);
|
//};
|
}
|
|
#endregion
|
|
#region ■ 重置电机___________________________
|
|
/// <summary>
|
/// 添加重置电机行
|
/// </summary>
|
private void AddElectricalMachineryRow()
|
{
|
var rowReset = new FrameRowControl(listView.rowSpace / 2);
|
listView.AddChidren(rowReset);
|
//重置电机
|
rowReset.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uResetElectricalMachinery), 600);
|
//底线
|
rowReset.AddBottomLine();
|
rowReset.ButtonClickEvent += (sender, e) =>
|
{
|
//重置电机将初始化{0}方向与限位设置,确认继续?
|
string msg = Language.StringByID(R.MyInternationalizationString.uResetElectricalMachineryMsg);
|
msg = msg.Replace("{0}", "\r\n");
|
this.ShowMassage(ShowMsgType.Confirm, msg, () =>
|
{
|
HdlThreadLogic.Current.RunThread(async () =>
|
{
|
//重置窗帘
|
var result = await HdlDeviceCurtainLogic.Current.RestoreCurtain(curtainDevice);
|
if (result == false)
|
{
|
return;
|
}
|
//获取数据后,备份窗帘数据
|
this.backupCurtainData = true;
|
//重新初始化界面
|
this.InitMiddleFrame();
|
});
|
});
|
};
|
}
|
|
#endregion
|
|
#region ■ 初始化窗帘数据_____________________
|
|
/// <summary>
|
/// 初始化窗帘数据
|
/// </summary>
|
/// <returns></returns>
|
private bool InitCurtainDefultData()
|
{
|
//开启进度条
|
this.ShowProgressBar();
|
|
this.curtainData = new CurtainData();
|
this.receiveUplimit = "0";
|
this.receiveDownLimit = "0";
|
|
bool receiptData = false;
|
string mainkeys = LocalDevice.Current.GetDeviceMainKeys(curtainDevice);
|
HdlDeviceAttributeLogic.Current.AddAttributeEvent("CurtainDeviceAttribute", "DeviceStatusReport", (device) =>
|
{
|
string checkKey = LocalDevice.Current.GetDeviceMainKeys(device);
|
if (mainkeys != checkKey || device.DeviceStatusReport.CluterID != 258)
|
{
|
return;
|
}
|
foreach (var attriBute in device.DeviceStatusReport.AttriBute)
|
{
|
if (attriBute.AttributeId == 23)
|
{
|
//开合帘方向
|
if (0 < (attriBute.AttriButeData & 0x01))
|
{
|
//反向
|
curtainData.Direction = true;
|
}
|
else
|
{
|
//正向
|
curtainData.Direction = false;
|
}
|
}
|
else if (attriBute.AttributeId == 1)
|
{
|
//窗帘总长
|
curtainData.CurtainLength = attriBute.AttriButeData;
|
}
|
else if (attriBute.AttributeId == 16)
|
{
|
//开限位
|
curtainData.OpenLimitValue = attriBute.AttriButeData;
|
}
|
else if (attriBute.AttributeId == 17)
|
{
|
//合限位
|
curtainData.CloseLimitValue = attriBute.AttriButeData;
|
//数据接收结束
|
receiptData = true;
|
}
|
}
|
});
|
//发送获取窗帘限位配置的命令
|
HdlDeviceCurtainLogic.Current.SetGetCurtainLimitSettionComand(curtainDevice);
|
|
int timeCount = 30;
|
while (receiptData == false && timeCount >= 0)
|
{
|
System.Threading.Thread.Sleep(100);
|
timeCount--;
|
}
|
//关闭进度条
|
this.CloseProgressBar();
|
|
if (timeCount <= 0)
|
{
|
//获取窗帘方向与限位设置失败
|
string msg = Language.StringByID(R.MyInternationalizationString.uGetCurtainDirectionAndLimitSettionFail);
|
//拼接上【网关回复超时】的Msg
|
msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "回复超时");
|
this.ShowMassage(ShowMsgType.Tip, msg);
|
return false;
|
}
|
//移除监听
|
HdlDeviceAttributeLogic.Current.RemoveEvent("CurtainDeviceAttribute");
|
|
//备份窗帘数据
|
if (this.backupCurtainData == true)
|
{
|
this.backupCurtainData = false;
|
HdlThreadLogic.Current.RunThread(async () =>
|
{
|
//方向备份
|
await HdlDeviceCurtainLogic.Current.BackupCurtainDirection(curtainDevice, curtainData.Direction);
|
//限位备份
|
int uplimit= (int)(curtainData.OpenLimitValue / (curtainData.CurtainLength * 1.0) * 100);
|
int downlimit = (int)(curtainData.CloseLimitValue / (curtainData.CurtainLength * 1.0) * 100);
|
await HdlDeviceCurtainLogic.Current.BackupCurtainLimitPoint(curtainDevice, uplimit, downlimit);
|
});
|
}
|
|
return true;
|
}
|
|
#endregion
|
|
#region ■ 限位数据接收_______________________
|
|
/// <summary>
|
/// 限位数据接收
|
/// </summary>
|
private void ReceiveLimitData()
|
{
|
if (HdlDeviceAttributeLogic.Current.IsEsixt("ReceiveLimitData") == true)
|
{
|
HdlDeviceAttributeLogic.Current.RemoveEvent("ReceiveLimitData");
|
}
|
string mainkeys = LocalDevice.Current.GetDeviceMainKeys(curtainDevice);
|
HdlDeviceAttributeLogic.Current.AddAttributeEvent("ReceiveLimitData", "DeviceStatusReport", (device) =>
|
{
|
string checkKey = LocalDevice.Current.GetDeviceMainKeys(device);
|
if (mainkeys != checkKey || device.DeviceStatusReport.CluterID != 258)
|
{
|
return;
|
}
|
lock (receiveUplimit)
|
{
|
if (receiveUplimit == "0" && receiveDownLimit == "0")
|
{
|
return;
|
}
|
foreach (var attriBute in device.DeviceStatusReport.AttriBute)
|
{
|
//窗帘百分比推送
|
if (attriBute.AttributeId == 8)
|
{
|
//上限位
|
if (receiveUplimit == "1")
|
{
|
receiveUplimit = "0";
|
//确认当前位置{0}为开限位?
|
string msg = Language.StringByID(R.MyInternationalizationString.uCommitCurtainOpenLimitMsg);
|
msg = msg.Replace("{0}", curtainData.OpenLimitPersent + "%");
|
this.ShowMassage(ShowMsgType.Confirm, msg, async () =>
|
{
|
//执行确认及覆盖上限位点
|
await HdlDeviceCurtainLogic.Current.CommitCurtainLimitPoint(curtainDevice, Rollershade.CurtainPrivateInstalledLimi.UpLimit,
|
curtainData.OpenLimitPersent, curtainData.CloseLimitPersent);
|
});
|
}
|
//合限位
|
else if (receiveDownLimit == "1")
|
{
|
receiveDownLimit = "0";
|
//确认当前位置{0}为合限位?
|
string msg = Language.StringByID(R.MyInternationalizationString.uCommitCurtainCloseLimitMsg);
|
msg = msg.Replace("{0}", curtainData.CloseLimitPersent + "%");
|
this.ShowMassage(ShowMsgType.Confirm, msg, async () =>
|
{
|
//执行确认及覆盖合限位点
|
await HdlDeviceCurtainLogic.Current.CommitCurtainLimitPoint(curtainDevice, Rollershade.CurtainPrivateInstalledLimi.DownLimit,
|
curtainData.OpenLimitPersent, curtainData.CloseLimitPersent);
|
});
|
}
|
}
|
}
|
}
|
});
|
}
|
|
#endregion
|
|
#region ■ 界面关闭___________________________
|
|
/// <summary>
|
/// 界面关闭
|
/// </summary>
|
public override void CloseForm()
|
{
|
HdlDeviceAttributeLogic.Current.RemoveEvent("CurtainDeviceAttribute");
|
HdlDeviceAttributeLogic.Current.RemoveEvent("ReceiveLimitData");
|
|
UserView.HomePage.Instance.ScrollEnabled = true;
|
|
base.CloseForm();
|
}
|
|
#endregion
|
|
#region ■ 结构体_____________________________
|
|
/// <summary>
|
/// 窗帘数据
|
/// </summary>
|
private class CurtainData
|
{
|
/// <summary>
|
/// false:电机方向正向;true:电机方向反向
|
/// </summary>
|
public bool Direction = false;
|
/// <summary>
|
/// 是否重置开限位点
|
/// </summary>
|
public bool DeleteOpenLimit = true;
|
/// <summary>
|
/// 是否重置合限位点
|
/// </summary>
|
public bool DeleteCloseLimit = true;
|
/// <summary>
|
/// 开限位的值
|
/// </summary>
|
public int OpenLimitValue = -1;
|
/// <summary>
|
/// 开限位的百分比
|
/// </summary>
|
public int OpenLimitPersent = -1;
|
/// <summary>
|
/// 合限位的值
|
/// </summary>
|
public int CloseLimitValue = -1;
|
/// <summary>
|
/// 合限位的百分比
|
/// </summary>
|
public int CloseLimitPersent = -1;
|
/// <summary>
|
/// 窗帘总长
|
/// </summary>
|
public int CurtainLength = -1;
|
}
|
|
#endregion
|
}
|
}
|