Beispiel #1
0
        /// <summary>
        /// 初始化数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            #region 加载初始化数据
            this.LoadTaskFromDb();
            #endregion

            #region 初始化基本数据
            foreach (var i in OPCConfig.OPCServers)
            {
                OPCServersLB.Items.Add(i);
            }
            OPCServerTB.Text   = OPCConfig.OPCServer;
            OPCNodeNameTB.Text = OPCConfig.OPCNodeName;

            #endregion

            #region 初始化OPC数据
            OPCGetInStockPositionData = new OPCGetInStockPosition();
            OPCGetInStockPositionData.RwFlagChangedEvent += new OPCGetInStockPosition.RwFlagChangedEventHandler(OPCGetInStockPositionData_RwFlagChangedEvent);
            OPCSetInStockTaskData = new OPCSetInStockTask();
            OPCSetInStockTaskData.RwFlagChangedEvent += new OPCSetInStockTask.RwFlagChangedEventHandler(OPCSetInStockTaskData_RwFlagChangedEvent);


            #endregion

            #region 初始化定时器
            SetOPCInStockTaskTimer          = new Timer();
            SetOPCInStockTaskTimer.Interval = 100;
            SetOPCInStockTaskTimer.Enabled  = true;
            SetOPCInStockTaskTimer.Elapsed += SetOPCInStockTaskTimer_Elapsed;
            SetOPCInStockTaskTimer.Start();
            #endregion
        }
Beispiel #2
0
 /// <summary>
 /// 入栈入库任务
 /// </summary>
 /// <returns></returns>
 private void EnququeInStockTaskQueue(OPCSetInStockTask task)
 {
     lock (InStockTaskQueueLocker)
     {
         task.State = InStockTaskState.WaitingStcok;
         InStockTaskQueue.Add(task.InposiBarcode, task);
     }
 }
Beispiel #3
0
 private bool WriteOPCSetInStockTaskData(string barcode)
 {
     lock (WriteInStockTaskLocker)
     {
         OPCSetInStockTask inStockTask = new OPCSetInStockTask();
         if (InStockTaskQueue.Keys.Contains(barcode))
         {
         }
         return(false);
     }
 }
Beispiel #4
0
        /// <summary>
        /// 验证可读和读取入库条码信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SetOPCInStockTaskTimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            SetOPCInStockTaskTimer.Stop();

            // 是否存在任务? 并OPC可写
            if (OPCSetInStockTaskData.CanWrite && this.HasWatingInStockTask())
            {
                OPCSetInStockTask task = this.DeququeInStockTaskQueue();

                LogUtil.Logger.InfoFormat("【派发任务】条码为{0}, 库位为{1}-{2}-{3}", task.InposiBarcode, task.PositionFloor, task.PositionColumn, task.PositionRow);
                if (task.SyncWrite(OPCSetInStockTaskOPCGroup))
                {
                    task.State = InStockTaskState.InStocking;
                }
            }

            SetOPCInStockTaskTimer.Start();
        }