Esempio n. 1
0
        // Передача уставки
        private void SendSP(double sp, int ch, double rate)
        {
            string rx = "";
            string tx = $"SP: VOL:{(sp * 0.001).ToString(new CultureInfo("en-En"))};CH:{ch};";

            if (rate > 0)
            {
                tx += $"RATE:{(rate*0.001).ToString(new CultureInfo("en-En"))};";
            }

            System.Diagnostics.Debug.WriteLine("Запись уставки: " + tx);
            try
            {
                lock (syncRoot)
                {
                    rx = exchange.Exch(tx);
                }
                System.Diagnostics.Debug.WriteLine("Принятое сообщение: " + rx);
            }
            catch
            {
                throw new PressureRackException(2);
            }

            if (rx.IndexOf("OK") < 0)
            {
                System.Diagnostics.Debug.WriteLine("Ошибка. Принятое сообщение: " + rx);
                Parsing.DecodeError(rx);
            }
        }
Esempio n. 2
0
        // Чтение состояния пневмосистемы
        private bool GetSysState()
        {
            string rx = "";
            string tx = "SYSSTATE?";

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

            if (rx.IndexOf("SYS:REDY") >= 0)
            {
                return(true); // Операция завершена успешно
            }
            if (rx.IndexOf("SYS:EXEC") >= 0)
            {
                return(false); // Операция еще не завершена
            }
            System.Diagnostics.Debug.WriteLine("Ошибка. Принятое сообщение: " + rx);
            Parsing.DecodeError(rx);
            return(false);
        }
Esempio n. 3
0
        public void DisableControl()
        {
            string rx = "";
            string tx = "OFFCNTRL;";

            System.Diagnostics.Debug.WriteLine("Запись уставки: " + tx);
            try
            {
                lock (syncRoot)
                {
                    rx = exchange.Exch(tx);
                }
                System.Diagnostics.Debug.WriteLine("Принятое сообщение: " + rx);
            }
            catch
            {
                throw new PressureRackException(2);
            }

            if (rx.IndexOf("OK") < 0)
            {
                System.Diagnostics.Debug.WriteLine("Ошибка. Принятое сообщение: " + rx);
                Parsing.DecodeError(rx);
            }
        }
Esempio n. 4
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);
        }