예제 #1
0
        public PressSystemVariables ReadSysVar()
        {
            string rx = "";
            string tx = "VAR?";

            try
            {
                lock (syncRoot)
                {
                    rx = exchange.Exch(tx);
                }
            }
            catch
            {
                throw new PressureRackException(2);
            }

            if (rx.IndexOf("VAR") >= 0)
            {
                variables.Pressure  = Parsing.ExtractDoubleParametr("PV:", rx) * 1000;
                variables.Barometr  = Parsing.ExtractDoubleParametr("BAR:", rx) * 1000;
                variables.InLim     = Parsing.ExtractIntParametr("INLIM:", rx) == 1;
                variables.TimeStamp = (long)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;

                // Пока эта часть протокола не реализована
                //long receiveTimeStamp = Parsing.ExtractLongParametr("TIMESTAMP:", rx);
                //// Если изменилось принятое значение TimeStamp, обновляем переменную меткой по часам компьютера
                //if (receiveTimeStamp != oldReceiveTimeStamp)
                //{
                //    variables.TimeStamp = (long)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
                //    oldReceiveTimeStamp = receiveTimeStamp;
                //}
            }
            else
            {
                System.Diagnostics.Debug.WriteLine("Ошибка. Принятое сообщение: " + rx);
                Parsing.DecodeError(rx);
            }
            return(variables);
        }
예제 #2
0
        // Убрать после обновления протокола
        private void GetPressureRange(out double loRange, out double hiRange)
        {
            string tx = "LIMITS?;";
            string rx;

            loRange = hiRange = 0;
            try
            {
                System.Diagnostics.Debug.WriteLine("Запрос данных о границах пневмосистемы");
                rx = exchange.Exch(tx);
            }
            catch
            {
                throw new PressureRackException(2);
            }

            if (rx.IndexOf("LIMITS:") < 0)
            {
                throw new PressureRackException(1);
            }

            loRange = Parsing.ExtractDoubleParametr("LO:", rx) * 1000;
            hiRange = Parsing.ExtractDoubleParametr("HI:", rx) * 1000;
        }