internal static HttpEnvResponse Pack(PortEnvResponse portEnvResponse)
        {
            HttpEnvResponse httpEnvResponse = new HttpEnvResponse();

            httpEnvResponse.RoomID = "1";
            httpEnvResponse.temp   = portEnvResponse.temp.ToString();
            httpEnvResponse.light  = portEnvResponse.light.ToString();
            httpEnvResponse.humi   = portEnvResponse.humi.ToString();
            httpEnvResponse.human  = portEnvResponse.human.ToString();
            httpEnvResponse.co     = portEnvResponse.co.ToString();
            httpEnvResponse.pm25   = portEnvResponse.pm25.ToString();

            return(httpEnvResponse);
        }
Beispiel #2
0
        /// <summary>
        /// Http获取环境数据请求
        /// </summary>
        /// <param name="postData"></param>
        /// <param name="response"></param>
        private async void ProcessGetData(IDictionary <string, string> postData, System.Net.Http.HttpListenerResponse response)
        {
            ResponseModel responseModel = new ResponseModel();

            //POST数据中是否有'data'这个Key
            if (null == postData || !postData.ContainsKey("data"))
            {
                responseModel.Status        = ResultStatus.Error;
                responseModel.ResultMessage = "GetData No 'data' Key";
                Console.WriteLine("GetData No 'data' Key");
                await response.WriteContentAsync(JsonConvert.SerializeObject(responseModel));

                return;
            }

            //data Key 对应的 Value 是否有值
            if (string.IsNullOrWhiteSpace(postData["data"]))
            {
                responseModel.Status        = ResultStatus.Error;
                responseModel.ResultMessage = "GetData POST 'data' Key No Value";
                Console.WriteLine("GetData POST 'data' Key No Value");
                await response.WriteContentAsync(JsonConvert.SerializeObject(responseModel));

                return;
            }

            HttpEnvRequest httpEnvRequest;

            try
            {
                httpEnvRequest = JsonConvert.DeserializeObject <HttpEnvRequest>(postData["data"]);
            }
            catch (Exception ex)
            {
                responseModel.Status        = ResultStatus.Error;
                responseModel.ResultMessage = $"GetData Json Err: {ex.Message}";
                Console.WriteLine($"GetData Json Err: {ex.Message}");
                await response.WriteContentAsync(JsonConvert.SerializeObject(responseModel));

                return;
            }

            //token校验
            if (!Common.Tokens.ContainsValue(httpEnvRequest.Token))
            {
                Console.WriteLine("token不存在");
                responseModel.Status        = ResultStatus.Error;
                responseModel.ResultMessage = "token不存在";
                await response.WriteContentAsync(JsonConvert.SerializeObject(responseModel));

                return;
            }

            //校验成功, 返回数据
            HttpEnvResponse httpEnvResponse = HttpEnvResponse.Pack(DataTemp.EnvData);

            responseModel.Status        = ResultStatus.Success;
            responseModel.ResultMessage = "环境数据";
            responseModel.Data          = httpEnvResponse;
            await response.WriteContentAsync(JsonConvert.SerializeObject(responseModel));

            //为了提高性能, 每一次返回的都是上次获取的环境数据
            if (DateTime.Now - DataTemp.DateTime > new TimeSpan(0, 0, 4))
            {
                Console.WriteLine("DataTemp.DateTimes数据为5秒之前的, 向串口请求新的数据");

                PortEnvRequest portEnvRequest = new PortEnvRequest();
                portEnvRequest.cmn = Common.GetCmn();

                ProcessPortEnvRequest(portEnvRequest);
            }
            else
            {
                Console.WriteLine("DataTemp.DateTimes数据为5秒之内的, 无需向串口请求新的数据");
            }
        }