Example #1
0
        static void _ioCard_OnDeviceRemoved(object sender, EventArgs args)
        {
            logMessage("IOCard: Card Disconnected");

            // Update UI fields
            _mainUI.BoardConnectionState = IOCardConnectionEnum.NoIoBoardFound;
            _mainUI.MagazinePresence     = MagazinePresenceEnum.Unknown;
            _mainUI.LoaderPresence       = LoaderPresenceEnum.Unknown;
            _mainUI.UnloaderPresence     = UnloaderPresenceEnum.Unknown;
            _mainUI.CassettePresence     = CassettePresenceEnum.Unknown;

            // Throw away existing IO Card and Detector object as we'll initialize new ones
            // when we next detect the IO Card as being connected.
            _magazineDetector = null;
            _loaderDetector   = null;
            _unloaderDetector = null;
            _ioCard           = null;
        }
Example #2
0
        static void initializeDetectors()
        {
            if (_ioCard != null)
            {
                logMessage("Initializing instance");

                _magazineDetector?.Dispose(); //dispose if null
                _magazineDetector = Detectors.Factory.GetInstanceByFriendlyName(
                    _mainUI.MagazineDetectionMethod,
                    _ioCard
                    );
                _magazineDetector.MagazineUnLoaded += new EventHandler(_magazineDetector_MagazineUnLoaded);

                _loaderDetector?.Dispose(); //dispose if null
                _loaderDetector = Factory.GetLoaderInstanceByFriendlyName(
                    _mainUI.LoaderDetectionMethod,
                    _ioCard
                    );
                _loaderDetector.LoadBufferNotEmpty += new EventHandler(_loaderDetector_LoadBufferNotEmpty);
                _loaderDetector.LoadBufferEmpty    += new EventHandler(_loaderDetector_LoadBufferEmpty);

                _unloaderDetector?.Dispose(); //dispose if null
                _unloaderDetector = Factory.GetUnloaderInstanceByFriendlyName(
                    _mainUI.UnloaderDetectionMethod,
                    _ioCard
                    );
                _unloaderDetector.UnloadBufferNotEmpty += new EventHandler(_unloaderDetector_UnloadBufferNotEmpty);
                _unloaderDetector.UnloadBufferEmpty    += new EventHandler(_unloaderDetector_UnloadBufferEmpty);


                _cassetteDetector?.Dispose(); //dispose if null
                _cassetteDetector = Factory.GetCassetteInstanceByFriendlyName(
                    _mainUI.CassetteDetectionMethod,
                    _ioCard
                    );
                _cassetteDetector.CassettePresent += new EventHandler(_cassetteDetector_CassettePresent);
                _cassetteDetector.CassetteAbsent  += new EventHandler(_cassetteDetector_CassetteAbsent);

                // Refresh sensor information once after a 500ms delay
                // to allow the IOCard polling loop to start.
                System.Timers.Timer refresh = new System.Timers.Timer(500);
                refresh.Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e)
                {
                    _mainUI.MagazinePresence = _magazineDetector.MagazinePresence;
                    if (_magazineDetector.MagazinePresence == MagazinePresenceEnum.MagazinePresent)
                    {
                        logMessage("MagazineDetector: Found Magazine already loaded at IOCard connect");
                    }
                    _mainUI.LoaderPresence = _loaderDetector.LoaderPresence;
                    if (_loaderDetector.LoaderPresence == LoaderPresenceEnum.LoaderNotEmpty)
                    {
                        logMessage("LoadBuffer: Found Load Buffer Not EMPTY at IOCard connect");
                    }
                    _mainUI.UnloaderPresence = _unloaderDetector.UnloaderPresence;
                    if (_unloaderDetector.UnloaderPresence == UnloaderPresenceEnum.UnloaderNotEmpty)
                    {
                        logMessage("UnLoadBuffer: Found Unload Buffer Not EMPTY at IOCard connect");
                    }
                    _mainUI.CassettePresence = _cassetteDetector.CassettePresence;
                    if (_cassetteDetector.CassettePresence == CassettePresenceEnum.CassettePresent)
                    {
                        logMessage("Cassette: Found Cassette Present at IOCard connect");
                    }
                };
                refresh.AutoReset = false;
                refresh.Start();
                _ioCard.Refresh(); //refresh card status to read inputs
            }
            else
            {
                logMessage("SensorDetector: Skipping Initialization because there is no IOCard connected");
            }
        }