Ejemplo n.º 1
0
        private void btnDeal_Click(object sender, EventArgs e)
        {
            btnDeal.Enabled = false;
            if (lstWrapper == null)
            {
                lstWrapper = new List <LotReaderThreadWrapper>();
            }
            lotReaderAction.OnLotReaderFinished += new EventHandler <LotReaderFinishedArgs>(DataTransferFinished);
            //获取配置节信息
            this._section = (LotReaderConfigurationSection)ConfigurationManager.GetSection("mes.reader");
            //增加线程个数。

            foreach (LotReaderDeviceElement element in this._section.Devices)
            {
                ParameterizedThreadStart threadStart = new ParameterizedThreadStart(DealData);
                LotReaderThreadWrapper   wrapper     = new LotReaderThreadWrapper(element, threadStart);
                lstWrapper.Add(wrapper);
            }

            //启动线程。
            foreach (LotReaderThreadWrapper wrapper0 in lstWrapper)
            {
                //StartTransfer();
                Thread.Sleep(100);
                wrapper0.Start();
            }
        }
Ejemplo n.º 2
0
 private void DealData(object obj)
 {
     try
     {
         LotReaderThreadWrapper wrapper = obj as LotReaderThreadWrapper;
         if (wrapper == null)
         {
             return;
         }
         DealData(wrapper);
     }
     catch (Exception ex)
     {
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 数据转置
        /// </summary>
        private void DealData(LotReaderThreadWrapper wrapper)
        {
            while (wrapper.Loop)
            {
                try
                {
                    if (queue != null && queue.Count > 0)
                    {
                        LotReaderDeviceElement lotinfo = new LotReaderDeviceElement();
                        lock (queue)
                        {
                            //获取读头配置信息
                            lotinfo.ReaderIP            = queue.Peek().ReaderIP;
                            lotinfo.LineCode            = queue.Peek().LineCode;
                            lotinfo.LotNumber           = queue.Peek().LotNumber;
                            lotinfo.FirstStepCode       = queue.Peek().FirstStepCode;
                            lotinfo.FirstEquipmentCode  = queue.Peek().FirstEquipmentCode;
                            lotinfo.SecondStepCode      = queue.Peek().SecondStepCode;
                            lotinfo.SecondEquipmentCode = queue.Peek().SecondEquipmentCode;
                            lotinfo.WorkShop            = queue.Peek().WorkShop;
                            lotinfo.WorkShopId          = queue.Peek().WorkShopId;
                            lotinfo.FlowId    = queue.Peek().FlowId;
                            lotinfo.FlowSubId = queue.Peek().FlowSubId;
                            DateTime dtStartTime = DateTime.Now;

                            //执行过站操作
                            lotReaderAction.Execute(lotinfo);
                            //请除队列中执行的批次信息
                            queue.Dequeue();
                        }
                    }
                }
                catch (Exception ex)
                {
                }
                if (wrapper.Loop)
                {
                    Thread.Sleep(1000);
                }
            }
            wrapper.AutoResetEvent.Set();
        }