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");
 }
Ejemplo n.º 6
0
        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");
        }
Ejemplo n.º 8
0
        private SystemEvent scanEventDelta; // = new SystemEvent("DeltaLeftScan", false, false);

        public ScanEvents()
        {
            scanEvent      = new SystemEvent("StateLeftScan", false, false);
            scanEventDelta = new SystemEvent("DeltaLeftScan", false, false);
        }