Exemplo n.º 1
0
        /// <summary>
        /// Loads the historical data according to the defined filter.
        /// </summary>
        /// <param name="measuresFilters">List of filters to be applied.</param>
        /// <returns></returns>
        public override async Task LoadMeasuresAsync(MeasuresFilters measuresFilters)
        {
            _valueIndex = 0;
            MeasureScale measureScale = GetScaleFromDateRange(_dateBegin, _dateEnd);

            _measuresData = await _aPICommands.GetMeasure(BaseId, measureScale, measuresFilters, _dateBegin, _dateEnd, Id).ConfigureAwait(false);

            if (_measuresData == null)
            {
                return;
            }
            // Wind
            if (measuresFilters.HasFlag(MeasuresFilters.WindStrength))
            {
                LoadData(_measuresData, HistoryWindStrength);
            }
            if (measuresFilters.HasFlag(MeasuresFilters.WindAngle))
            {
                LoadData(_measuresData, HistoryWindAngle);
            }
            // Gust
            if (measuresFilters.HasFlag(MeasuresFilters.GustStrength))
            {
                LoadData(_measuresData, HistoryGustStrength);
            }
            if (measuresFilters.HasFlag(MeasuresFilters.GustAngle))
            {
                LoadData(_measuresData, HistoryGustAngle);
            }
            if (measuresFilters.HasFlag(MeasuresFilters.DateMaxGust))
            {
                LoadData(_measuresData, HistoryDateMaxGust);
            }
        }
