Exemplo n.º 1
0
        /// <summary>
        /// Заполнить коллекцию DeviceDetails дессериализуя класс PartDevices,
        /// содержащий словари измеренных, настроечных и расчётных параметров
        /// </summary>
        /// <param name="path">Путь к библиотеке расчётной части Dll</param>
        public virtual void PopulateDeviceDetails(string path)
        {
            // проверить FileName аргумент.
            if (path == null || path.Length == 0)
            {
                throw new ArgumentNullException($"Проверка параметра файл для всех устройств, метод: {nameof(PopulateDeviceDetails)}, причина: отсутствует аргумент <{path}>");
            }

            // проверить существование файла.
            FileInfo fInfo = new FileInfo(path);

            if (!fInfo.Exists)
            {
                // вызвать исключение при отсутствии
                //Throw New FileNotFoundException($"Проверка файла для расчётной части: {Name}, метод: {NameOf(PopulateDeviceDetails)}, причина: файл <{path}> не найден")
                PartDevices emptyParameters = new PartDevices();
                // серелизация JSON в строку, а затем запись строки в файл
                File.WriteAllText(path, JsonConvert.SerializeObject(emptyParameters, Formatting.Indented));
            }
            else
            {
                PartDevices allBRS1Ms = JsonConvert.DeserializeObject <PartDevices>(File.ReadAllText(path));

                foreach (DeviceBRS1M itemBRS1M in allBRS1Ms.All_BRS_1M.Values)
                {
                    devices.Add(itemBRS1M);
                }
            }

            puthPartSetting = path;
        }
Exemplo n.º 2
0
        /// <summary>
        ///  Сохранить все устройства в конфигурации
        /// </summary>
        public virtual void SaveDeviceDetails()
        {
            Dictionary <string, DeviceBRS1M> BRS1Ms = new Dictionary <string, DeviceBRS1M>();
            bool needToSave = false;

            // просмотреть список параметров и добавить в специализированные коллекции
            foreach (DeviceDetail device in devices)
            {
                if (device.IsDirty)
                {
                    needToSave = true;
                    break;
                }
            }

            if (IsDirty || needToSave)
            {
                // просмотреть список параметров и добавить в специализированные коллекции
                // если имя параметра было оставлено пользователем по умолчанию,
                // то его во избежание коллизии уникальности переназначить имя как Guid
                foreach (DeviceDetail device in devices)
                {
                    DeviceBRS1M tuningParameter = device as DeviceBRS1M;
                    if (tuningParameter != null)
                    {
                        if (tuningParameter.ParameterName == USER_TEXT_CONTROL_BAROMETER || BRS1Ms.ContainsKey(tuningParameter.ParameterName))
                        {
                            tuningParameter.ParameterName = Guid.NewGuid().ToString();
                        }

                        BRS1Ms.Add(tuningParameter.ParameterName, tuningParameter);
                    }
                }

                PartDevices allBRS1Ms = new PartDevices(BRS1Ms);
                // серелизация JSON в строку, а затем запись строки в файл
                File.WriteAllText(puthPartSetting, JsonConvert.SerializeObject(allBRS1Ms, Formatting.Indented));

                // сбросить флаг IsDirty после сохранения изменений
                IsDirty = false;
                foreach (DeviceDetail device in devices)
                {
                    device.IsDirty = false;
                }
            }
        }
        //private const string partBarometersSetting = "D:\\PartParametersString.json";
        private void TestDictionarySerialize()
        {
            Dictionary <string, DeviceBRS1M> deviceBRS1Ms = new Dictionary <string, DeviceBRS1M>();
            DeviceBRS1M d1 = new DeviceBRS1M
            {
                ParameterName   = "Name Registration1",
                PortName        = "COM3",
                Parity          = Parity.None,
                StopBits        = StopBits.One,
                DataBits        = 8,
                BaudRate        = 1200,
                ClearOnOpen     = false,
                ClearWithDTR    = false,
                CurrentDataMode = DataMode.Hex,
                UnitInput       = UnitOfMeasureInput.гПаВх,
                UnitOutput      = UnitOfMeasureOutput.гПаВых
            };
            DeviceBRS1M d2 = new DeviceBRS1M
            {
                ParameterName   = "Name Registration2",
                PortName        = "COM3",
                Parity          = Parity.None,
                StopBits        = StopBits.One,
                DataBits        = 8,
                BaudRate        = 1200,
                ClearOnOpen     = false,
                ClearWithDTR    = false,
                CurrentDataMode = DataMode.Hex,
                UnitInput       = UnitOfMeasureInput.гПаВх,
                UnitOutput      = UnitOfMeasureOutput.гПаВых
            };

            deviceBRS1Ms.Add(d1.ParameterName, d1);
            deviceBRS1Ms.Add(d2.ParameterName, d2);

            PartDevices allParameters = new PartDevices {
                All_BRS_1M = deviceBRS1Ms
            };

            json = JsonConvert.SerializeObject(allParameters, Formatting.Indented);
            //json = JsonConvert.SerializeObject(calculated)
            //Console.WriteLine(json)

            // серелизация JSON в строку, а затем запись строки в файл
            File.WriteAllText(partBarometersSetting, JsonConvert.SerializeObject(allParameters, Formatting.Indented));
        }
        private void TestDictionaryDeserialize()
        {
            // чтение файла в строку и десериализация JSON в Type
            PartDevices allParameters = JsonConvert.DeserializeObject <PartDevices>(File.ReadAllText(partBarometersSetting));

            if (allParameters.All_BRS_1M != null)
            {
                int I = 1;
                if (allParameters.All_BRS_1M.Count > 0)
                {
                    foreach (KeyValuePair <string, DeviceBRS1M> itemBRS1M in allParameters.All_BRS_1M)
                    {
                        Console.WriteLine(allParameters.All_BRS_1M["Name Registration" + I].ParameterName);
                        Console.WriteLine(itemBRS1M.Value.ParameterName);
                        I += 1;
                    }
                }
            }
        }