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; }
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"); } }