Exemplo n.º 2
0
        internal static string ToJsonString(this MeasureScale value)
        {
            switch (value)
            {
            case MeasureScale.Max:
                return("max");

            case MeasureScale.OneDay:
                return("1day");

            case MeasureScale.OneHour:
                return("1hour");

            case MeasureScale.OneMonth:
                return("1month");

            case MeasureScale.OneWeek:
                return("1week");

            case MeasureScale.ThirtyMinutes:
                return("30min");

            case MeasureScale.ThreeHours:
                return("3hours");

            default:
                throw new ArgumentException(stringManager.GetString("invalideValueForMeasureScale", CultureInfo.CurrentUICulture), nameof(value));
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 从xml文件中读取所有的scale
        /// </summary>
        /// <returns></returns>
        private List <MeasureScale> loadAllScalesFromXml()
        {
            List <MeasureScale> scaleList = new List <MeasureScale>();
            XmlDocument         xmldoc    = new XmlDocument();

            xmldoc.Load(ProgramConstants.DEFAULT_PROGRAM_CONFIG_FILE_PATH);
            XmlElement root          = xmldoc.DocumentElement;
            XmlNode    scaleRootNode = root.SelectSingleNode("Scales");

            foreach (XmlNode scaleNode in scaleRootNode.ChildNodes)
            {
                if (scaleNode is XmlElement)
                {
                    XmlElement   scaleElement = scaleNode as XmlElement;
                    string       scaleName    = scaleElement.GetAttribute("Name");
                    double       pixels       = double.Parse(scaleElement.GetAttribute("Pixels"));
                    double       unitValue    = double.Parse(scaleElement.GetAttribute("UnitValue"));
                    int          unitType     = int.Parse(scaleElement.GetAttribute("UnitType"));
                    MeasureScale measureScale = new MeasureScale();
                    measureScale.Name      = scaleName;
                    measureScale.Pixels    = pixels;
                    measureScale.UnitValue = unitValue;
                    measureScale.UnitType  = (UnitTypeDef)UnitType;
                    scaleList.Add(measureScale);
                }
            }
            return(scaleList);
        }
Exemplo n.º 4
0
        //--------------statistic
        //TODO:这部分逻辑需要重构
        public List <MeasureListItem> GetMeasureListData(MeasureScale scale)
        {
            List <MeasureListItem> list = new List <MeasureListItem>();

            for (int i = 0; i < this.GraphicsList.Count; i++)
            {
                DrawObject drawObj = this.GraphicsList[i];
                //TODO: 计算测量的逻辑应该从绘图对象中分离出来
                MeasureListItem item = drawObj.GetMeasureListItem();
                if (item != null)
                {
                    //如果已经定过标,将值进行转换
                    if (scale != null && scale.UnitType != Constants.UnitTypeDef.Pixel)
                    {
                        double ratio = scale.UnitValue / scale.Pixels;
                        item.AdjustByScale(ratio);
                        item.Unit = scale.UnitTypeDisplayName;
                    }
                    else
                    {
                        item.Unit = "像素";
                    }
                    list.Add(item);
                }
            }
            return(list);
        }
Exemplo n.º 5
0
 //public void SetUnit(double pxPerUm)
 //{
 //    if(DrawForm != null)
 //        DrawForm.SetUnit(pxPerUm);
 //}
 public void SetScale(MeasureScale scale)
 {
     if (DrawForm != null)
     {
         DrawForm.SetScale(scale);
     }
 }
Exemplo n.º 6
0
 public void SetScale(MeasureScale scale)
 {
     this.measureScale = scale;
     if (mainForm != null)
     {
         mainForm.UpdateScaleLabel(scale.ToString());
     }
 }
Exemplo n.º 7
0
        /// <summary>
        /// Loads the historical data according to the defined filter.
        /// </summary>
        /// <param name="measuresFilters">List of filters to be applied.</param>
        /// <returns></returns>
        public override async Task LoadMeasuresAsync(MeasuresFilters measuresFilters)
        {
            _valueIndex = 0;
            MeasureScale measureScale = GetScaleFromDateRange(_dateBegin, _dateEnd);

            _measuresData = await _aPICommands.GetMeasure(BaseId, measureScale, measuresFilters, _dateBegin, _dateEnd, Id).ConfigureAwait(false);

            if (_measuresData == null)
            {
                return;
            }
            // Temperatures
            if (measuresFilters.HasFlag(MeasuresFilters.Temperature))
            {
                LoadData(_measuresData, HistoryTemperatures);
            }
            if (measuresFilters.HasFlag(MeasuresFilters.MinTemperature))
            {
                LoadData(_measuresData, HistoryMinTemperatures);
            }
            if (measuresFilters.HasFlag(MeasuresFilters.MaxTemperature))
            {
                LoadData(_measuresData, HistoryMaxTemperatures);
            }
            // Co2
            if (measuresFilters.HasFlag(MeasuresFilters.Co2))
            {
                LoadData(_measuresData, HistoryCo2);
            }
            if (measuresFilters.HasFlag(MeasuresFilters.DateMinCo2))
            {
                LoadData(_measuresData, HistoryDateMinCo2);
            }
            if (measuresFilters.HasFlag(MeasuresFilters.DateMaxCo2))
            {
                LoadData(_measuresData, HistoryDateMaxCo2);
            }
            // Humidity
            if (measuresFilters.HasFlag(MeasuresFilters.Humidity))
            {
                LoadData(_measuresData, HistoryHumidity);
            }
            if (measuresFilters.HasFlag(MeasuresFilters.MinHumidity))
            {
                LoadData(_measuresData, HistoryMinHumidity);
            }
            if (measuresFilters.HasFlag(MeasuresFilters.MaxHumidity))
            {
                LoadData(_measuresData, HistoryMaxHumidity);
            }
            if (measuresFilters.HasFlag(MeasuresFilters.DateMaxHumidity))
            {
                LoadData(_measuresData, HistoryDateMaxHumidity);
            }
        }
Exemplo n.º 8
0
        /// <summary>
        /// 添加新的标尺
        /// </summary>
        private void btnOK_Click(object sender, EventArgs e)
        {
            try
            {
                if (!double.TryParse(tbUnit.Text, out this.unitNum))
                {
                    XMessageDialog.Warning("请输入数字!");
                }
                if (unitNum == 0)
                {
                    XMessageDialog.Warning("请输入大于0的值!");
                    return;
                }
                if (String.IsNullOrEmpty(tbNewScaleName.Text))
                {
                    XMessageDialog.Warning("请输入标尺名!");
                    return;
                }
                if (this.scaleList.Exists(x => x.Name == tbNewScaleName.Text))
                {
                    XMessageDialog.Warning("无法添加,存在重名标尺!");
                    return;
                }

                //保存标尺到配置文件
                MeasureScale newScale = new MeasureScale()
                {
                    Name      = tbNewScaleName.Text,
                    Pixels    = pixels,
                    UnitValue = unitNum,
                    UnitType  = (UnitTypeDef)(this.cbUnits.SelectedIndex)
                };

                scaleList.Add(newScale);
                updateAllScalesToXml();
                this.gcScales.RefreshDataSource();

                //pixelsPerUnit = pixels / unitNum;
                //设置当前的标尺
                if (drawArea != null)
                {
                    drawArea.SetScale(newScale);
                }
                //drawArea.SetUnit(pixelsPerUnit);
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message);
            }
        }
Exemplo n.º 9
0
        internal async Task <MeasuresData> GetMeasure(string deviceId, MeasureScale scale, MeasuresFilters measureType, DateTime?dateBegin, DateTime?dateEnd, string moduleId = "", int limit = 1024)
        {
            if (!await CheckConnectionAsync().ConfigureAwait(false))
            {
                return(null);
            }
            var parameters = HttpUtility.ParseQueryString(string.Empty);

            parameters["access_token"] = _accessToken;
            parameters["device_id"]    = deviceId;
            parameters["scale"]        = scale.ToJsonString();
            parameters["type"]         = measureType.ToJsonString();
            if (dateBegin != null)
            {
                parameters["date_begin"] = dateBegin.FromLocalDateTime().ToString(CultureInfo.InvariantCulture);
            }
            if (dateEnd != null)
            {
                parameters["date_end"] = dateEnd.FromLocalDateTime().ToString(CultureInfo.InvariantCulture);
            }
            parameters["optimize"] = true.ToString(CultureInfo.InvariantCulture).ToUpperInvariant();
            parameters["limit"]    = limit.ToString(CultureInfo.InvariantCulture);
            if (moduleId.Length > 0)
            {
                parameters["module_id"] = moduleId;
            }

            using (HttpClient client = new HttpClient())
                using (HttpRequestMessage request = new HttpRequestMessage())
                {
                    request.Method     = HttpMethod.Post;
                    request.RequestUri = new Uri(host + apiPath + "/getmeasure");
                    request.Content    = new StringContent(parameters.ToString(), Encoding.UTF8, "application/x-www-form-urlencoded");
                    HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false);

                    string responseBody = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

                    MeasuresData measuresData = new MeasuresData().FromJson(responseBody);
                    if (measuresData.Content == null)
                    {
                        ErrorMessageData errorMessageData = new ErrorMessageData().FromJson(responseBody);
                        _errorMessage = errorMessageData.Error.Message;
                        return(null);
                    }
                    return(measuresData);
                }
        }
