public void Start(bool isCUDR, bool isGS, int intervalReadGS, int intervalReadCUDR, AnyParam firstFlow) { this.isCUDR = isCUDR; this.isGS = isGS; this.intervalReadGS = intervalReadGS; this.intervalReadCUDR = intervalReadCUDR; this.firstFlow = firstFlow; if (isCUDR) { inputCUDR.Master = new ModbusFactory().CreateRtuMaster(new SerialPortAdapter(inputCUDR.SerialPort)); inputCUDR.Master.Transport.ReadTimeout = 500; inputCUDR.Master.Transport.Retries = 1; inputCUDR.Master.Transport.RetryOnOldResponseThreshold = 1; inputCUDR.Master.Transport.SlaveBusyUsesRetryCount = false; try { inputCUDR.SerialPort.Open(); } catch (Exception ex) { OnChangedState?.Invoke("CUDR", 0, ex.Message); } } if (isGS) { inputGS.SerialPort.BaudRate = 57600; try { inputGS.SerialPort.Open(); inputGS.SerialPort.DataReceived -= SerialPort_DataReceived; inputGS.SerialPort.DataReceived += SerialPort_DataReceived; } catch (Exception ex) { OnChangedState?.Invoke("GS", 0, ex.Message); } } timerReadCUDR = 0; timerReadGS = 0; TimerSecond.Start(); }
public void LoadSetting() { SerialPort portCUDR = new System.IO.Ports.SerialPort("COM1"); SerialPort portGS = new System.IO.Ports.SerialPort("COM2"); if (File.Exists("setting.dat")) { string[] lines = File.ReadAllLines("setting.dat"); int index = 0; foreach (DataParam dataParam in ListDataParams) { string[] data = lines[index++].Split('|'); dataParam.Title = data[0].Split(',')[0]; dataParam.AlarmMin = Convert.ToSingle(data[1]); dataParam.AlarmMax = Convert.ToSingle(data[2]); dataParam.ColorLine = new SolidColorBrush(Color.FromRgb(Convert.ToByte(data[3]), Convert.ToByte(data[4]), Convert.ToByte(data[5]))); dataParam.TitleSmall = data[6]; dataParam.IsChecked = Convert.ToBoolean(data[7]); dataParam.Unit = data[8]; dataParam.ListUnits = FillListUnits(dataParam.Title); dataParam.IsAlarmColor = Convert.ToBoolean(data[9]); dataParam.IsAlarmSound = Convert.ToBoolean(data[10]); try { dataParam.Accuracy = Convert.ToInt32(data[11]); } catch { } } if (lines[index].Trim() != "") { portCUDR.PortName = lines[index++]; } else { index++; } portCUDR.BaudRate = Convert.ToInt32(lines[index++]); portCUDR.DataBits = Convert.ToInt32(lines[index++]); portCUDR.Parity = (Parity)Enum.Parse(typeof(Parity), lines[index++]); portCUDR.StopBits = (StopBits)Enum.Parse(typeof(StopBits), lines[index++]); intervalReadCUDR = Convert.ToInt32(lines[index++]); if (lines[index].Trim() != "") { portGS.PortName = lines[index++]; } else { index++; } portGS.BaudRate = Convert.ToInt32(lines[index++]); portGS.DataBits = Convert.ToInt32(lines[index++]); portGS.Parity = (Parity)Enum.Parse(typeof(Parity), lines[index++]); portGS.StopBits = (StopBits)Enum.Parse(typeof(StopBits), lines[index++]); intervalReadGS = Convert.ToInt32(lines[index++]); DepthOnlineGraph = Convert.ToInt32(lines[index++]); IsCUDR = Convert.ToBoolean(lines[index++]); IsGS = Convert.ToBoolean(lines[index++]); IsWEB = Convert.ToBoolean(lines[index++]); isTable = Convert.ToBoolean(lines[index++]); try { isTotalSoundAlarm = Convert.ToBoolean(lines[index++]); volumeSoundAlarm = Convert.ToInt32(lines[index++]); } catch { } try { firstFlow = new AnyParam() { Value = lines[index++] }; } catch { } } inputCUDR = new Input.Input { SerialPort = portCUDR }; for (int i = 9; i < 18; i++) { inputCUDR.InputParams.Add(new Input.InputParam { Param = ListDataParams[i], Address = (ushort)(i * 2), Command = Input.Command.ReadHoldingRegisters, SlaveID = 1, TypeParam = Input.TypeParam.FLOAT }); } inputCUDR.InputParams[0].Address = 0; //Концентрация НД1 inputCUDR.InputParams[1].Address = 22; //Объем НД1 inputCUDR.InputParams[2].Address = 0; //Концентрация НД2 inputCUDR.InputParams[3].Address = 24; //Объем НД2 inputCUDR.InputParams[4].Address = 0; //Концентрация ДШ inputCUDR.InputParams[5].Address = 28; //Масса ДШ inputCUDR.InputParams[6].Address = 0; //Расход НД1 inputCUDR.InputParams[7].Address = 0; //Расход НД2 inputCUDR.InputParams[8].Address = 0; //Расход ДШ inputGS = new Input.Input { SerialPort = portGS }; for (int i = 0; i < 9; i++) { inputGS.InputParams.Add(new Input.InputParam { Param = ListDataParams[i] }); } }