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); }
// Убрать после обновления протокола 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; }