Exemplo n.º 10
0
        /// <summary>
        /// Loads the historical data according to the defined filter.
        /// </summary>
        /// <param name="measuresFilters">List of filters to be applied.</param>
        /// <returns></returns>
        public override async Task LoadMeasuresAsync(MeasuresFilters measuresFilters)
        {
            _valueIndex = 0;
            MeasureScale measureScale = GetScaleFromDateRange(_dateBegin, _dateEnd);

            _measuresData = await _aPICommands.GetMeasure(BaseId, measureScale, measuresFilters, _dateBegin, _dateEnd, Id).ConfigureAwait(false);

            if (_measuresData == null)
            {
                return;
            }
            if (measuresFilters.HasFlag(MeasuresFilters.Rain))
            {
                LoadData(_measuresData, HistoryRain);
            }
            if (measuresFilters.HasFlag(MeasuresFilters.SumRain))
            {
                LoadData(_measuresData, HistorySumRain);
            }
        }
Exemplo n.º 11
0
        public List <MeasureStatisticItem> GetMeasureStatisticData(MeasureScale scale)
        {
            List <MeasureStatisticItem> list = new List <MeasureStatisticItem>();

            List <MeasureListItem> measureList   = this.GetMeasureListData(scale);
            List <MeasureListItem> lineList      = new List <MeasureListItem>();
            List <MeasureListItem> rectangleList = new List <MeasureListItem>();
            List <MeasureListItem> polylineList  = new List <MeasureListItem>();
            List <MeasureListItem> ellipseList   = new List <MeasureListItem>();

            foreach (var listItem in measureList)
            {
                if (listItem.ToolType == "直线")
                {
                    lineList.Add(listItem);
                }
                if (listItem.ToolType == "曲折线")
                {
                    polylineList.Add(listItem);
                }
                if (listItem.ToolType == "矩形")
                {
                    rectangleList.Add(listItem);
                }
                if (listItem.ToolType == "椭圆")
                {
                    ellipseList.Add(listItem);
                }
            }
            string unit = "像素";

            if (measureList.Count != 0)
            {
                unit = measureList[0].Unit;
            }
            if (lineList.Count != 0)
            {
                MeasureStatisticItem lineLenItem = new MeasureStatisticItem();
                lineLenItem.ToolType      = "直线";
                lineLenItem.StatisticType = MeasureStatisticTypeDef.LENGTH;
                lineLenItem.Count         = lineList.Count;
                lineLenItem.AverageValue  = lineList.Sum(x => x.Length) / lineList.Count;
                lineLenItem.MinValue      = lineList.Min(x => x.Length);
                lineLenItem.MaxValue      = lineList.Max(x => x.Length);
                lineLenItem.Unit          = unit;
                list.Add(lineLenItem);
            }

            if (rectangleList.Count != 0)
            {
                MeasureStatisticItem rectAreaItem = new MeasureStatisticItem();
                rectAreaItem.ToolType      = "矩形";
                rectAreaItem.StatisticType = MeasureStatisticTypeDef.AREA;
                rectAreaItem.Count         = rectangleList.Count;
                rectAreaItem.AverageValue  = rectangleList.Sum(x => x.Area) / rectangleList.Count;
                rectAreaItem.MinValue      = rectangleList.Min(x => x.Area);
                rectAreaItem.MaxValue      = rectangleList.Max(x => x.Area);
                rectAreaItem.Unit          = unit;
                list.Add(rectAreaItem);

                MeasureStatisticItem rectPerimeterItem = new MeasureStatisticItem();
                rectPerimeterItem.StatisticType = MeasureStatisticTypeDef.PERIMETER;
                rectPerimeterItem.Count         = rectangleList.Count;
                rectPerimeterItem.AverageValue  = rectangleList.Sum(x => x.Perimeter) / rectangleList.Count;
                rectPerimeterItem.MinValue      = rectangleList.Min(x => x.Perimeter);
                rectPerimeterItem.MaxValue      = rectangleList.Max(x => x.Perimeter);
                rectPerimeterItem.Unit          = unit;
                list.Add(rectPerimeterItem);
            }

            if (polylineList.Count != 0)
            {
                MeasureStatisticItem polyLenItem = new MeasureStatisticItem();
                polyLenItem.ToolType      = "曲折线";
                polyLenItem.StatisticType = MeasureStatisticTypeDef.AREA;
                polyLenItem.Count         = polylineList.Count;
                polyLenItem.AverageValue  = polylineList.Sum(x => x.Length) / polylineList.Count;
                polyLenItem.MinValue      = polylineList.Min(x => x.Length);
                polyLenItem.MaxValue      = polylineList.Max(x => x.Length);
                polyLenItem.Unit          = unit;
                list.Add(polyLenItem);
            }

            if (ellipseList.Count != 0)
            {
                MeasureStatisticItem ellipseAreaItem = new MeasureStatisticItem();
                ellipseAreaItem.ToolType      = "椭圆";
                ellipseAreaItem.StatisticType = MeasureStatisticTypeDef.AREA;
                ellipseAreaItem.Count         = ellipseList.Count;
                ellipseAreaItem.AverageValue  = ellipseList.Sum(x => x.Area) / ellipseList.Count;
                ellipseAreaItem.MinValue      = ellipseList.Min(x => x.Area);
                ellipseAreaItem.MaxValue      = ellipseList.Max(x => x.Area);
                ellipseAreaItem.Unit          = unit;
                list.Add(ellipseAreaItem);
                MeasureStatisticItem ellipsePerimeterItem = new MeasureStatisticItem();
                ellipsePerimeterItem.StatisticType = MeasureStatisticTypeDef.PERIMETER;
                ellipsePerimeterItem.Count         = ellipseList.Count;
                ellipsePerimeterItem.AverageValue  = ellipseList.Sum(x => x.Perimeter) / ellipseList.Count;
                ellipsePerimeterItem.MinValue      = ellipseList.Min(x => x.Perimeter);
                ellipsePerimeterItem.MaxValue      = ellipseList.Max(x => x.Perimeter);
                ellipsePerimeterItem.Unit          = unit;
                list.Add(ellipsePerimeterItem);
            }
            return(list);
        }
