using System; using Shared.SimpleControl.Phone; using System.Collections.Generic; using System.Text; using System.Net.NetworkInformation; namespace Shared.SimpleControl { public class EquipmentPublicClass { public void AlertNotOnline () { new Alert ("", Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), Language.StringByID (R.MyInternationalizationString.Close)).Show (); } static object lockObj = new object (); /// /// 检测/连接远程 /// /// The link remote. /// Status. public static void CheckLinkRemote (int status) { lock (lockObj) { Console.WriteLine ("CheckLinkRemote!!!"); System.Threading.Tasks.Task.Run (() => { try { if (status == 0) { Application.RunOnMainThread (() => { MainPage.WiFiStatus = "CrabtreeAdd/WiFiUnlink.png"; MainPage.AddTip (Language.StringByID (R.MyInternationalizationString.InternetStatusTip)); //UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; }); } else { MainPage.WiFiStatus = "CrabtreeAdd/WiFi.png"; if (MainPage.LoginUser == null || !MainPage.LoginUser.IsLogin) { return; } var localFileList = IO.FileUtils.ReadFiles (); var gateWayList = localFileList.FindAll ((obj) => { return (obj.StartsWith ("Equipment_")) && ( obj.Split ('_') [1].ToString () == DeviceType.OnePortBus.ToString () || obj.Split ('_') [1].ToString () == DeviceType.RCU.ToString () || obj.Split ('_') [1].ToString () == DeviceType.OnePortWirelessFR.ToString ()); }); string rmf = ""; List linkList = new List (); GatewayBase common = null; string gateWayString = ""; if (gateWayList.Count > 1) { foreach (var gatewayFileName in gateWayList) { var tempStrings = gatewayFileName.Split ('_'); if (tempStrings [1].ToString () == DeviceType.OnePortBus.ToString () || tempStrings [1].ToString () == DeviceType.RCU.ToString () || tempStrings [1].ToString () == DeviceType.OnePortWirelessFR.ToString ()) { gateWayString = CommonPage.MyEncodingUTF8.GetString (IO.FileUtils.ReadFile (gatewayFileName)); common = Newtonsoft.Json.JsonConvert.DeserializeObject (gateWayString); if (common.MAC.Replace (".", "") == UserConfig.Instance.GatewayMAC.Replace (".", "")) { rmf = gatewayFileName; if (!string.IsNullOrEmpty (common.Remote_UserName) && !string.IsNullOrEmpty (common.Remote_Password) && !string.IsNullOrEmpty (common.Remote_GroupName) && !string.IsNullOrEmpty (common.Remote_ProjectName)) { break; } } common = null; } } } else if (gateWayList.Count == 1) { rmf = gateWayList [0]; gateWayString = CommonPage.MyEncodingUTF8.GetString (IO.FileUtils.ReadFile (rmf)); common = Newtonsoft.Json.JsonConvert.DeserializeObject (gateWayString); } else { return; } #if DEBUG if (common == null) { if (MainPage.LoginUser.AccountString == "464027401@qq.com") { gateWayString = CommonPage.MyEncodingUTF8.GetString (IO.FileUtils.ReadFile (UserConfig.Instance.RemoteModeFile)); common = Newtonsoft.Json.JsonConvert.DeserializeObject (gateWayString); } } #endif if (common == null || common.Type == DeviceType.UnKown) { return; } Application.RunOnMainThread (() => { MainPage.Loading.Start ("Please wait..."); }); if (status == 1) { //if (common.Type == DeviceType.OnePortWirelessFR) { // var gateWay = Newtonsoft.Json.JsonConvert.DeserializeObject (gateWayString); // var mac = gateWay.MAC.Replace (".", ""); // SystemRemote.LinkRemote (gateWay.Remote_UserName, gateWay.Remote_ProjectName, gateWay.Remote_Password, true, mac); //} else if (common.Type == DeviceType.OnePortBus) { // var gateWay = Newtonsoft.Json.JsonConvert.DeserializeObject (gateWayString); // var mac = gateWay.MAC.Replace (".", ""); // SystemRemote.LinkRemote (gateWay.Remote_UserName, gateWay.Remote_ProjectName, gateWay.Remote_Password, true, mac); //} else if (common.Type == DeviceType.RCU) { // var gateWay = Newtonsoft.Json.JsonConvert.DeserializeObject (gateWayString); // var mac = gateWay.MAC.Replace (".", ""); // SystemRemote.LinkRemote (gateWay.Remote_UserName, gateWay.Remote_ProjectName, gateWay.Remote_Password, true, mac); //} var gateWay = Newtonsoft.Json.JsonConvert.DeserializeObject (gateWayString); SystemRemote.LinkRemote (gateWay.Remote_UserName, gateWay.Remote_ProjectName, gateWay.Remote_Password, true); } else { CommonPage.IsRemote = false; CommonPage.FindGateway = true; var result = Control.ControlBytesSendHasReturn (Command.ReadDeviceMac, common.SubnetID, common.DeviceID, new byte [] { }, false); CommonPage.FindGateway = false; if (result != null) { var mac0 = CommonPage.byteToHex16 (result [0]) + "." + CommonPage.byteToHex16 (result [1]) + "." + CommonPage.byteToHex16 (result [2]) + "." + CommonPage.byteToHex16 (result [3]) + "." + CommonPage.byteToHex16 (result [4]) + "." + CommonPage.byteToHex16 (result [5]) + "." + CommonPage.byteToHex16 (result [6]) + "." + CommonPage.byteToHex16 (result [7]); //if (common.Type == DeviceType.OnePortBus) { if (common.MAC == mac0) { Application.RunOnMainThread (() => { MainPage.WiFiStatus = "CrabtreeAdd/WiFi.png"; //UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.LinkStatusTipColor; }); return; } } var gateWay = Newtonsoft.Json.JsonConvert.DeserializeObject (gateWayString); SystemRemote.LinkRemote (gateWay.Remote_UserName, gateWay.Remote_ProjectName, gateWay.Remote_Password, true); } } } catch (Exception ex) { Console.WriteLine (ex.ToString ()); } finally { Application.RunOnMainThread (() => { if (status != 0) { Shared.SimpleControl.Phone.UserMiddle.ReadAllDeviceStatus (); } UserMiddle.btnLinkStatus.UnSelectedImagePath = MainPage.WiFiStatus; MainPage.Loading.Hide (); }); } }); } } } }