Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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]
                });
            }
        }