1
wxr
2022-12-30 9ebd6edb9beddf1a6881b2ca924ed43bf5cedfbe
SmartHome/UI/SimpleControl/Phone/System/SearchServerOnePortListPage.cs
@@ -1,5 +1,6 @@
        
using System;
using System.Collections.Generic;
using Shared;
using Shared.SimpleControl;
@@ -77,7 +78,7 @@
                text_Upgraded = "Upgraded";
                text_Upgrading = "Upgrading";
                text_UpgradeFailed = "Upgrade failed";
                text_UnknownVersion = "Unknown version";
                text_UnknownVersion = "Other version";
                text_readFailure = "Read failure";
                text_back = "Back";
                text_link = "Link";
@@ -229,10 +230,15 @@
                CommonPage.IsRemote = true;
                var sendBytes = new byte [29];
                var b1 = System.Text.Encoding.UTF8.GetBytes (userName);
                var b1 = CommonPage.MyEncodingGB2312.GetBytes (userName);
                byte [] ggn = new byte [20];
                Array.Copy (b1, 0, ggn, 0, 20 < b1.Length ? 20 : b1.Length);
                Array.Copy (ggn, 0, sendBytes, 9, 20);
                string newIp = "118.31.3.103";
                if(Language.CurrentLanguage!= "Chinese") {
                    newIp = "157.175.231.123";
                }
                new System.Threading.Thread (() => {
@@ -241,11 +247,12 @@
                        MainPage.Loading.Start ();
                    });
                    try {
                        //读取旧服务器上的工程列表
                        var sss = Control.ControlBytesSendHasReturn (Command.GetRemoteOnePortListInfo, 0xFB, 0xFB, sendBytes);
                        var oldGatewayList = new List<GatewayBase> ();
                        if (sss != null) {
                            try {
                                if (sss [1] == 248) {
                                    Application.RunOnMainThread (() => {
                                        MainPage.Loading.Start ();
                                        rightButton1.Text = txt_connectionSucceeded;
@@ -253,6 +260,7 @@
                                    });
                                    var count = sss [2] * 256 + sss [3];
                                    for (int i = 1; i <= count; i++) {
                                        byte [] arayImp = new byte [23];
                                        if (b1.Length <= 20)
@@ -264,19 +272,20 @@
                                        var oneProtData = Control.ControlBytesSendHasReturn (Command.GetRemoteOnePortInfo, 0xFB, 0xFB, arayImp);
                                        if (oneProtData != null) {
                                            try {
                                                var groupName = System.Text.Encoding.UTF8.GetString (oneProtData, 1, 20).Trim ('\0');//=============
                                                var projectName22 = System.Text.Encoding.UTF8.GetString (oneProtData, 23, 20).Trim ('\0');//=============
                                                var userName22 = System.Text.Encoding.UTF8.GetString (oneProtData, 43, 8).Trim ('\0');//=============
                                                var groupName = CommonPage.MyEncodingGB2312.GetString (oneProtData, 1, 20).Trim ('\0');
                                                var projectName22 = CommonPage.MyEncodingGB2312.GetString (oneProtData, 23, 20).Trim ('\0');
                                                var userName22 = CommonPage.MyEncodingGB2312.GetString (oneProtData, 43, 8).Trim ('\0');
                                                var isOnline = oneProtData [57] == 1;
                                                Application.RunOnMainThread (() => {
                                                    RowLayout wirelessView = new RowLayout () {
                                                        Height = Application.GetRealHeight (93),
                                                        BackgroundColor = SkinStyle.Current.ViewColor,
                                                    };
                                                    listView.AddChidren (wirelessView);
                                                    showGatewayRow (userName22,projectName22, wirelessView,isOnline);
                                                });
                                                GatewayBase gatewayBase = new GatewayBase () {
                                                    Remote_GroupName = groupName,
                                                    Remote_ProjectName = projectName22,
                                                    Remote_UserName = userName22,
                                                    isOnline = isOnline,
                                                };
                                                oldGatewayList.Add (gatewayBase);
                                            }catch (Exception ex) {
                                            }
@@ -284,8 +293,77 @@
                                        }
                                    }
                                }
                                else if(sss[1] == 245) {
                                    //读取新服务器上的工程列表
                                    var sss2 = Control.ControlBytesSendHasReturn (Command.GetRemoteOnePortListInfo, 0xFB, 0xFB, sendBytes, newIp);
                                    var newGatewayList = new List<GatewayBase> ();
                                    try {
                                        if (sss [1] == 248) {
                                            var countNew = sss [2] * 256 + sss [3];
                                            for (int i = 1; i <= countNew; i++) {
                                                byte [] arayImp = new byte [23];
                                                if (b1.Length <= 20)
                                                    Array.Copy (b1, 0, arayImp, 1, b1.Length);
                                                else
                                                    Array.Copy (b1, 0, arayImp, 1, 20);
                                                arayImp [21] = (byte)(i / 256);
                                                arayImp [22] = (byte)(i % 256);
                                                var oneProtData = Control.ControlBytesSendHasReturn (Command.GetRemoteOnePortInfo, 0xFB, 0xFB, arayImp, newIp);
                                                if (oneProtData != null) {
                                                    try {
                                                        var groupName = CommonPage.MyEncodingGB2312.GetString (oneProtData, 1, 20).Trim ('\0');
                                                        var projectName22 = CommonPage.MyEncodingGB2312.GetString (oneProtData, 23, 20).Trim ('\0');
                                                        var userName22 = CommonPage.MyEncodingGB2312.GetString (oneProtData, 43, 8).Trim ('\0');
                                                        var oldGateway = oldGatewayList.Find ((obj) => obj.Remote_GroupName == groupName &&
                                                         obj.Remote_ProjectName == projectName22 && obj.Remote_UserName == userName22);
                                                        if (oldGateway != null) {
                                                            oldGateway.isMoveToNewServer = true;
                                                        }
                                                    } catch (Exception ex) {
                                                    }
                                                } else {
                                                }
                                            }
                                        } else if (sss [1] == 245) {
                                            Application.RunOnMainThread (() => {
                                                rightButton1.Text = txt_NoData;
                                                rightButton1.TextColor = 0x99FF0000;
                                            });
                                        } else {
                                            Application.RunOnMainThread (() => {
                                                rightButton1.Text = txt_QueryFailed;
                                                rightButton1.TextColor = 0x99FF0000;
                                            });
                                        }
                                    } catch (Exception ex) {
                                        Application.RunOnMainThread (() => {
                                            rightButton1.Text = txt_DataError;
                                            rightButton1.TextColor = 0x99FF0000;
                                        });
                                    } finally {
                                    }
                                    Application.RunOnMainThread (() => {
                                        foreach (var one in oldGatewayList) {
                                            RowLayout wirelessView = new RowLayout () {
                                                Height = Application.GetRealHeight (93),
                                                BackgroundColor = SkinStyle.Current.ViewColor,
                                            };
                                            listView.AddChidren (wirelessView);
                                            showGatewayRow (one,wirelessView);
                                        }
                                    });
                                } else if(sss[1] == 245) {
                                    Application.RunOnMainThread (() => {
                                        rightButton1.Text = txt_NoData;
                                        rightButton1.TextColor = 0x99FF0000;
@@ -338,7 +416,7 @@
        /// <summary>
        /// 显示
        /// </summary>
        void showGatewayRow (string userName,string projectName, RowLayout wirelessView,bool isOnline)
        void showGatewayRow (GatewayBase gatewayBase, RowLayout wirelessView)
        {
            Button pointButton1 = new Button () {
@@ -347,7 +425,7 @@
                X = Application.GetRealWidth (60),
                Radius = (uint)Application.GetRealHeight (7),
                Gravity = Gravity.CenterVertical,
                BackgroundColor = isOnline ? 0xFF00FF00: 0xFF000000
                BackgroundColor = gatewayBase.isOnline ? 0xFF00FF00: 0xFF000000
            };
            wirelessView.AddChidren (pointButton1);
            
@@ -355,7 +433,7 @@
            Button nameButton1 = new Button () {
                Width = Application.GetRealWidth (342),
                Height = LayoutParams.MatchParent,
                Text = projectName,
                Text = gatewayBase.Remote_ProjectName,
                TextAlignment = TextAlignment.CenterLeft,
                X = pointButton1.Right + Application.GetRealWidth (20),
                TextColor = SkinStyle.Current.TextColor1,
@@ -373,15 +451,20 @@
                TextSize = 12,
                Text = text_link,
            };
            if (isOnline)
                wirelessView.AddChidren (rightButton1);
            EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
                LinkOnePort (userName,projectName);
            };
            nameButton1.MouseUpEventHandler = eventHandler;
            rightButton1.MouseUpEventHandler = eventHandler;
            wirelessView.MouseUpEventHandler = eventHandler;
            if (gatewayBase.isMoveToNewServer && !gatewayBase.isOnline) {
                wirelessView.AddChidren (rightButton1);
                rightButton1.Text = text_Upgraded;
            } else {
                if (gatewayBase.isOnline)
                    wirelessView.AddChidren (rightButton1);
                EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
                    LinkOnePort (gatewayBase.Remote_UserName, gatewayBase.Remote_ProjectName);
                };
                nameButton1.MouseUpEventHandler = eventHandler;
                rightButton1.MouseUpEventHandler = eventHandler;
                wirelessView.MouseUpEventHandler = eventHandler;
            }
        }
        void LinkOnePort (string userName, string projectName) {