public bool ExcecuteEESGetCar(EESData objEESData)
        {
            bool success      = false;
            int  printCounter = 0;

            if (objQueueControllerService == null)
            {
                objQueueControllerService = new QueueControllerImp();
            }
            using (OpcOperationsService opcd = new OpcOperationsImp(OpcConnection.GetOPCServerConnection()))
            {
                do
                {
                    success = opcd.WriteTag <bool>(objEESData.machineChannel, objEESData.machineCode, objEESData.command, true);
                    System.Threading.Thread.Sleep(1000);

                    printCounter += 1;
                    if (printCounter > 3)
                    {
                        //checking transaction deleted or not
                        objQueueControllerService.CancelIfRequested(objEESData.queueId);
                        Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objEESData.queueId + ":--Failed to excecute get car for EES" + objEESData.machineCode);
                        printCounter = 0;
                    }
                } while (!IsDoneExcecuteEESGetCar(objEESData));
            }
            return(success);
        }
Пример #2
0
        public void ProcessTransfer(QueueData objQueueData)
        {
            if (objParkingControllerService == null)
            {
                objParkingControllerService = new ParkingControllerImp();
            }
            if (objQueueControllerService == null)
            {
                objQueueControllerService = new QueueControllerImp();
            }

            List <PathDetailsData> lstPathDetails = null;

            //   lstPathDetails = new List<PathDetailsData>();
            try
            {
                bool needIteration = false;
                do
                {
                    /**checking transaction deleted or not****/
                    objQueueControllerService.CancelIfRequested(objQueueData.queuePkId);
                    /******/
                    do
                    {
                        lstPathDetails = GetAllocatePath(objQueueData.queuePkId);
                        if (lstPathDetails == null)
                        {
                            Thread.Sleep(1500);
                        }
                        /**checking transaction deleted or not****/
                        objQueueControllerService.CancelIfRequested(objQueueData.queuePkId);
                        /******/
                    } while (lstPathDetails == null);
                    objParkingControllerService.ExcecuteCommands(objQueueData);
                    needIteration = objParkingControllerService.GetIterationStatus(objQueueData.queuePkId);
                } while (needIteration);

                UpdateAfterTransfer(objQueueData.queuePkId);
            }
            catch (OperationCanceledException errMsg)
            {
                Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objQueueData.queuePkId + " --TaskCanceledException 'ProcessTransfer':: " + errMsg.Message);
            }
            catch (Exception errMsg)
            {
                Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objQueueData.queuePkId + ":--Exception 'ProcessTransfer':: " + errMsg.Message);
            }
            finally
            {
            }
        }
        public bool ConfirmReachedAtFloor(VLCData objVLCData)
        {
            Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objVLCData.queueId + ":--Entering 'ConfirmReachedAtFloor' ");
            if (objVLCDaoService == null)
            {
                objVLCDaoService = new VLCDaoImp();
            }
            VLCData confirmVLCData = new VLCData();
            bool    vlcConfirmed   = false;

            if (objQueueControllerService == null)
            {
                objQueueControllerService = new QueueControllerImp();
            }

            try
            {
                confirmVLCData.machineCode = objVLCData.machineCode;

                confirmVLCData = objVLCDaoService.GetVLCDetails(objVLCData);

                confirmVLCData.destFloor = objVLCData.destFloor;
                confirmVLCData.queueId   = objVLCData.queueId;
                while (VLCAtFloor(confirmVLCData) != confirmVLCData.destFloor)
                {
                    VLCMove(confirmVLCData);
                    /**checking transaction deleted or not****/
                    objQueueControllerService.CancelIfRequested(confirmVLCData.queueId);
                    /******/
                    Thread.Sleep(500);
                }
                vlcConfirmed = true;
            }
            catch (OperationCanceledException errMsg)
            {
                Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objVLCData.queueId + ": VLC=" + objVLCData.machineCode + " --TaskCanceledException 'ConfirmReachedAtFloor':: " + errMsg.Message);
                throw new OperationCanceledException();
            }
            catch (Exception errMsg)
            {
                Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objVLCData.queueId + ": VLC=" + objVLCData.machineCode + " --Exception 'ConfirmReachedAtFloor':: " + errMsg.Message);
                if (errMsg is TaskCanceledException)
                {
                    throw new Exception();
                }
            }
            Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objVLCData.queueId + ":--Exitting 'ConfirmReachedAtFloor' ");
            return(vlcConfirmed);
        }
        public void Dispose()
        {
            try
            {
                RequestStop();

                if (objQueueControllerService == null)
                {
                    objQueueControllerService = new QueueControllerImp();
                }
                PalletManagerService objPalletManagerService = new PalletManagerImp();

                objQueueControllerService.Dispose();

                //if (MoveIdealCMToHomePosition != null)
                //{
                //    OPCNotification.isApplicationExitReq = true;
                //    opcnotification.Dispose();
                //    MoveIdealCMToHomePosition.Abort();
                //}
                objPalletManagerService.RequestStop();



                //if (triggerClickTransfer != null)
                //{
                //    ClickTransferManager.isApplicationExitReq = true;
                //    triggerClickTransfer.Abort();
                //}

                //if (triggerGeneratorMode != null)
                //{
                //    GeneratorMode.startGeneraterModeScan.Stop();
                //    triggerGeneratorMode.Abort();
                //}
                System.Threading.Thread.Sleep(5000);
                OpcConnection.StopOPCServer();
            }
            finally { }
        }
        public bool ProcessWashPath(QueueData objQueueData)
        {
            if (objParkingControllerService == null)
            {
                objParkingControllerService = new ParkingControllerImp();
            }
            if (objQueueControllerService == null)
            {
                objQueueControllerService = new QueueControllerImp();
            }

            List <PathDetailsData> lstPathDetails = null;

            // QueueData objQueueData = new QueueData();
            try
            {
                lstPathDetails = new List <PathDetailsData>();
                do
                {
                    lstPathDetails = FindCarWashingPathFirst(objQueueData.queuePkId);
                    if (lstPathDetails == null)
                    {
                        Thread.Sleep(1500);
                    }

                    /**checking transaction deleted or not****/
                    objQueueControllerService.CancelIfRequested(objQueueData.queuePkId);
                    /******/
                } while (lstPathDetails == null);
                //objQueueData.queuePkId = washQId;
                objParkingControllerService.ExcecuteCommands(objQueueData);

                if (!IsSameFloorTravel(lstPathDetails))
                {
                    lstPathDetails = new List <PathDetailsData>();

                    do
                    {
                        lstPathDetails = FindCarWashingPathSecond(objQueueData.queuePkId);
                        if (lstPathDetails == null)
                        {
                            Thread.Sleep(1500);
                        }

                        /**checking transaction deleted or not****/
                        objQueueControllerService.CancelIfRequested(objQueueData.queuePkId);
                        /******/
                    } while (lstPathDetails == null);

                    //  objQueueData.queuePkId = washQId;
                    objParkingControllerService.ExcecuteCommands(objQueueData);
                }
                objCarWashDaoService.updateAfterProcessing(objQueueData.queuePkId);
            }
            catch (OperationCanceledException errMsg)
            {
                Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objQueueData.queuePkId + " --TaskCanceledException 'ProcessWashPath':: " + errMsg.Message);
            }
            catch (Exception errMsg)
            {
                Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objQueueData.queuePkId + ":--Exception 'ProcessWashPath':: " + errMsg.Message);
            }
            finally
            {
            }
            return(true);
        }
        public void DoInitializeEngine(GlobalValues.engineStartMode startMode)
        {
            if (OnToDisplayMessage != null)
            {
                OnToDisplayMessage("Initialization.....", null);
            }


            /**
             * 1. set all global variables(including path of display xml)
             * 2. update machine values to DB
             * 3. update status of car at EES to DB: this included in EES machine value updation
             * 4. call engine reset procedure
             * 5. initiate notification from opc
             * 6. initiate home position
             * 7. initiate mode changing of ees
             * 8. initiate pallet management
             * 9. initiate click transfer listener
             * 10.initiate generator mode listener
             * 11.start machine values updation trigger
             * 12.call queue manager
             */

            try
            {
                //1. set all global variables(including path of display xml)
                SetAllGlobalVariables();

                if (objParkingControllerService == null)
                {
                    objParkingControllerService = new ParkingControllerImp();
                }
                if (objPalletManagerService == null)
                {
                    objPalletManagerService = new PalletManagerImp();
                }
                if (objParkingControllerService == null)
                {
                    objParkingControllerService = new ParkingControllerImp();
                }


                #region OPC and Oracle Initialization
                //checking opc server connection established or not
                if (OnToDisplayMessage != null)
                {
                    OnToDisplayMessage("Initialization.....", null);
                }
                OpcServer opc = null;
                while (!OpcConnection.IsOpcServerConnectionAvailable())
                {
                    if (OnToDisplayMessage != null)
                    {
                        OnToDisplayMessage("OPC Initialization failed.....", null);
                    }
                    Thread.Sleep(1000);
                }
                if (OnToDisplayMessage != null)
                {
                    OnToDisplayMessage("OPC Initialization success.....", null);
                }



                //checking database connection established or not
                OracleConnection con = null;
                do
                {
                    con = new DBConnection().getDBConnection();
                    if (con.State == ConnectionState.Closed)
                    {
                        if (OnToDisplayMessage != null)
                        {
                            OnToDisplayMessage("Oracle Initialization failed.....", null);
                        }
                    }
                    Thread.Sleep(1000);
                }while(con.State == ConnectionState.Closed);
                if (OnToDisplayMessage != null)
                {
                    OnToDisplayMessage("Oracle Initialization success.....", null);
                }
                #endregion



                //2. update machine values to DB //11.start machine values updation trigger
                #region Synchind OPC data and reset or resume engine
                if (OnToDisplayMessage != null)
                {
                    OnToDisplayMessage("Synching data.....", null);
                }
                UpdateMachineValues();
                if (OnToDisplayMessage != null)
                {
                    OnToDisplayMessage("Synching data finished.....", null);
                }
                Thread threadUpdateMachineStatus = new Thread(delegate()
                {
                    updateMachineValuesTimer();
                });
                threadUpdateMachineStatus.IsBackground = true;
                threadUpdateMachineStatus.Start();

                //4. call engine reset procedure

                if (startMode == GlobalValues.engineStartMode.restart)
                {
                    objParkingControllerService.CallResetProcedure();
                }
                else
                {
                    objParkingControllerService.CallResumeProcedure();
                }
                #endregion


                //5. initiate notification from opc
                #region OPC Notification
                CommonServicesForMachines objCommonService;

                objCommonService = new CMControllerImp();
                objCommonService.AsynchReadSettings();



                objCommonService = new EESControllerImp();
                objCommonService.AsynchReadSettings();

                objCommonService = new PSControllerImp();
                objCommonService.AsynchReadSettings();

                ////objCommonService = new PSTControllerImp();
                ////objCommonService.AsynchReadSettings();

                ////objCommonService = new PVLControllerImp();
                ////objCommonService.AsynchReadSettings();

                objCommonService = new VLCControllerImp();
                objCommonService.AsynchReadSettings();
                if (OnToDisplayMessage != null)
                {
                    OnToDisplayMessage("initialized OPC notifications.....", null);
                }
                #endregion

                //6. initiate home position
                if (GlobalValues.PARKING_ENABLED)
                {
                    #region Home Position
                    MoveIdealCMToHomePosition = new Thread(delegate()
                    {
                        objParkingControllerService.HomePositionMoveTrigger();
                    });
                    MoveIdealCMToHomePosition.IsBackground = true;
                    MoveIdealCMToHomePosition.Start();
                    #endregion
                }

                //  * 7. initiate mode changing of ees //* 8. initiate pallet management
                if (GlobalValues.PMS_ENABLED)
                {
                    #region PMS



                    triggerESSModeChange = new Thread(delegate()
                    {
                        objPalletManagerService.StartModeScanning();
                    });
                    triggerESSModeChange.IsBackground = true;
                    triggerESSModeChange.Start();


                    triggerGetPalletForESS = new Thread(delegate()
                    {
                        objPalletManagerService.StartPMSProcessing();
                    });
                    triggerGetPalletForESS.IsBackground = true;
                    triggerGetPalletForESS.Start();
                    #endregion
                }
                // * 9. initiate click transfer listener
                // * 10.initiate generator mode listener

                #region Listening new parking request
                // * 12.call queue manager

                objQueueControllerService = new QueueControllerImp();
                if (startMode == GlobalValues.engineStartMode.resume)
                {
                    objQueueControllerService.DoResumeEngine();
                }

                objQueueControllerService.CreateDispalyXML();
                objQueueControllerService.RequestListener();
                #endregion

                //13. iterate queueEntries
                if (GlobalValues.PARKING_ENABLED)
                {
                    InitializeParkingQueue();
                }

                //Delete all old images
                #region Delete all old images


                Thread threadForDeleteImages = new Thread(delegate()
                {
                    DeleteOldRecords();
                });
                threadForDeleteImages.IsBackground = true;
                threadForDeleteImages.Name         = "DeleteImages";
                threadForDeleteImages.Start();

                #endregion
                if (OnToDisplayMessage != null)
                {
                    OnToDisplayMessage("initialization completed succesfully.....", null);
                }
                //MessageBox.Show("Car type checking disabled");
            }
            catch (Exception errMsg)
            {
                if (OnToDisplayMessage != null)
                {
                    OnToDisplayMessage("Error....." + errMsg.Message, null);
                }
                MessageBox.Show(errMsg.Message);
            }
            finally
            {
            }
        }
        public bool CheckVLCCommandDone(Model.VLCData objVLCData)
        {
            Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objVLCData.queueId + ":--Entering 'CheckVLCCommandDone' ");
            bool result = false;

            bool isWaitingForCmdDoneOn = false;
            int  counter = 1;
            OpcOperationsService opcd = null;

            if (objQueueControllerService == null)
            {
                objQueueControllerService = new QueueControllerImp();
            }
            if (objErrorControllerService == null)
            {
                objErrorControllerService = new ErrorControllerImp();
            }
            if (objErrorDaoService == null)
            {
                objErrorDaoService = new ErrorDaoImp();
            }
            bool        triggerAlreadyEnabled = false;
            TriggerData objTriggerData        = null;

            try
            {
                opcd = new OpcOperationsImp(OpcConnection.GetOPCServerConnection());

                Thread.Sleep(3000);
                result = false;
                //TimeSpan startTime = System.DateTime.Now.TimeOfDay;

                do
                {
                    triggerAlreadyEnabled = objErrorControllerService.GetTriggerActiveStatus(objVLCData.machineCode);
                    if (!triggerAlreadyEnabled)
                    {
                        objTriggerData = NeedToShowTrigger(objVLCData);
                    }
                    if (triggerAlreadyEnabled || objTriggerData.TriggerEnabled)
                    {
                        if (!triggerAlreadyEnabled)
                        {
                            objErrorDaoService.UpdateTriggerActiveStatus(objTriggerData);
                        }


                        while (objErrorControllerService.GetTriggerActiveStatus(objVLCData.machineCode))
                        {
                            /**checking transaction deleted or not****/
                            objQueueControllerService.CancelIfRequested(objVLCData.queueId);
                            /******/
                            Thread.Sleep(1000);
                        }
                        if (objQueueControllerService.NeedToOptimizePath(objVLCData.queueId))
                        {
                            break;
                        }
                        if (objErrorControllerService.GetTriggerAction(objVLCData.machineCode) == 1)
                        {
                            VLCMove(objVLCData);

                            Thread.Sleep(2000);
                        }
                    }


                    result = opcd.ReadTag <bool>(objVLCData.machineChannel, objVLCData.machineCode, OpcTags.VLC_CP_Done);

                    if (counter > 3)
                    {
                        counter = 1;
                        /**checking transaction deleted or not****/
                        objQueueControllerService.CancelIfRequested(objVLCData.queueId);
                        /******/
                        Thread.Sleep(700);
                    }
                    counter += 1;
                } while (!result);
            }
            catch (OperationCanceledException errMsg)
            {
                Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objVLCData.queueId + ": CM=" + objVLCData.machineCode + " --TaskCanceledException 'CheckVLCCommandDone':: " + errMsg.Message);
                throw new OperationCanceledException();
            }
            catch (Exception errMsg)
            {
                Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objVLCData.queueId + ":--Exception 'CheckVLCCommandDone':: " + errMsg.Message);
                if (errMsg is TaskCanceledException)
                {
                    throw new Exception();
                }
            }
            finally
            {
                if (opcd != null)
                {
                    opcd.Dispose();
                }
            }
            Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objVLCData.queueId + ":--Exitting 'CheckVLCCommandDone' ");
            return(result);
        }
        public bool VLCMove(Model.VLCData objVLCData)
        {
            Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objVLCData.queueId + ":--Entering 'VLCMove' ");
            bool isCMHealthy = false;
            bool success     = false;

            if (objQueueControllerService == null)
            {
                objQueueControllerService = new QueueControllerImp();
            }
            if (objErrorDaoService == null)
            {
                objErrorDaoService = new ErrorDaoImp();
            }

            do
            {
                /**checking transaction deleted or not****/
                objQueueControllerService.CancelIfRequested(objVLCData.queueId);
                /******/
                try
                {
                    TriggerData objTriggerData = NeedToShowTrigger(objVLCData);
                    if (objTriggerData.TriggerEnabled)
                    {
                        objErrorDaoService.UpdateTriggerActiveStatus(objTriggerData);
                        break;
                    }
                    isCMHealthy = CheckVLCHealthy(objVLCData);

                    if (!isCMHealthy)
                    {
                        Thread.Sleep(200);
                        continue;
                    }

                    using (OpcOperationsService opcd = new OpcOperationsImp(OpcConnection.GetOPCServerConnection()))
                    {
                        objVLCData.floor = opcd.ReadTag <Int32>(objVLCData.machineChannel, objVLCData.machineCode, OpcTags.VLC_At_Floor);
                        if (objVLCData.floor != objVLCData.destFloor)
                        {
                            opcd.WriteTag <int>(objVLCData.machineChannel, objVLCData.machineCode, OpcTags.VLC_DestFloor, objVLCData.destFloor);
                            success = opcd.WriteTag <bool>(objVLCData.machineChannel, objVLCData.machineCode, objVLCData.command, true);
                        }
                        else
                        {
                            success = opcd.WriteTag <bool>(objVLCData.machineChannel, objVLCData.machineCode, objVLCData.command, true);
                            success = true;
                        }
                    }
                }
                catch (OperationCanceledException errMsg)
                {
                    Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objVLCData.queueId + ": CM=" + objVLCData.machineCode + " --TaskCanceledException 'VLCMove':: " + errMsg.Message);
                    throw new OperationCanceledException();
                }
                catch (Exception ex)
                {
                    Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objVLCData.queueId + ":--Exception 'VLCMove':: " + ex.Message);
                    /**checking transaction deleted or not****/
                    objQueueControllerService.CancelIfRequested(objVLCData.queueId);
                    /******/
                    if (ex is TaskCanceledException)
                    {
                        throw new Exception();
                    }
                    success = false;
                }
            } while (!success);
            Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objVLCData.queueId + ":--Exitting 'VLCMove' ");
            return(success);
        }