// Передача уставки 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); } }
// Чтение состояния пневмосистемы 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); }
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); } }
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); }