Exemplo n.º 12
0
 public Scale(MeasureScale scale)
 {
     _scale = scale;
 }
Exemplo n.º 13
0
        internal async Task <RoomMeasures> GetRoomMeasures(string homeId, string roomId, MeasureScale scale, MeasuresFilters measureType, DateTime?dateBegin, DateTime?dateEnd, int limit = 1024)
        {
            if (!await CheckConnectionAsync().ConfigureAwait(false))
            {
                return(null);
            }
            var parameters = HttpUtility.ParseQueryString(string.Empty);

            parameters["home_id"] = homeId;
            parameters["room_id"] = roomId;
            parameters["scale"]   = scale.ToJsonString();
            parameters["type"]    = measureType.ToJsonString();
            if (dateBegin != null)
            {
                parameters["date_begin"] = dateBegin.FromLocalDateTime().ToString(CultureInfo.InvariantCulture);
            }
            if (dateEnd != null)
            {
                parameters["date_end"] = dateEnd.FromLocalDateTime().ToString(CultureInfo.InvariantCulture);
            }
            parameters["optimize"] = true.ToString(CultureInfo.InvariantCulture).ToUpperInvariant();
            parameters["limit"]    = limit.ToString(CultureInfo.InvariantCulture);

            using (HttpClient client = new HttpClient())
                using (HttpRequestMessage request = new HttpRequestMessage())
                {
                    request.Method     = HttpMethod.Post;
                    request.RequestUri = new Uri(host + apiPath + "/getroommeasure");

                    request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _accessToken);
                    request.Content = new StringContent(parameters.ToString(), Encoding.UTF8, "application/x-www-form-urlencoded");
                    HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false);

                    string responseBody = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

                    RoomMeasures roomMeasures = new RoomMeasures().FromJson(responseBody);
                    if (roomMeasures.Body == null)
                    {
                        ErrorMessageData errorMessageData = new ErrorMessageData().FromJson(responseBody);
                        _errorMessage = errorMessageData.Error.Message;
                        return(null);
                    }
                    return(roomMeasures);
                }
        }