public new void Dispose() { addLog("Dispose() called..."); _continueWait = false; //signal thread to stop Thread.Sleep(100); SystemEvent waitEvent = new SystemEvent("EndWaitLoop52", false, false); waitEvent.PulseEvent(); Thread.Sleep(100); #if STREAMING_ON //kill SnapShot Thread if (snapshotThread != null) { snapshotThread.Abort(); } #endif Thread.Sleep(100); if (_imager != null) { //restore AimerFlashing mode _imager.AimerFlashing = Imager.AimerFlashingMode.Auto; _imager.LightGoal = 128; _imager.VideoRunning = false; _imager.Dispose(); _imager = null; } //enable HW Trigger of Scanner //S9CconfigClass.S9Cconfig.HWTrigger.setHWTrigger(true); //removed as problems with ADCComInterface YetAnotherHelperClass.setHWTrigger(true); ITCTools.KeyBoard.restoreKey(); Cursor.Current = Cursors.Default; // base.Dispose(); do not use!! addLog("...Dispose() finished"); }
/// <summary> /// On shutdown we need to dispose our object manually before disposing the control /// </summary> public new void Dispose() { addLog("Dispose() called..."); #if USE_ENTER_KEY #else _continueWait = false; //signal thread to stop Thread.Sleep(100); SystemEvent waitEvent = new SystemEvent("EndWaitLoop52", false, false); waitEvent.PulseEvent(); Thread.Sleep(100); restoreKey(); #endif if (IntermecCamera != null) { #if STREAMING_ON addLog("...Dispose() we DO NOT SWITCH streaming"); #else IntermecCamera.Streaming = false; #endif IntermecCamera.Dispose(); IntermecCamera = null; } #if USE_ENTER_KEY #else //enable HW Trigger of Scanner //S9CconfigClass.S9Cconfig.HWTrigger.setHWTrigger(true); YetAnotherHelperClass.setHWTrigger(true); #endif #if REMAP_SCAN_TO_ENTERKEY restoreScanKey(); #endif //YetAnotherHelperClass.muteSpeakerVolume(false); Cursor.Current = Cursors.Default; //base.Dispose(); do not use!! addLog("...Dispose() finished"); }
/// <summary> /// this is the main loop /// it waits for the named events and then invokes /// onStateScan or onDeltaScan /// </summary> void waitLoop() { addLog("waitLoop starting..."); SystemEvent[] _events = new SystemEvent[3]; addLog("waitLoop setting up event array..."); _events[0] = new SystemEvent("StateLeftScan1", false, false); _events[1] = new SystemEvent("DeltaLeftScan1", false, false); _events[2] = new SystemEvent("EndWaitLoop52", false, false); try { do { //Sleep as long as a snapshot is pending while (_bTakingSnapShot && _continueWait) { Thread.Sleep(50); } if (!_continueWait) Thread.CurrentThread.Abort(); addLog("waitLoop WaitForMultipleObjects..."); SystemEvent signaledEvent = SyncBase.WaitForMultipleObjects( -1, // wait for ever _events ) as SystemEvent; addLog("waitLoop WaitForMultipleObjects released: "); if (_continueWait) { if (signaledEvent == _events[0]) { addLog("######### Caught StateLeftScan ########"); onStateScan(); } if (signaledEvent == _events[1]) { addLog("######### Caught DeltaLeftScan ########"); onDeltaScan(); } if (signaledEvent == _events[2]) { addLog("######### Caught EndWaitLoop52 ########"); _continueWait = false; } } addLog("waitLoop sleep(5)"); System.Threading.Thread.Sleep(5); } while (_continueWait); addLog("waitLoop while ended by _continueWait"); } catch (ThreadAbortException ex) { System.Diagnostics.Debug.WriteLine("waitLoop: ThreadAbortException: " + ex.Message); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("waitLoop: Exception: " + ex.Message); } finally { _events[0].Dispose(); _events[1].Dispose(); _events[2].Dispose(); } addLog("...waitLoop EXIT"); }
public new void Dispose() { addLog("IntermecScanControl Dispose()..."); _continueWait = false; //signal threads to stop SystemEvent waitEvent = new SystemEvent("EndWaitLoop52", false, false); waitEvent.PulseEvent(); System.Threading.Thread.Sleep(100); int iTry = 0; while (_bWaitLoopRunning && iTry < 5) { System.Threading.Thread.Sleep(300); iTry++; } addLog("IntermecScanControl Dispose(): ending Threads..."); //is the waitThread (waitLoop) still running? if (waitThread != null) { addLog("IntermecScanControl Dispose(): ending event watch thread ..."); waitThread.Abort(); } //is there still a readThread running? if (readThread != null) { addLog("IntermecScanControl Dispose(): ending Barcode reading thread ..."); readThread.Abort(); } if (bcr != null) { addLog("IntermecScanControl Dispose(): Calling ScannerOnOff(false)..."); scannerOnOff(false); addLog("IntermecScanControl Dispose(): Disposing BarcodeReader..."); //bcr.ThreadedRead(false); bcr.BarcodeRead -= bcr_BarcodeRead; bcr.Dispose(); bcr = null; addLog("IntermecScanControl Dispose(): BarcodeReader disposed"); } try { addLog("IntermecScanControl Dispose(): enabling HardwareTrigger..."); //replaced this call as ADCComInterface made problems //S9CconfigClass.S9Cconfig.HWTrigger.setHWTrigger(true); YetAnotherHelperClass.setHWTrigger(true); YetAnotherHelperClass.setNumberOfGoodReadBeeps(1); } catch (Exception ex) { addLog("IntermecScanControl Dispose(), Exception: enabling HardwareTrigger: "+ex.Message); } addLog("IntermecScanControl Dispose(): restoring Scan Button Key..."); ITCTools.KeyBoard.restoreKey(); addLog("...IntermecScanControl Dispose(): end."); //base.Dispose(); do not use!! }
/// <summary> /// the main thread watching for state and delta events of scan button /// </summary> void waitLoop() { addLog("waitLoop starting..."); try { _bWaitLoopRunning = true; SystemEvent[] _events = new SystemEvent[3]; addLog("waitLoop setting up event array..."); _events[0] = new SystemEvent("StateLeftScan1", false, false); _events[1] = new SystemEvent("DeltaLeftScan1", false, false); _events[2] = new SystemEvent("EndWaitLoop52", false, false); do { addLog("waitLoop WaitForMultipleObjects..."); SystemEvent signaledEvent = SyncBase.WaitForMultipleObjects( -1, // wait for ever _events ) as SystemEvent; addLog("waitLoop WaitForMultipleObjects released: "); if (_continueWait) { if (signaledEvent == _events[0]) { addLog("######### Caught StateLeftScan ########"); onStateScan(); } if (signaledEvent == _events[1]) { addLog("######### Caught DeltaLeftScan ########"); onDeltaScan(); } if (signaledEvent == _events[2]) { addLog("######### Caught EndWaitLoop52 ########"); _continueWait = false; } } addLog("waitLoop sleep(1)"); System.Threading.Thread.Sleep(1); } while (_continueWait); addLog("waitLoop while ended by _continueWait"); } catch (ThreadAbortException ex) { System.Diagnostics.Debug.WriteLine("waitLoop: ThreadAbortException: " + ex.Message); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("waitLoop: Exception: " + ex.Message); } _bWaitLoopRunning = false; addLog("...waitLoop EXIT"); }
private SystemEvent scanEventDelta;// = new SystemEvent("DeltaLeftScan", false, false); public ScanEvents() { scanEvent = new SystemEvent("StateLeftScan", false, false); scanEventDelta = new SystemEvent("DeltaLeftScan", false, false); }
/// <summary> /// On shutdown we need to dispose our object manually before disposing the control /// </summary> public new void Dispose() { addLog("Dispose() called..."); if (waitThread != null) { _continueWait = false; //signal thread to stop Thread.Sleep(100); SystemEvent waitEvent = new SystemEvent("EndWaitLoop52", false, false); waitEvent.PulseEvent(); Thread.Sleep(100); } //now the wait thread should been stopped if (IntermecCamera != null) { #if STREAMING_ON addLog("...Dispose() we DO NOT SWITCH streaming"); IntermecCamera.Streaming = false; #else IntermecCamera.Streaming = false; #endif IntermecCamera.Dispose(); IntermecCamera = null; } YetAnotherHelperClass.setHWTrigger(true); ITCTools.KeyBoard.restoreKey(); Cursor.Current = Cursors.Default; //Dispose() //base.Dispose(); do not use!! addLog("...Dispose() finished"); }
private SystemEvent scanEventDelta; // = new SystemEvent("DeltaLeftScan", false, false); public ScanEvents() { scanEvent = new SystemEvent("StateLeftScan", false, false); scanEventDelta = new SystemEvent("DeltaLeftScan", false, false); }