예제 #1
0
        public void Start(bool AsService)
        {
            try
            {
                m_AppData.RunninAsService = AsService;

                //////////////////////////////////////
                //
                // setup system wide health statistics

                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.System.System_Drive].StatString.RegisterForUse(true);
                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.System.System_frameGrabber_2].StatString.RegisterForUse(true);
                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.System.System_frameGrabber_1].StatString.RegisterForUse(true);
                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.System.System_GPS].StatString.RegisterForUse(true);
                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.System.System_Hotswap].StatString.RegisterForUse(true);
                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.System.System_Service].StatString.RegisterForUse(true);
                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.System.System_videoChannel1].StatString.RegisterForUse(true);
                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.System.System_videoChannel2].StatString.RegisterForUse(true);
                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.System.System_videoChannel3].StatString.RegisterForUse(true);
                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.System.System_videoChannel4].StatString.RegisterForUse(true);

                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.QueueOverruns.QueueOverruns_DVR_DirectyToStorageQ].Accumulator.RegisterForUse(true);
                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.QueueOverruns.QueueOverruns_DVR_MotionDetectedQ].Accumulator.RegisterForUse(true);
                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.QueueOverruns.QueueOverruns_DVR_NewFrameQ].Accumulator.RegisterForUse(true);
                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.QueueOverruns.QueueOverruns_DVR_NewLPRRecordQ].Accumulator.RegisterForUse(true);
                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.QueueOverruns.QueueOverruns_FG_AllFramesConsumerPushQ].Accumulator.RegisterForUse(true);
                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.QueueOverruns.QueueOverruns_FG_MotionDetectedConsumerPushQ].Accumulator.RegisterForUse(true);
                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.QueueOverruns.QueueOverruns_FG_MotionDetectionQ].Accumulator.RegisterForUse(true);
                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.QueueOverruns.QueueOverruns_LPR_LPRFinalPlateGroupOutputQ].Accumulator.RegisterForUse(true);
                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.QueueOverruns.QueueOverruns_LPR_LPRPerFrameReadingQ].Accumulator.RegisterForUse(true);
                m_AppData.HealthStatistics[(int)APPLICATION_DATA.HEALTH_STATISTICS.QueueOverruns.QueueOverruns_LPR_LPRProcessQ].Accumulator.RegisterForUse(true);

                //////////////////////////////////////
                //
                // start error reporting lib  ( decides if local and/or remote reporting)

                m_AppData.Logger = new ErrorLog(m_AppData);

                m_Log = (ErrorLog)m_AppData.Logger;

                m_Log.Log("Starting LPR Services", ErrorLog.LOG_TYPE.INFORMATIONAL);
                m_Log.Log("using file in path: " + UserSettings.GetAppPath(), ErrorLog.LOG_TYPE.INFORMATIONAL);

                //////////////////////////////////////
                //
                // start email lib (used by error reporting lib for remote error notifications and by the watch list processor)

                m_Log.Log("Loading Email module", ErrorLog.LOG_TYPE.INFORMATIONAL);

                m_AppData.EmailServices = new EmailServices(m_AppData);
                m_Email = (EmailServices)m_AppData.EmailServices;

                //////////////////////////////////////
                //
                // load the Frame Generator

                m_Log.Log("Loading Frame Generator module", ErrorLog.LOG_TYPE.INFORMATIONAL);
                m_AppData.FrameGenerator = (object)new FrameGenerator(m_AppData, AsService);

                //////////////////////////////////////
                //
                // load the DVR

                m_AppData.DVRMode = APPLICATION_DATA.DVR_MODE.STORE_ON_MOTION;
                m_Log.Log("Loading DVR module", ErrorLog.LOG_TYPE.INFORMATIONAL);
                m_DVR = new DVR(m_AppData);
                m_AppData.DVR = (object)m_DVR;

                //////////////////////////////////////
                //
                // start the TCP Server
                if (m_AppData.RunninAsService)
                {
                    m_Log.Log("Loading TCP module", ErrorLog.LOG_TYPE.INFORMATIONAL);
                    m_RCServer = new RemoteConnectionServer.RemoteConnectionServer(m_AppData);
                }

                //////////////////////////////////////
                //
                // load the LPR Engine

                m_Log.Log("Loading LPR Engine", ErrorLog.LOG_TYPE.INFORMATIONAL);
                m_LPREngine = new LPREngine(m_AppData);
                m_AppData.LPREngine = m_LPREngine;

                //////////////////////////////////////
                //
                // load the Watch List Processor

                m_Log.Log("Loading Watch List module", ErrorLog.LOG_TYPE.INFORMATIONAL);

                m_WatchList = new WatchLists(m_AppData);

                //  now that all modules are loaded, let them register with each other for event communications
                m_Log.Log("Starting registrations", ErrorLog.LOG_TYPE.INFORMATIONAL);
                if (m_AppData.RunninAsService)
                {
                    m_RCServer.StartRegistration();
                }
                m_DVR.StartRegistration();
                m_LPREngine.StartRegistration();
                m_WatchList.StartRegistration();

                // now let all modules start their threads
                if (m_AppData.RunninAsService)
                {
                    m_Log.Log("Starting TCP Server", ErrorLog.LOG_TYPE.INFORMATIONAL);
                    m_RCServer.StartThreads();
                }

                m_Log.Log("Starting DVR", ErrorLog.LOG_TYPE.INFORMATIONAL);
                m_DVR.StartThreads();

                m_Log.Log("Starting LPR Engine", ErrorLog.LOG_TYPE.INFORMATIONAL);
                m_LPREngine.StartThreads();

                m_Log.Log("Starting Watch list processor", ErrorLog.LOG_TYPE.INFORMATIONAL);
                m_WatchList.StartThreads();

                m_Log.Log("Starting Email Services", ErrorLog.LOG_TYPE.INFORMATIONAL);
                m_Email.StartThreads();

                // is everyone happy?
                //if (!m_DVR.GetDVRReady || !((FrameGenerator)m_AppData.FrameGenerator).GetReadyStatus)
                //{
                //    m_Log.Log("Error, self destruct", ErrorLog.LOG_TYPE.FATAL);
                //    m_AppData.SelfDestruct();
                //}
            }
            catch (Exception ex) { m_Log.Trace(ex, ErrorLog.LOG_TYPE.FATAL); }
        }
