示例#1
0
        /// <summary>
        /// 启动线程
        /// </summary>
        /// <param name="plc"></param>
        public void SpinUp(CGJMI_10 devMon, bool autoMode = false)
        {
            this._devMon = devMon;

            this.autoMode = autoMode;

            if (_threadMon == null)
            {
                _dispose = false;

                if (_autoMode)
                {
                    _paused       = false;
                    _threadStatus = EThreadStatus.运行;
                }
                else
                {
                    _paused       = true;
                    _threadStatus = EThreadStatus.暂停;
                }
                _iniOK                  = false;
                _threadMon              = new Thread(OnStart);
                _threadMon.Name         = _name;
                _threadMon.IsBackground = true;
                _threadMon.Start();
                OnStatusArgs.OnEvented(new CConArgs(idNo, name, "创建" + _threadMon.Name + "监控线程"));
            }
        }
示例#2
0
        /// <summary>
        /// 启动线程
        /// </summary>
        /// <param name="plc"></param>
        public void SpinUp(CFMBCom devFMB, bool autoMode = false)
        {
            this._devFMB = devFMB;

            this.autoMode = autoMode;

            if (_threadFMB == null)
            {
                _dispose = false;

                if (_autoMode)
                {
                    _paused       = false;
                    _threadStatus = EThreadStatus.运行;
                }
                else
                {
                    _paused       = true;
                    _threadStatus = EThreadStatus.暂停;
                }
                _iniOK                  = false;
                _threadFMB              = new Thread(OnStart);
                _threadFMB.Name         = _name;
                _threadFMB.IsBackground = true;
                _threadFMB.Start();
                OnStatusArgs.OnEvented(new CConArgs(CLanguage.Lan("创建监控线程") + _threadFMB.Name));
            }
        }
示例#3
0
 /// <summary>
 /// 恢复线程
 /// </summary>
 public void Continued()
 {
     if (!_autoMode && _threadMon != null)
     {
         _paused       = false;
         _threadStatus = EThreadStatus.运行;
     }
 }
示例#4
0
 /// <summary>
 /// 暂停线程
 /// </summary>
 public void Paused()
 {
     if (!_autoMode && _threadMon != null)
     {
         _paused       = true;
         _threadStatus = EThreadStatus.暂停;
     }
 }
示例#5
0
 /// <summary>
 /// 暂停线程运行
 /// </summary>
 public void paused()
 {
     if (!_autoMode && _ThreadPLC != null)
     {
         _paused       = true;
         _threadStatus = EThreadStatus.暂停;
     }
 }
示例#6
0
        /// <summary>
        /// 启动线程
        /// </summary>
        /// <param name="plc"></param>
        public void SpinUp(CIOCom devIO, bool autoMode = true)
        {
            this._devIO = devIO;

            this._autoMode = autoMode;

            if (threadIO == null)
            {
                _dispose = false;

                if (_autoMode)
                {
                    _paused       = false;
                    _threadStatus = EThreadStatus.运行;
                }
                else
                {
                    _paused       = true;
                    _threadStatus = EThreadStatus.暂停;
                }

                foreach (string keyVal in rIOREG.Keys)
                {
                    if (rIOVal.ContainsKey(keyVal))
                    {
                        rIOVal[keyVal] = -1;
                    }
                }

                foreach (string keyVal in wIOREG.Keys)
                {
                    if (wIOVal.ContainsKey(keyVal))
                    {
                        wIOVal[keyVal] = -1;
                    }
                }

                threadIO              = new Thread(OnStart);
                threadIO.Name         = _name;
                threadIO.IsBackground = true;
                threadIO.Start();
                OnStatusArgs.OnEvented(new CConArgs(CLanguage.Lan("创建监控线程") + threadIO.Name));
            }
        }
