/// <summary>
        /// Возвращает полную информацию о измерительной нитке вычислителя ФЛОУТЭК
        /// </summary>
        public static string Info(this FloutecMeasureLine line)
        {
            string sensor;

            switch (line.SensorType)
            {
            case 0:
                sensor = "Діафрагма";
                break;

            case 1:
                sensor = "Лічильник";
                break;

            case 2:
                sensor = "Витратомір";
                break;

            default:
                sensor = "Діафрагма";
                break;
            }

            return($"Id:\t\t{line.Id}\n" +
                   $"Назва:\t\t{line.Name}\n" +
                   $"Опис:\t\t{line.Description}\n" +
                   $"Номер:\t\t{line.Number}\n" +
                   $"Тип сенсора:\t{sensor}\n" +
                   $"Створено:\t{line.DateCreated.ToString("dd.MM.yyyy HH:mm")}\n" +
                   $"Змінено:\t{line.DateModified.ToString("dd.MM.yyyy HH:mm")}");
        }
示例#2
0
        public EditFloutecLineForm()
        {
            InitializeComponent();

            cmbSensorType.Items.AddRange(new object[] { "Діафрагма", "Лічильник", "Витратомір" });

            Load += (sender, args) =>
            {
                if (!IsEdit)
                {
                    Line = new FloutecMeasureLine();
                    Text = TITLE_CREATE;
                    cmbSensorType.SelectedIndex = 0;
                    Icon = Resources.Add;
                }
                else
                {
                    Text                        = TITLE_EDIT;
                    txtName.Text                = Line.Name;
                    txtDescription.Text         = Line.Description;
                    numNumber.Value             = Line.Number;
                    cmbSensorType.SelectedIndex = Line.SensorType;
                    Icon                        = Resources.Sensor1;
                }
            };

            btnSave.Select();
        }
        private async void ScanHourlyData(Floutec floutec, FloutecMeasureLine line)
        {
            Logger.Log(_log, new LogEntry {
                Message = $"Опитування годинних даних нитки №{line.Number} обчислювача ФЛОУТЕК з адресою {floutec.Address} ...", Status = LogStatus.Info, Type = LogType.Floutec
            });

            await _service.GetHourlyData(floutec.Address, line.Number, async data =>
            {
                if (data == null || !data.Any())
                {
                    Logger.Log(_log, new LogEntry {
                        Message = $"Годинні дані нитки №{line.Number} обчислювача ФЛОУТЕК з адресою {floutec.Address} відсутні", Status = LogStatus.Warning, Type = LogType.Floutec
                    });
                    return;
                }

                data.ForEach(d =>
                {
                    d.N_FLONIT             = floutec.Address * 10 + line.Number;
                    d.FloutecMeasureLineId = line.Id;
                });

                await _dataService.SaveHourlyData(line.Id, data, saved =>
                {
                    Logger.Log(_log,
                               saved > 0
                            ? new LogEntry {
                        Message = $"Годинні дані нитки №{line.Number} обчислювача ФЛОУТЕК з адресою {floutec.Address} успішно оновлено. Додано записів: {saved}", Status = LogStatus.Success, Type = LogType.Floutec
                    }
                            : new LogEntry {
                        Message = $"Нові годинні дані нитки №{line.Number} обчислювача ФЛОУТЕК з адресою {floutec.Address} відсутні", Status = LogStatus.Warning, Type = LogType.Floutec
                    });
                }, ex =>
                {
                    Logger.Log(_log, new LogEntry {
                        Message = $"Помилка збереження даних аварій нитки №{line.Number} обчислювача ФЛОУТЕК з адресою {floutec.Address}", Status = LogStatus.Error, Type = LogType.Floutec
                    });
                    Logger.Log(_log, new LogEntry {
                        Message = ex.Message, Status = LogStatus.Error, Type = LogType.Floutec
                    });
                });
            }, ex =>
            {
                Logger.Log(_log, new LogEntry {
                    Message = $"Помилка читання годинних даних нитки №{line.Number} обчислювача ФЛОУТЕК з адресою {floutec.Address}", Status = LogStatus.Error, Type = LogType.Floutec
                });
                Logger.Log(_log, new LogEntry {
                    Message = ex.Message, Status = LogStatus.Error, Type = LogType.Floutec
                });
            });
        }
        private async void ScanIdentData(Floutec floutec, FloutecMeasureLine line)
        {
            Logger.Log(_log, new LogEntry {
                Message = $"Опитування даних ідентифікації нитки №{line.Number} обчислювача ФЛОУТЕК з адресою {floutec.Address} ...", Status = LogStatus.Info, Type = LogType.Floutec
            });

            await _service.GetIdentData(floutec.Address, line.Number, async data =>
            {
                if (data == null)
                {
                    Logger.Log(_log, new LogEntry {
                        Message = $"Дані ідентифікації нитки №{line.Number} обчислювача ФЛОУТЕК з адресою {floutec.Address} відсутні", Status = LogStatus.Warning, Type = LogType.Floutec
                    });
                    return;
                }

                data.N_FLONIT             = floutec.Address * 10 + line.Number;
                data.FloutecMeasureLineId = line.Id;

                await _dataService.SaveIdentData(data, saved =>
                {
                    Logger.Log(_log,
                               saved ? new LogEntry {
                        Message = $"Дані ідентифікації нитки №{line.Number} обчислювача ФЛОУТЕК з адресою {floutec.Address} успішно оновлено", Status = LogStatus.Success, Type = LogType.Floutec
                    }
                              : new LogEntry {
                        Message = $"Дані ідентифікації нитки №{line.Number} обчислювача ФЛОУТЕК з адресою {floutec.Address} не змінилися", Status = LogStatus.Success, Type = LogType.Floutec
                    });
                }, ex =>
                {
                    Logger.Log(_log, new LogEntry {
                        Message = $"Помилка збереження даних ідентифікації нитки №{line.Number} обчислювача ФЛОУТЕК з адресою {floutec.Address}", Status = LogStatus.Error, Type = LogType.Floutec
                    });
                    Logger.Log(_log, new LogEntry {
                        Message = ex.Message, Status = LogStatus.Error, Type = LogType.Floutec
                    });
                });
            }, ex =>
            {
                Logger.Log(_log, new LogEntry {
                    Message = $"Помилка читання даних ідентифікації нитки №{line.Number} обчислювача ФЛОУТЕК з адресою {floutec.Address}", Status = LogStatus.Error, Type = LogType.Floutec
                });
                Logger.Log(_log, new LogEntry {
                    Message = ex.Message, Status = LogStatus.Error, Type = LogType.Floutec
                });
            });
        }
        /// <summary>
        /// Возвращает текст для элемента дерева для точки измерения
        /// </summary>
        public static string NodeTitle(this MeasurePointBase point)
        {
            FloutecMeasureLine floutecLine = point as FloutecMeasureLine;

            if (floutecLine != null)
            {
                string sensor;

                switch (floutecLine.SensorType)
                {
                case 0:
                    sensor = "Діафрагма";
                    break;

                case 1:
                    sensor = "Лічильник";
                    break;

                case 2:
                    sensor = "Витратомір";
                    break;

                default:
                    sensor = "Діафрагма";
                    break;
                }

                return($"{floutecLine.Number} {floutecLine.Name} ({sensor})");
            }

            Roc809MeasurePoint rocPoint = point as Roc809MeasurePoint;

            if (rocPoint != null)
            {
                return($"{rocPoint.Number} {rocPoint.Name} (Сегмент = {rocPoint.HistSegment})");
            }

            return(string.Empty);
        }
 private void ProcessLine(FloutecScanMember member, Floutec floutec, FloutecMeasureLine line)
 {
     if (member.ScanIdentData)
     {
         ScanIdentData(floutec, line);
     }
     if (member.ScanInterData)
     {
         ScanInterData(floutec, line);
     }
     if (member.ScanAlarmData)
     {
         ScanAlarmData(floutec, line);
     }
     if (member.ScanHourlyData)
     {
         ScanHourlyData(floutec, line);
     }
     if (member.ScanInstantData)
     {
         ScanInstantData(floutec, line);
     }
 }