Пример #1
0
 private void Start_time_click(object sender, RoutedEventArgs e)
 {
     if (timerActive == false && procList.SelectedProcess != null)
     {
         timerActive             = true;
         startTimeBut.Content    = "Stop!";
         selectedProcess.Content = "";
         timedProcLabel.Content  = StringHandling.UppercaseFirst(procList.SelectedProcess.ProcessName);
         int timeSecs = ((int)timeSlider.Value) * 60;
         ElapsedEventHandler handler = delegate(object anotherSender, ElapsedEventArgs args)
         {
             procList.killProcess(procList.SelectedProcess);
             timerActive = false;
             Application.Current.Dispatcher.Invoke((Action) delegate()
             {
                 startTimeBut.Content      = "Start!";
                 timedProcLabel.Content    = "";
                 timerRunningLabel.Content = "H: 0 M: 0 S: 0";
             });
         };
         curTimer = new ExTimer(timeSecs, handler, timerRunningLabel);
     }
     else if (timerActive == true && curTimer != null)
     {
         curTimer.stop();
         curTimer                  = null;
         startTimeBut.Content      = "Start!";
         timerActive               = false;
         timedProcLabel.Content    = "";
         timerRunningLabel.Content = "H: 0 M: 0 S: 0";
     }
 }
Пример #2
0
        void timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            int PortID = ((ExTimer)sender).TimerID;

            for (int i = 0; i < mPorts[PortID].mSlaves.Count(); i++)
            {
                RTUSlave slave = mPorts[PortID].mSlaves[i];
                ExTimer  timer = new ExTimer();
                timer.TimerID   = i;
                timer.AutoReset = false;
                timer.Interval  = 1000;
                timer.Tag       = new int[] { PortID, i };
                timer.Elapsed  += slave_timer_elapsed;
                timer.Start();
                //Thread thread = new Thread(new ParameterizedThreadStart(thread_exec));
                //thread.Start(new int[] { PortID, i });
            }
        }
Пример #3
0
        /*public void AddUnfinishedWork(ushort address, bool value)
         * {
         *  lock (UnfinishedWorkLock)
         *  {
         *      if (!UnfinishedWork.ContainsKey(address))
         *      {
         *          UnfinishedWork.Add(address, value);
         *      }
         *  }
         * }
         *
         * private void RemoveUnfinishedWork(ushort address)
         * {
         *  lock (UnfinishedWorkLock)
         *  {
         *      if (UnfinishedWork.ContainsKey(address))
         *      {
         *          UnfinishedWork.Remove(address);
         *      }
         *  }
         * }*/

        /*public bool setValue(ushort address, bool value)
         * {
         *  if (master != null)
         *  {
         *      try
         *      {
         *          //master.WriteSingleCoil(address, value);
         *          return true;
         *      }
         *      catch (Exception ex)
         *      {
         *          AddUnfinishedWork(address, value);
         *          Log.LogException(ex);
         *          return false;
         *      }
         *  }
         *  else
         *  {
         *      AddUnfinishedWork(address, value);
         *      return false;
         *  }
         * }*/

        public bool Connect(int index = -1)
        {
            if (index == -1)
            {
                for (int i = 0; i < mPorts.Count(); i++)
                {
                    try
                    {
                        clients[i] = new SerialPort(mPorts[i].mPortName, mBaudrate, mParity, mDataBits, mStopBits);
                        clients[i].ErrorReceived += delegate(object sender, SerialErrorReceivedEventArgs e)
                        {
                            RtuConnected[i] = false;
                            ExTimer reconnect_timer = new ExTimer();
                            reconnect_timer.AutoReset = true;
                            reconnect_timer.Interval  = 10 * 1000;
                            reconnect_timer.Elapsed  += delegate(object t_sender, ElapsedEventArgs t_e)
                            {
                                if (!RtuConnected[i])
                                {
                                    Connect(i);
                                }
                            };
                        };
                        clients[i].Open();
                        masters[i] = ModbusSerialMaster.CreateRtu(clients[i]);
                        masters[i].Transport.ReadTimeout = 200;
                        RtuConnected[i] = true;
                        ValueUpdatedRequest(mPorts[i].mPortName + "连接成功", LogLevel.Event);
                    }
                    catch (Exception ex)
                    {
                        ExTimer reconnect_timer = new ExTimer();
                        reconnect_timer.Interval  = 10000;
                        reconnect_timer.AutoReset = false;
                        reconnect_timer.TimerID   = i;
                        reconnect_timer.Elapsed  += delegate(object sender, ElapsedEventArgs e)
                        {
                            RtuConnected[((ExTimer)sender).TimerID] = Connect(((ExTimer)sender).TimerID);
                        };
                        reconnect_timer.Start();
                        RtuConnected[i] = false;
                        Log.LogException(ex);
                        ValueUpdatedRequest(mPorts[i].mPortName + "连接失败", LogLevel.Error);
                    }
                    ExTimer timer = new ExTimer();
                    timer.AutoReset = false;
                    timer.Interval  = 1000;
                    timer.Elapsed  += timer_Elapsed;
                    timer.TimerID   = i;
                    timer.Start();
                }
                return(true);
            }
            else
            {
                if (clients[index] != null)
                {
                    clients[index].Close();
                }
                if (masters[index] != null)
                {
                    masters[index].Dispose();
                }
                try
                {
                    clients[index] = new SerialPort(mPorts[index].mPortName, mBaudrate, mParity, mDataBits, mStopBits);
                    clients[index].Open();
                    masters[index] = ModbusSerialMaster.CreateRtu(clients[index]);
                    masters[index].Transport.ReadTimeout = 300;
                    RtuConnected[index] = true;
                    ValueUpdatedRequest(mPorts[index].mPortName + "连接成功", LogLevel.Event);
                }
                catch (Exception ex)
                {
                    ExTimer reconnect_timer = new ExTimer();
                    reconnect_timer.Interval  = 10000;
                    reconnect_timer.AutoReset = false;
                    reconnect_timer.Elapsed  += delegate
                    {
                        RtuConnected[index] = Connect(index);
                    };
                    reconnect_timer.Start();
                    Log.LogException(ex);
                    ValueUpdatedRequest(mPorts[index].mPortName + "连接失败", LogLevel.Error);
                    return(false);
                }
                return(true);
            }
        }