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 | 155 +++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 124 insertions(+), 31 deletions(-)
diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Light/UserDeviceToSocket.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Light/UserDeviceToSocket.cs
index 789239d..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,7 +187,7 @@
/// 鎺у埗鎵�鏈夌殑鐏�
/// </summary>
/// <param name="b">The blue component.</param>
- void controlAllLight (byte b)
+ void controlAllLightOld (byte b)
{
if (CommonPage.IsRemote) {
if (!SmartHome.MqttCommon.IsGatewayOnline) {
@@ -207,7 +209,7 @@
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) {
if (returnBytes == null) {
@@ -237,7 +239,96 @@
}
}
} 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 ();
@@ -335,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 () {
@@ -393,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),
@@ -424,8 +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);
- System.Threading.Thread.Sleep (500);
+ //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);
}
@@ -480,7 +572,7 @@
{
if (isCheckIsReadingAll) {
if (IsReadingAll && !isRead) {
- Console.WriteLine ("IsLightReadingAll 璇诲彇涓�");
+ Utlis.WriteLine ("IsLightReadingAll 璇诲彇涓�");
return;
}
}
@@ -490,7 +582,7 @@
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;
@@ -509,7 +601,7 @@
continue;
}
var list = room.DeviceList.FindAll ((obj) => {
- return obj.LastUpdateTime.AddMinutes (Common.Time) <= DateTime.Now && obj.Type == DeviceType.LightSwitchSocket;
+ 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;
@@ -518,7 +610,8 @@
continue;
}
readList.Add (s);
- Control.ControlBytesSendHasReturn (Command.ReadLightEquipmentAllLoopBrightness, common.SubnetID, common.DeviceID, new byte [] { });
+ Control.ControlBytesSend (Command.ReadLightEquipmentAllLoopBrightness, common.SubnetID, common.DeviceID, new byte [] { });
+ Thread.Sleep (200);
}
}
IsReadingAll = false;
--
Gitblit v1.8.0