Example #1
0
        public async void ExecuteTDSThread(Object Obj)
        {
            SanwaTISThread ThreadObj = (SanwaTISThread)Obj;
            SanwaTIS       sanwaTIS  = ThreadObj._sanwaTIS;
            SanwaTDS       sanwaTDS  = new SanwaTDS
            {
                _trid  = sanwaTIS._trid,
                _smpln = 0
            };

            while (!ThreadObj.isStopThread && sanwaTDS._smpln < sanwaTIS._totsmp)
            {
                //Data sample period
                Thread.Sleep(sanwaTIS._dsper);
                sanwaTDS._smpln++;  ////運算次數累加

                foreach (string svid in sanwaTIS._svIDList)
                {
                    //_svList.TryGetValue(svid, out SanwaSV sanwaSV);

                    SanwaSV sanwaSV = _svList.FirstOrDefault(x => x.Value._id == svid).Value;

                    if (sanwaSV != null && sanwaSV._value != null)
                    {
                        SanwaSV svObj = new SanwaSV
                        {
                            _id     = sanwaSV._id,
                            _value  = sanwaSV._value,
                            _format = sanwaSV._format,
                            _name   = sanwaSV._name,
                            _sVName = sanwaSV._sVName,
                            _unit   = sanwaSV._unit,
                        };
                        sanwaTDS._svList.Add(svObj._id + "_" + sanwaTDS._smpln.ToString(), svObj);
                    }
                }

                if (sanwaTDS._smpln % sanwaTIS._repgsz == 0) //不送出S6F1
                {
                    //時間
                    sanwaTDS._stime = GetDateTime();

                    //送出S6F1
                    if (!IsOfflineState())
                    {
                        await SendS6F1Async(sanwaTDS);
                    }
                    //送出S6F1
                    sanwaTDS._svList.Clear();
                }
            }

            sanwaTDS._svList.Clear();

            //將從Thread List移除
            if (!ThreadObj.isStopThread)
            {
                _tisThreadList.Remove(sanwaTIS._trid);
            }
        }
Example #2
0
        public void ExecuteTraceData(SanwaTISThread sanwaTISThread)
        {
            string trid = sanwaTISThread._sanwaTIS._trid;

            _tisThreadList.TryGetValue(trid, out SanwaTISThread oldTISThreadObj);

            if (oldTISThreadObj != null)
            {
                //先停止並移除List
                oldTISThreadObj.isStopThread = true;
                _tisThreadList.Remove(trid);
            }

            if (!CheckTISData(sanwaTISThread._sanwaTIS))
            {
                return;
            }

            //生成新的Thread
            Thread ExecuteS6F1Thread = new Thread(ExecuteTDSThread);

            sanwaTISThread._thread = ExecuteS6F1Thread;

            //加入List裡面
            _tisThreadList.Add(trid, sanwaTISThread);

            //啟用
            ExecuteS6F1Thread.Start(sanwaTISThread);
        }