예제 #2
0
        public void Start()
        {
            //////////////////////////////////////
            //
            // start error reporting lib  ( decides if local and/or remote reporting)

            m_AppData.Logger = new ErrorLog(m_AppData);

            m_Log = (ErrorLog)  m_AppData.Logger;

            //////////////////////////////////////
            //
            // start email lib (used by error reporting lib for remote error notifications and by the watch list processor)

            m_AppData.EmailServices = new EmailServices(m_AppData);
            m_Email = (EmailServices)m_AppData.EmailServices;

            //////////////////////////////////////
            //
            // load the Frame Generator

            m_AppData.FrameGenerator = (object)new FrameGenerator(m_AppData);

            //////////////////////////////////////
            //
            // load the DVR

            m_DVR = new DVR(m_AppData);
            m_AppData.DVR = (object)m_DVR;

            //////////////////////////////////////
            //
            // start the TCP Server
            m_RCServer = new RemoteConnectionServer.RemoteConnectionServer(m_AppData);

            //m_TCPServerThread = new Thread(TCPServer);
            //m_TCPServerThread.Start();

            //////////////////////////////////////
            //
            // load the LPR Engine

            m_LPREngine = new LPREngine (m_AppData);
            m_AppData.LPREngine = m_LPREngine;

            //////////////////////////////////////
            //
            // load the Watch List Processor

            m_WatchList = new WatchLists(m_AppData);

            //  now that all modules are loaded, let them register with each other for event communications
            m_RCServer.StartRegistration();
            m_DVR.StartRegistration();
            m_LPREngine.StartRegistration();
            m_WatchList.StartRegistration();

            // now let all modules start their threads
            m_RCServer.StartThreads();
            m_DVR.StartThreads();
            m_LPREngine.StartThreads();
            m_WatchList.StartThreads();
            m_Email.StartThreads();

            // is everyone happy?
            if (!m_DVR.GetDVRReady || !((FrameGenerator) m_AppData.FrameGenerator).GetReadyStatus)
                m_AppData.SelfDestruct();
        }