duheng
2024-03-27 d32fea3dd2990d8a10b48cb757439d672893e5c7
WebApi/ÖÚÒãµ÷¶È/ZyConnectHelper.cs
@@ -27,111 +27,7 @@
        /// </summary>
        //static string _url_root = "ws://localhost:40001";
        //static string _url_prj = "ws://localhost:8001";
        static string _url_root = "ws://192.168.201.17:40001";
        // static string _url_prj = "ws://192.168.201.17:8001";
        static string _url_prj = "ws://192.168.3.152:8001";
        /// <summary>
        /// æäº¤è°ƒåº¦é¡¹ç›®
        /// </summary>
        /// <param name="currentViewPrj"></param>
        /// <param name="cbSuccess"></param>
        /// <param name="cbFail"></param>
        /// <returns></returns>
        public static async Task<string> SubmitPrj(IStation.CalcModel.AnaPrj currentViewPrj)
        {
            if (isDebug)
            {
                return "  is isDebug";
            }
            if (currentViewPrj == null)
            {
                return "currentViewPrj is null";
            }
            IStation.ZyDto.SubmitPrj dto_prj = new ZyDto.SubmitPrj();
            if (string.IsNullOrEmpty(currentViewPrj.ID))
            {
                var time = DateTime.Now;
                currentViewPrj.ID = $"{time.Year}{time.Month}{time.Day}{time.Hour}{time.Minute}{time.Second}";
            }
            dto_prj.schemeID = currentViewPrj.ID;
            dto_prj.Day = currentViewPrj.StartTime.ToString("yyyy-MM-dd");
            dto_prj.Items = new List<ZyDto.SubmitPrjItem>();
            foreach (var bt in currentViewPrj.BlockTimes)
            {
                if (bt.OpenPumpCount == 0)
                    continue;
                ZyDto.SubmitPrjItem dto_item = new ZyDto.SubmitPrjItem();
                dto_item.StartTime = bt.StartTime;
                dto_item.EndTime = bt.EndTime;
                dto_item.OpenPumpCount = bt.OpenPumpCount;
                dto_prj.Items.Add(dto_item);
            }
            var ws = new ClientWebSocket();
            await ws.ConnectAsync(new Uri(_url_prj), CancellationToken.None);
            if (ws.State != WebSocketState.Open)
            {
                return "WebSocketState is close";
            }
            var inputJson = JsonHelper.Object2Json(dto_prj);
            var inputBytes = Encoding.UTF8.GetBytes(inputJson);
            IStation.LogHelper.Info(inputJson);
            await ws.SendAsync(new ArraySegment<byte>(inputBytes), WebSocketMessageType.Text, true, CancellationToken.None);
            try
            {
                List<byte> outputBytes = new List<byte>();//全部消息容器
                var buffer = new byte[1024 * 4];//缓冲区
                var result = await ws.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None); //监听Socket信息
                while (!result.CloseStatus.HasValue)  //是否关闭
                {
                    if (result.MessageType == WebSocketMessageType.Text)//文本消息
                    {
                        outputBytes.AddRange(buffer.Take(result.Count));
                        if (result.EndOfMessage)//消息是否已接收完全
                        {
                            //发送过来的消息
                            string outputJson = Encoding.UTF8.GetString(outputBytes.ToArray(), 0, outputBytes.Count);
                            var outPrj = JsonHelper.Json2Object<OutPrj>(outputJson);
                            if (outPrj == null)
                                return "return is null";
                            if (outPrj.result == 1)
                            {
                                //cbSuccess.Invoke(outPrj.schemeID);
                            }
                            else
                            {
                                return "outPrj result:" + outPrj.result;
                            }
                        }
                    }
                    // result = await ws.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);//继续监听Socket信息
                }
            }
            catch (Exception ex)
            {
                IStation.LogHelper.WriteError("Error:101", ex);
                return "ex:" + ex.Message;
            }
            finally
            {
                try
                {
                    //关闭WebSocket
                    await ws.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "AcknowledgeCloseframe", CancellationToken.None);
                }
                catch (Exception ex)
                {
                    IStation.LogHelper.WriteError("Error:111", ex);
                    // return "ex:" + ex.Message;
                }
                ws.Abort();
                ws.Dispose();
            }
            return null;
        }
        public static string _url_root = "ws://192.168.201.17:40001";
        /// <summary>