From 6a860510eb765d6bd90fc324e70698410e1a1d70 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期三, 09 十二月 2020 09:45:56 +0800
Subject: [PATCH] 2020-12-09 1.更新
---
Crabtree/SmartHome/UI/SimpleControl/Phone/Light/UserDeviceToSocket.cs | 244 ++++++++++++++++++++++++++++++++++++------------
1 files changed, 180 insertions(+), 64 deletions(-)
diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Light/UserDeviceToSocket.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Light/UserDeviceToSocket.cs
index dd0a47d..820539f 100644
--- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Light/UserDeviceToSocket.cs
+++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Light/UserDeviceToSocket.cs
@@ -67,11 +67,13 @@
if (btn.Tag.ToString () == DeviceType.LightEnergySocket.ToString () + "_Voltage" || btn.Tag.ToString () == DeviceType.LightEnergySwitch.ToString () + "_Voltage") {
btn.Text = energy.ToString () + " W";
}
- } else if (updataType == 11) {
- if (btn.Tag.ToString () == DeviceType.LightEnergySocket.ToString () + "_Electric" || btn.Tag.ToString () == DeviceType.LightEnergySwitch.ToString () + "_Electric") {
- btn.Text = ((double)(Convert.ToDouble (energy) / 10)).ToString () + " kw.h";
- }
}
+ ////2020-07-01 瀹㈡埛鎻愬嚭闅愯棌kwh
+ //else if (updataType == 11) {
+ // if (btn.Tag.ToString () == DeviceType.LightEnergySocket.ToString () + "_Electric" || btn.Tag.ToString () == DeviceType.LightEnergySwitch.ToString () + "_Electric") {
+ // btn.Text = ((double)(Convert.ToDouble (energy) / 10)).ToString () + " kw.h";
+ // }
+ //}
}
}
}
@@ -94,7 +96,7 @@
continue;
}
foreach (var light in room.DeviceList) {
- if (light.Type == DeviceType.LightSwitchSocket) {
+ if (light.Type == DeviceType.LightEnergySocket) {
if ((light as LightSwitch).CurrentBrightness == 100)
brighingCount++;
}
@@ -149,7 +151,7 @@
if (roomRow.Tag.ToString () == room.Name) {
int oCount = 0;
foreach (var light in room.DeviceList) {
- if (light.Type == DeviceType.LightSwitchSocket) {
+ if (light.Type == DeviceType.LightEnergySocket) {
if ((light as LightSwitch).CurrentBrightness == 100)
oCount++;
}
@@ -185,8 +187,14 @@
/// 鎺у埗鎵�鏈夌殑鐏�
/// </summary>
/// <param name="b">The blue component.</param>
- void controlAllLight (byte b)
+ void controlAllLightOld (byte b)
{
+ if (CommonPage.IsRemote) {
+ if (!SmartHome.MqttCommon.IsGatewayOnline) {
+ new Alert ("", "Gateway offline" + ErrorCode.ControlFailure, "Close").Show ();
+ return;
+ }
+ }
showTip = true;
System.Threading.Tasks.Task.Run (() => {
@@ -201,40 +209,126 @@
foreach (var common in room.DeviceList) {
//controlDeviceIndex++;
byte [] returnBytes = null;
- if (common.Type == DeviceType.LightSwitchSocket || common.Type == DeviceType.LightEnergySocket) {
+ if (common.Type == DeviceType.LightEnergySocket) {
returnBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { common.LoopID, b, 0, 0 });
if (showTip) {
- Application.RunOnMainThread (() => {
- if (returnBytes == null) {
- string tipString = Language.StringByID (R.MyInternationalizationString.ControlFailure);
+ if (returnBytes == null) {
+ Application.RunOnMainThread (() => {
+
var btnTip = new Button () {
Height = Application.GetRealHeight (140),
- Text = common.Name + tipString,// + "..." + controlDeviceIndex.ToString () + @"/" + sceneDeviceCount.ToString (),
- BackgroundColor = 0xFF000000,
- //TextColor = 0xFF000000
+ Text = common.Name + ErrorCode.ControlFailure,
+ BackgroundColor = 0xFFD7D7D7,
};
MainPage.MainFrameLayout.AddChidren (btnTip);
btnTip.MouseUpEventHandler += (sender, e) => {
btnTip.RemoveFromParent ();
- //MainPage.MainFrameLayout.Remove (btnTip);
};
System.Threading.Tasks.Task.Run (() => {
System.Threading.Thread.Sleep (3000);
Application.RunOnMainThread (() => {
btnTip.RemoveFromParent ();
- //MainPage.MainFrameLayout.Remove (btnTip);
- showTip = false;
});
});
- }
- });
+
+ });
+ }
}
}
}
}
} catch (Exception ex) {
- Console.WriteLine (ex.Message);
+ Utlis.WriteLine (ex.Message);
+ } finally {
+ Application.RunOnMainThread (() => {
+ MainPage.Loading.Hide ();
+ });
+ }
+ });
+ }
+
+ private readonly object SendLocker = new object ();
+ /// <summary>
+ /// 鎺у埗鎵�鏈夌殑鐏�
+ /// </summary>
+ /// <param name="b">The blue component.</param>
+ void controlAllLight (byte b)
+ {
+ if (CommonPage.IsRemote) {
+ if (!SmartHome.MqttCommon.IsGatewayOnline) {
+ new Alert ("", "Gateway offline" + ErrorCode.ControlFailure, "Close").Show ();
+ return;
+ }
+ }
+ showTip = true;
+
+ System.Threading.Tasks.Task.Run (() => {
+ try {
+ int mSendCount = 0;
+ Application.RunOnMainThread (() => {
+ MainPage.Loading.Start ("Sending...");
+ });
+ foreach (var room in Room.Lists) {
+ if (string.IsNullOrEmpty (room.Name)) {
+ continue;
+ }
+ foreach (var common in room.DeviceList) {
+ //controlDeviceIndex++;
+ byte [] returnBytes = null;
+ if (common.Type == DeviceType.LightEnergySocket) {
+ new System.Threading.Thread (() => {
+ try {
+ lock (SendLocker) {
+ mSendCount++;
+ }
+ //mSendCount++;
+ returnBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { common.LoopID, b, 0, 0 });
+ if (showTip) {
+ if (returnBytes == null) {
+ Application.RunOnMainThread (() => {
+
+ var btnTip = new Button () {
+ Height = Application.GetRealHeight (140),
+ Text = common.Name + ErrorCode.ControlFailure,
+ BackgroundColor = 0xFFD7D7D7,
+ };
+ MainPage.MainFrameLayout.AddChidren (btnTip);
+ btnTip.MouseUpEventHandler += (sender, e) => {
+ btnTip.RemoveFromParent ();
+ };
+
+ System.Threading.Tasks.Task.Run (() => {
+ System.Threading.Thread.Sleep (3000);
+ Application.RunOnMainThread (() => {
+ btnTip.RemoveFromParent ();
+ });
+ });
+
+ });
+ }
+ }
+ //mSendCount--;
+ } catch { } finally {
+ lock (SendLocker) {
+ mSendCount--;
+ }
+ }
+ }) { IsBackground = true }.Start ();
+
+ //绛夊緟100ms鍐嶅彂閫佺浜屼釜璁惧鏁版嵁
+ System.Threading.Thread.Sleep (100);
+
+ }
+ }
+ }
+
+
+ while (mSendCount > 0) {
+ System.Threading.Thread.Sleep (100);
+ }
+ } catch (Exception ex) {
+ Utlis.WriteLine (ex.Message);
} finally {
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
@@ -332,7 +426,7 @@
continue;
}
foreach (var common in room.DeviceList) {
- if (common.Type == DeviceType.LightSwitchSocket || common.Type == DeviceType.LightEnergySocket) {
+ if (common.Type == DeviceType.LightEnergySocket) {
LightCount++;
var light = common as LightSwitch;
var lightView = new FrameLayout () {
@@ -364,13 +458,15 @@
};
lightView.AddChidren (tempSwitch);
tempSwitch.MouseUpEventHandler += (sender3, e3) => {
- tempSwitch.IsSelected = !tempSwitch.IsSelected;
- if (tempSwitch.IsSelected) {
- light.CurrentBrightness = 100;
- } else {
- light.CurrentBrightness = 0;
- }
- Control.ControlBytesSend (Command.SetSingleLight, light.SubnetID, light.DeviceID, new byte [] { light.LoopID, light.CurrentBrightness, light.DelayTimeHeight, light.DelayTimeLow });
+ //tempSwitch.IsSelected = !tempSwitch.IsSelected;
+ //if (tempSwitch.IsSelected) {
+ // light.CurrentBrightness = 100;
+ //} else {
+ // light.CurrentBrightness = 0;
+ //}
+ int mSetBrightness = tempSwitch.IsSelected ? 0 : 100;
+ //Control.ControlBytesSend (Command.SetSingleLight, light.SubnetID, light.DeviceID, new byte [] { light.LoopID, light.CurrentBrightness, light.DelayTimeHeight, light.DelayTimeLow });
+ SendControl.SendControlSetSingleLight (light, new byte [] { light.LoopID, (byte)mSetBrightness, light.DelayTimeHeight, light.DelayTimeLow });
};
if (light.CurrentBrightness == 100) {
@@ -388,21 +484,21 @@
};
lightView.AddChidren (btnEnergy);
EnergtLightList.Add (common);
-
- //if (common.Type == DeviceType.LightEnergySwitch) {
- Button btnElectric = new Button () {
- Width = Application.GetRealWidth (200),
- Height = Application.GetRealHeight (35),
- X = Application.GetRealWidth (320),
- Y = tempSwitch.Bottom,
- TextColor = SkinStyle.Current.TextColor1,
- SelectedTextColor = SkinStyle.Current.TextColor1,
- TextAlignment = TextAlignment.CenterRight,
- Tag = common.Type.ToString () + "_Electric",
- Text = "0 kw.h"
- };
- lightView.AddChidren (btnElectric);
- //}
+ //2020-07-01 瀹㈡埛鎻愬嚭闅愯棌kwh
+ ////if (common.Type == DeviceType.LightEnergySwitch) {
+ //Button btnElectric = new Button () {
+ // Width = Application.GetRealWidth (200),
+ // Height = Application.GetRealHeight (35),
+ // X = Application.GetRealWidth (320),
+ // Y = tempSwitch.Bottom,
+ // TextColor = SkinStyle.Current.TextColor1,
+ // SelectedTextColor = SkinStyle.Current.TextColor1,
+ // TextAlignment = TextAlignment.CenterRight,
+ // Tag = common.Type.ToString () + "_Electric",
+ // Text = "0 kw.h"
+ // };
+ // lightView.AddChidren (btnElectric);
+ ////}
Button btnEnergyNull = new Button () {
Y = Application.GetRealHeight (127),
@@ -419,7 +515,9 @@
while (readEnergy) {
foreach (var c in EnergtLightList) {
Control.ControlBytesSend (Command.ReadAnalogValue, c.SubnetID, c.DeviceID, new byte [] { 10, c.LoopID }, SendCount.Zero);
- Control.ControlBytesSend (Command.ReadAnalogValue, c.SubnetID, c.DeviceID, new byte [] { 11, c.LoopID }, SendCount.Zero);
+ //2020-07-01 瀹㈡埛鎻愬嚭闅愯棌kwh
+ //Control.ControlBytesSend (Command.ReadAnalogValue, c.SubnetID, c.DeviceID, new byte [] { 11, c.LoopID }, SendCount.Zero);
+ System.Threading.Thread.Sleep (200);
}
Thread.Sleep (10000);
}
@@ -461,20 +559,31 @@
#endregion
}
+ /// <summary>
+ /// 璇诲彇鏍囧織
+ /// </summary>
+ static bool IsReadingAll = false;
+
static System.Threading.Thread thread;
/// <summary>
/// 璇诲彇璁惧鐘舵��
/// </summary>
- public static void readAllStatus (bool isRead = false)
+ public static void readAllStatus (bool isRead = false, bool isCheckIsReadingAll = false)
{
+ if (isCheckIsReadingAll) {
+ if (IsReadingAll && !isRead) {
+ Utlis.WriteLine ("IsLightReadingAll 璇诲彇涓�");
+ return;
+ }
+ }
if (isRead) {
foreach (Room room in Room.Lists) {
- if (string.IsNullOrEmpty(room.Name)) {
+ if (string.IsNullOrEmpty (room.Name)) {
continue;
}
var list = room.DeviceList.FindAll ((obj) => {
- return obj.Type == DeviceType.LightSwitchSocket;
- });
+ return obj.Type == DeviceType.LightEnergySocket;
+ });
foreach (Common common in list) {
common.LastUpdateTime = DateTime.MinValue;
}
@@ -485,29 +594,36 @@
}
thread = new Thread (() => {
try {
- System.Collections.Generic.List<string> readList = new System.Collections.Generic.List<string> ();
- foreach (Room room in Room.Lists) {
- if (string.IsNullOrEmpty(room.Name)) {
- continue;
- }
- var list = room.DeviceList.FindAll ((obj) => {
- return obj.LastUpdateTime.AddMinutes (Common.Time) <= DateTime.Now && obj.Type == DeviceType.LightSwitchSocket;
- });
- foreach (Common common in list) {
- var s = common.Type + "_" + common.SubnetID + "_" + common.DeviceID;
- //宸茬粡璇诲彇杩囧綋鍓嶈澶囧氨涓嶅啀璇诲彇
- if (readList.Contains (s)) {
+ IsReadingAll = true;
+ System.Collections.Generic.List<string> readList = new System.Collections.Generic.List<string> ();
+ foreach (Room room in Room.Lists) {
+ if (string.IsNullOrEmpty (room.Name)) {
continue;
}
- readList.Add (s);
- Control.ControlBytesSendHasReturn (Command.ReadLightEquipmentAllLoopBrightness, common.SubnetID, common.DeviceID, new byte [] { });
+ var list = room.DeviceList.FindAll ((obj) => {
+ return obj.LastUpdateTime.AddMinutes (Common.Time) <= DateTime.Now && obj.Type == DeviceType.LightEnergySocket;
+ });
+ foreach (Common common in list) {
+ var s = common.Type + "_" + common.SubnetID + "_" + common.DeviceID;
+ //宸茬粡璇诲彇杩囧綋鍓嶈澶囧氨涓嶅啀璇诲彇
+ if (readList.Contains (s)) {
+ continue;
+ }
+ readList.Add (s);
+ Control.ControlBytesSend (Command.ReadLightEquipmentAllLoopBrightness, common.SubnetID, common.DeviceID, new byte [] { });
+ Thread.Sleep (200);
+ }
}
- }
- } catch { } finally {
+ IsReadingAll = false;
+ } catch {
+ IsReadingAll = false;
+ } finally {
thread = null;
}
});
thread.Start ();
}
+
+
}
}
\ No newline at end of file
--
Gitblit v1.8.0