Пример #1
0
        private dynamic GetPrivateCurrent(byte na, byte ch, dynamic dunits, DateTime date)
        {
            var units = (Dictionary <string, string>)dunits;

            log(string.Format("Приватные курренты на {0} канал {1} юнитов {2}", date, ch, units.Count), level: 3);

            dynamic answer = ReadParameters(na, ch, PrivateCurrentParameters.Keys.ToArray());

            if (!answer.success)
            {
                return(answer);
            }

            dynamic        current    = new ExpandoObject();
            List <dynamic> records    = new List <dynamic>();
            List <dynamic> parameters = answer.parameters;

            if (parameters.Count != 10)
            {
                current.success = false;
                current.error   = "получены не все необходимые параметры";
                return(current);
            }

            log(string.Format("Параметры({0}): {1}", parameters.Count, string.Join("; ", parameters.Select(r => r.ToString()).ToArray())), level: 3);

            double p = 0.0;

            if (double.TryParse(parameters[0].ToString(), out p))
            {
                records.Add(MakeCurrentRecord(Glossary.Vp(ch), p, "м³", date));
            }

            if (double.TryParse(parameters[1].ToString(), out p))
            {
                records.Add(MakeCurrentRecord(Glossary.V(ch), p, "м³", date));
            }

            if (double.TryParse(parameters[2].ToString(), out p))
            {
                var unit = units.ContainsKey(Glossary.P(ch)) ? units[Glossary.P(ch)] : "";
                records.Add(MakeCurrentRecord(Glossary.P(ch), p, unit, date));
            }

            if (double.TryParse(parameters[3].ToString(), out p))
            {
                records.Add(MakeCurrentRecord(Glossary.T(ch), p, "°C", date));
            }

            if (double.TryParse(parameters[4].ToString(), out p))
            {
                var unit = units.ContainsKey(Glossary.dP(ch)) ? units[Glossary.dP(ch)] : "";
                records.Add(MakeCurrentRecord(Glossary.dP(ch), p, unit, date));
            }

            if (double.TryParse(parameters[5].ToString(), out p))
            {
                records.Add(MakeCurrentRecord(Glossary.Vрч(ch), p, "м³", date));
            }

            if (double.TryParse(parameters[6].ToString(), out p))
            {
                records.Add(MakeCurrentRecord(Glossary.Vч(ch), p, "м³", date));
            }


            current.success = true;
            current.error   = string.Empty;
            current.records = records;
            current.date    = date;
            return(current);
        }
Пример #2
0
        private dynamic ParseArchiveResponse(List <dynamic> parameters, DateTime date, ArchiveType type, dynamic units, byte ch)
        {
            dynamic archive = new ExpandoObject();

            archive.isEmpty = false;
            archive.success = true;
            archive.error   = string.Empty;
            archive.date    = date;

            List <dynamic> records = new List <dynamic>();

            //Среднее значение давления P3
            records.Add(MakeArchiveRecord(Glossary.P(3), parameters[3], units[Glossary.P(3)], archive.date, type));

            //Среднее значение перепада давления ∆Р3
            records.Add(MakeArchiveRecord(Glossary.dP(3), parameters[4], units[Glossary.dP(3)], archive.date, type));

            //Среднее значение перепада давления ∆Р4
            records.Add(MakeArchiveRecord(Glossary.dP(4), parameters[5], units[Glossary.dP(4)], archive.date, type));

            //Стандартный объем
            records.Add(MakeArchiveRecord(Glossary.Vс, parameters[7], "м³", archive.date, type));

            //Время интегрирования
            records.Add(MakeArchiveRecord(Glossary.ВНР, parameters[9], "ч", archive.date, type));


            ////Нештатные ситуации
            //records.Add(MakeArchiveRecord(Glossary.HC, parameters[10], "", archive.date, type));


            int offset = 0;

            if (ch == 0x02)
            {
                offset = 8;
            }

            //Среднее значение давления по каналу
            records.Add(MakeArchiveRecord(Glossary.P(ch), parameters[11 + offset], units[Glossary.P(ch)], archive.date, type));

            //Среднее значение температуры по каналу
            records.Add(MakeArchiveRecord(Glossary.T(ch), parameters[12 + offset], "°C", archive.date, type));

            //Среднее значение перепада давления по каналу
            records.Add(MakeArchiveRecord(Glossary.dP(ch), parameters[13 + offset], units[Glossary.dP(ch)], archive.date, type));

            //Рабочий объем по каналу
            records.Add(MakeArchiveRecord(Glossary.Vp(ch), parameters[14 + offset], "м³", archive.date, type));

            //Приведенный объем по каналу
            records.Add(MakeArchiveRecord(Glossary.V(ch), parameters[15 + offset], "м³", archive.date, type));

            //Допускаемый перепад давления по каналу
            records.Add(MakeArchiveRecord(Glossary.dPd(ch), parameters[16 + offset], units[Glossary.dP(ch)], archive.date, type));

            //Среднее значение коэффициента сжимаемости по каналу
            records.Add(MakeArchiveRecord(Glossary.Ksj(ch), parameters[17 + offset], "", archive.date, type));

            //Среднее значение коэффициента приведения по каналу
            records.Add(MakeArchiveRecord(Glossary.Kpr(ch), parameters[18 + offset], "", archive.date, type));

            archive.records = records;
            return(archive);
        }