From 7e863a33397f317ffc3ffd9288496d0e4f16aa66 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期四, 12 十二月 2019 14:58:20 +0800
Subject: [PATCH] 合并了新代码
---
ZigbeeApp/Shared/Common/Device.cs | 88 +++++++++++++++++++++++++------------------
1 files changed, 51 insertions(+), 37 deletions(-)
diff --git a/ZigbeeApp/Shared/Common/Device.cs b/ZigbeeApp/Shared/Common/Device.cs
index d732082..409b460 100755
--- a/ZigbeeApp/Shared/Common/Device.cs
+++ b/ZigbeeApp/Shared/Common/Device.cs
@@ -107,8 +107,14 @@
List<string> listFile = this.GetAllDeviceFile();
foreach (string file in listFile)
{
+ CommonDevice device = null;
//鍙嶅簭鍒楀寲涓烘寚瀹氱殑绫伙紝涓嶇劧鏁版嵁浼氫涪澶辫�屽鑷存棤娉曞己杞�
- var device = ZigBee.Device.CommonDevice.CommonDeviceByFilePath(file);
+ try
+ {
+ device = CommonDevice.CommonDeviceByFilePath(file);
+ }
+ catch (Exception ex) { HdlLogLogic.Current.WriteLog(ex); }
+
if (device == null || device.CurrentGateWayId == null)
{
#if DEBUG
@@ -1745,53 +1751,61 @@
int receiveCount = 0;
//璁惧鍒楄〃
var listDevice = new List<CommonDevice>();
-
+ //缃戝叧閲岄潰鏈夊彲鑳戒細鏈夐噸澶嶇殑鍥炶矾
+ var listCheck = new HashSet<string>();
Action<string, string> getDeviceAction = (topic, message) =>
{
- try
+ if (topic == gatewayID + "/" + "DeviceInfoRespon")
{
- if (topic == gatewayID + "/" + "DeviceInfoRespon")
+ try
{
- TimeOut = 0;
- var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
- var totalNum = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["TotalNum"].ToString());
- if (totalNum == 0)
+ lock (listDevice)
{
- //杩欎釜缃戝叧娌℃湁璁惧
- canBreak = true;
- return;
- }
- if (deviceCount == -1)
- {
- //璁剧疆闇�瑕佹帴鏀跺灏戜釜璁惧
- deviceCount = totalNum;
- }
- //璁惧鎺ユ敹鏁�
- receiveCount++;
+ //璁惧鎺ユ敹鏁�
+ receiveCount++;
- var deviceID = (DeviceType)jobject.Value<int>("Device_ID");
- //鏍规嵁璁惧绫诲瀷鍒涘缓璁惧瀵硅薄鐨勫疄渚�
- var device = this.NewDeviceObjectByDeviceId(deviceID, jobject, zbGateway);
- if (device != null)
- {
- try
+ TimeOut = 0;
+ var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+ var totalNum = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["TotalNum"].ToString());
+ if (totalNum == 0)
{
- //鍥炶皟鍑芥暟
- deviceComingAction?.Invoke(device);
+ //杩欎釜缃戝叧娌℃湁璁惧
+ canBreak = true;
+ return;
}
- //Log鍑哄姏
- catch (Exception ex) { HdlLogLogic.Current.WriteLog(ex); }
+ if (deviceCount == -1)
+ {
+ //璁剧疆闇�瑕佹帴鏀跺灏戜釜璁惧
+ deviceCount = totalNum;
+ }
- listDevice.Add(device);
- }
- if (deviceCount == receiveCount)
- {
- //璁惧鍏ㄩ儴鎺ユ敹瀹屾垚
- canBreak = true;
+ var deviceID = (DeviceType)jobject.Value<int>("Device_ID");
+ //鏍规嵁璁惧绫诲瀷鍒涘缓璁惧瀵硅薄鐨勫疄渚�
+ var device = this.NewDeviceObjectByDeviceId(deviceID, jobject, zbGateway);
+ if (device != null)
+ {
+ string mainkeys = this.GetDeviceMainKeys(device);
+ //缃戝叧閲岄潰鏈夊彲鑳戒細鏈夐噸澶嶇殑鍥炶矾
+ if (listCheck.Contains(mainkeys) == false)
+ {
+ //鍥炶皟鍑芥暟
+ deviceComingAction?.Invoke(device);
+ listDevice.Add(device);
+
+ listCheck.Add(mainkeys);
+ }
+ }
}
}
+ //Log鍑哄姏
+ catch (Exception ex) { HdlLogLogic.Current.WriteLog(ex); }
+
+ if (receiveCount == deviceCount && deviceCount != -1)
+ {
+ //璁惧鍏ㄩ儴鎺ユ敹瀹屾垚
+ canBreak = true;
+ }
}
- catch { }
};
realWay.Actions += getDeviceAction;
@@ -2258,7 +2272,7 @@
/// </summary>
AirSwitch = -4100,
/// <summary>
- /// 寰柇浜戞帶鍒跺櫒 闀滃儚id锛�4100
+ /// 鏅鸿兘绌哄紑 闀滃儚id锛�4100
/// </summary>
AirSwitch_CloudContr = 4100,
--
Gitblit v1.8.0