wxr
2023-01-10 8fcc3bd198606e0400eca5383572fb97ecdada85
SmartHome/UI/SimpleControl/Phone/System/SearchServerOnePortListPage.cs
@@ -1,5 +1,6 @@
        
using System;
using System.Collections.Generic;
using Shared;
using Shared.SimpleControl;
@@ -15,7 +16,7 @@
        string text_entry_userName_tip = "请输入组名。";
        string text_entry_projectName_tip = "请输入工程名。";
        string text_entry_password_tip = "请输入密码。";
        string text_link = "连接一端口";
        string text_link = "连接";
        string text_back = "后退";
        string text_reading = "读取中";
        /// <summary>
@@ -45,6 +46,7 @@
        string txt_linkSeverFailed = "连接服务器失败";
        string txt_DataError = "数据异常";
        string txt_QueryFailed = "查询失败";
        string txt_NoData = "无数据";
        string txt_Search = "搜索";
        #endregion
@@ -76,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";
@@ -87,6 +89,7 @@
                txt_DataError = "Data exception";
                txt_QueryFailed = "Query failed";
                txt_Search = "search";
                txt_NoData = "No data";
            }
        }
@@ -179,7 +182,7 @@
            userNameView.AddChidren (tvUserName);
            var btnLine = new Button () {
                Height = Application.GetRealHeight (1),
                Height = Application.GetRealHeight (2),
                BackgroundColor = SkinStyle.Current.LineColor,
            };
            infoView.AddChidren (btnLine);
@@ -227,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 (() => {
@@ -239,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;
@@ -251,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)
@@ -262,18 +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');//=============
                                                Application.RunOnMainThread (() => {
                                                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;
                                                    RowLayout wirelessView = new RowLayout () {
                                                        Height = Application.GetRealHeight (93),
                                                        BackgroundColor = SkinStyle.Current.ViewColor,
                                                    };
                                                    listView.AddChidren (wirelessView);
                                                    showGatewayRow (userName22,projectName22, wirelessView);
                                                });
                                                GatewayBase gatewayBase = new GatewayBase () {
                                                    Remote_GroupName = groupName,
                                                    Remote_ProjectName = projectName22,
                                                    Remote_UserName = userName22,
                                                    isOnline = isOnline,
                                                };
                                                oldGatewayList.Add (gatewayBase);
                                            }catch (Exception ex) {
                                            }
@@ -281,7 +293,83 @@
                                        }
                                    }
                                } else {
                                    //读取新服务器上的工程列表
                                    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;
                                    });
                                }
                                else {
                                    Application.RunOnMainThread (() => {
                                        rightButton1.Text = txt_QueryFailed;
                                        rightButton1.TextColor = 0x99FF0000;
@@ -328,23 +416,24 @@
        /// <summary>
        /// 显示
        /// </summary>
        void showGatewayRow (string userName,string projectName, RowLayout wirelessView)
        void showGatewayRow (GatewayBase gatewayBase, RowLayout wirelessView)
        {
            Button pointButton1 = new Button () {
                Width = Application.GetRealHeight (13),
                Height = Application.GetRealHeight (13),
                Width = Application.GetRealHeight (20),
                Height = Application.GetRealHeight (20),
                X = Application.GetRealWidth (60),
                UnSelectedImagePath = "Item/Point.png",
                SelectedImagePath = "Item/PointSelected.png",
                Radius = (uint)Application.GetRealHeight (7),
                Gravity = Gravity.CenterVertical,
                BackgroundColor = gatewayBase.isOnline ? 0xFF00FF00: 0xFF000000
            };
            wirelessView.AddChidren (pointButton1);
            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,
@@ -353,22 +442,29 @@
            Button rightButton1 = new Button () {
                X = Application.GetRealWidth (480),
                Width = Application.GetRealWidth (100),
                Width = Application.GetRealWidth (150),
                Height = Application.GetRealHeight (40),
                Gravity = Gravity.CenterVertical,
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = SkinStyle.Current.TextColor1,
                IsMoreLines = true,
                TextSize = 12,
                Text = text_link,
            };
            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) {