示例#7
0
        /// <summary>
        /// 启动线程
        /// </summary>
        /// <param name="devPLC">PLC设备</param>
        /// <param name="autoMode">自动模式:不间断扫描;手动模式:需手动启动扫描</param>
        /// <param name="plcAddr">PLC地址:默认为1,TCP通信该参数无效</param>
        public void SpinUp(CPLCCOM devPLC, bool autoMode = true, int plcAddr = 1)
        {
            try
            {
                this._devPLC = devPLC;

                this._autoMode = autoMode;

                this._plcAddr = plcAddr;

                _complete = false;

                _dispose = false;

                if (_autoMode)
                {
                    _paused       = false;
                    _threadStatus = EThreadStatus.运行;
                }
                else
                {
                    _paused       = true;
                    _threadStatus = EThreadStatus.暂停;
                }

                if (_ThreadPLC == null)
                {
                    _ThreadPLC              = new Thread(OnRun);
                    _ThreadPLC.Name         = _name;
                    _ThreadPLC.IsBackground = true;
                    _ThreadPLC.Start();
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#8
0
        /// <summary>
        /// 启动监控
        /// </summary>
        private void OnStart()
        {
            try
            {
                while (true)
                {
                    if (_dispose)
                    {
                        return;
                    }

                    Thread.Sleep(_delayMs);

                    if (!_autoMode && _paused)
                    {
                        continue;
                    }

                    Stopwatch wather = new Stopwatch();

                    wather.Start();

                    string er = string.Empty;

                    if (_iniOK)
                    {
                        if (!WriteData(out er))
                        {
                            OnDataArgs.OnEvented(new CDataArgs(idNo, name, er, false, true));
                        }
                    }

                    if (!ReadData(out er))
                    {
                        OnDataArgs.OnEvented(new CDataArgs(idNo, name, er, false, true));
                    }

                    _iniOK = true;

                    wather.Stop();

                    if (!_autoMode)
                    {
                        _paused       = true;
                        _threadStatus = EThreadStatus.暂停;
                        OnDataArgs.OnEvented(new CDataArgs(idNo, name, "监控扫描时间:" + wather.ElapsedMilliseconds.ToString() + "ms"));
                        continue;
                    }

                    _threadStatus = EThreadStatus.运行;
                }
            }
            catch (Exception ex)
            {
                OnStatusArgs.OnEvented(new CConArgs(idNo, name, _threadMon.Name + "监控线程异常错误:" + ex.ToString(), true));
            }
            finally
            {
                _dispose      = false;
                _threadStatus = EThreadStatus.退出;
                OnStatusArgs.OnEvented(new CConArgs(idNo, name, _threadMon.Name + "监控线程销毁退出", true));
            }
        }
示例#9
0
        /// <summary>
        /// 线程方法
        /// </summary>
        private void OnStart()
        {
            try
            {
                while (true)
                {
                    if (_dispose)
                    {
                        return;
                    }

                    Thread.Sleep(_delayMs);

                    if (!_autoMode && _paused)
                    {
                        continue;
                    }

                    Stopwatch wather = new Stopwatch();

                    wather.Start();

                    string er = string.Empty;

                    //初始化读取控制板状态

                    if (!readInitial(out er))
                    {
                        OnDataArgs.OnEvented(new CDataArgs(er, false, true));
                    }

                    //快速写入操作
                    if (!readAndWriteData(out er))
                    {
                        OnDataArgs.OnEvented(new CDataArgs(er, false, true));
                    }

                    ////设置快充板信号
                    //if (!writeData(out er))
                    //    OnDataArgs.OnEvented(new CDataArgs(er, false, true));

                    ////读取快充板信号及电压值
                    //if (!readData(out er))
                    //    OnDataArgs.OnEvented(new CDataArgs(er, false, true));

                    _iniOK = true;

                    wather.Stop();

                    if (!_autoMode)
                    {
                        _paused       = true;
                        _threadStatus = EThreadStatus.暂停;
                        OnDataArgs.OnEvented(new CDataArgs(CLanguage.Lan("监控扫描时间") + ":" + wather.ElapsedMilliseconds.ToString() + "ms"));
                        continue;
                    }

                    _threadStatus = EThreadStatus.运行;
                }
            }
            catch (Exception ex)
            {
                OnStatusArgs.OnEvented(new CConArgs(_threadFMB.Name + CLanguage.Lan("监控线程异常错误") + ":" + ex.ToString(), true));
            }
            finally
            {
                _dispose      = false;
                _threadStatus = EThreadStatus.退出;
                OnStatusArgs.OnEvented(new CConArgs(_threadFMB.Name + CLanguage.Lan("监控线程销毁退出"), true));
            }
        }
示例#10
0
        /// <summary>
        /// 线程方法
        /// </summary>
        private void OnStart()
        {
            try
            {
                while (true)
                {
                    if (_dispose)
                    {
                        return;
                    }

                    Thread.Sleep(_delayMs);

                    if (!_autoMode && _paused)
                    {
                        continue;
                    }

                    Stopwatch wather = new Stopwatch();

                    wather.Start();

                    string er = string.Empty;

                    if (!writeIO(out er))
                    {
                        OnDataArgs.OnEvented(new CDataArgs(er, false, true));
                    }

                    if (!writeMutiIO(out er))
                    {
                        OnDataArgs.OnEvented(new CDataArgs(er, false, true));
                    }

                    if (!readIO(out er))
                    {
                        OnDataArgs.OnEvented(new CDataArgs(er, false, true));
                    }

                    wather.Stop();

                    if (!_autoMode)
                    {
                        _paused       = true;
                        _threadStatus = EThreadStatus.暂停;
                        OnDataArgs.OnEvented(new CDataArgs(CLanguage.Lan("扫描时间") + ":" + wather.ElapsedMilliseconds.ToString() + "ms"));
                        continue;
                    }

                    _threadStatus = EThreadStatus.运行;
                }
            }
            catch (Exception ex)
            {
                OnStatusArgs.OnEvented(new CConArgs(threadIO.Name + CLanguage.Lan("监控线程异常错误") + ":" + ex.ToString(), true));
            }
            finally
            {
                _dispose      = false;
                _threadStatus = EThreadStatus.退出;
                OnStatusArgs.OnEvented(new CConArgs(threadIO.Name + CLanguage.Lan("监控线程销毁退出"), true));
            }
        }
示例#11
0
        /// <summary>
        /// PLC线程
        /// </summary>
        private void OnRun()
        {
            try
            {
                OnConArgs.OnEvented(new CPLCConArgs(_idNo, _name, _name + CLanguage.Lan("监控线程启动"), EMessage.启动));

                while (true)
                {
                    Thread.Sleep(_delayMs);

                    if (_dispose)
                    {
                        return;
                    }

                    if (!_devPLC.conStatus)
                    {
                        continue;
                    }

                    if (!_autoMode && _paused)
                    {
                        Thread.Sleep(_delayMs);
                        continue;
                    }

                    string er = string.Empty;

                    Stopwatch watcher = new Stopwatch();

                    watcher.Start();

                    if (!writeMutiREG(out er))
                    {
                        setPLCDataAlarm(er);
                    }

                    if (!writeREG(out er))
                    {
                        setPLCDataAlarm(er);
                    }

                    if (!readREG(out er))
                    {
                        setPLCDataAlarm(er);
                    }

                    watcher.Stop();

                    _complete = true;

                    if (!_autoMode)
                    {
                        _paused = true;

                        _threadStatus = EThreadStatus.暂停;

                        OnDataArgs.OnEvented(new CPLCDataArgs(_idNo, _name, watcher.ElapsedMilliseconds.ToString(), EMessage.暂停));
                    }
                    else
                    {
                        OnDataArgs.OnEvented(new CPLCDataArgs(_idNo, _name, watcher.ElapsedMilliseconds.ToString(), EMessage.正常));
                    }
                }
            }
            catch (Exception ex)
            {
                OnConArgs.OnEvented(new CPLCConArgs(_idNo, _name, _name + CLanguage.Lan("监控线程错误") + ":" + ex.ToString(), EMessage.异常));
            }
            finally
            {
                _dispose = false;

                OnConArgs.OnEvented(new CPLCConArgs(_idNo, _name, _name + CLanguage.Lan("监控线程退出"), EMessage.退出));
            }
        }