Exemplo n.º 1
0
        private void ButtonLaserOnOff_Click(object sender, EventArgs e)
        {
            LaserModule laser = (LaserModule)devicesFound.Find(d => d.ID == ((Button)sender).Parent.Text);

            if (((Button)sender).Text == "L (OFF)")
            {
                laser.TurnLaser(true);
                ((Button)sender).Text = "L (ON)";
            }
            else
            {
                laser.TurnLaser(false);
                ((Button)sender).Text = "L (OFF)";
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Method that executes a device process inside a thread.
        /// </summary>
        /// <param name="device"></param>
        private static void UseResource(Device device, int readerCounter, Action <MetaTag> updateUIGridMetaTagsDel)
        {
            if (device is UHFReader)
            {
                #region UHFReader process

                while (onReads)
                {
                    try
                    {
                        readersMutex.WaitOne();

                        if (onReads)
                        {
                            UHFReader.DoInventory(readerCounter, (device as UHFReader), updateUIGridMetaTagsDel);
                        }
                    }
                    finally
                    {
                        if (useDeltaRead)
                        {
                            /// Use TDM delta read duration
                            Thread.Sleep(deltaRead);
                        }

                        readersMutex.ReleaseMutex();
                    }
                }

                #endregion
            }
            else if (device is LaserModule)
            {
                #region Laser process

                usingLasers = true;

                while (onReads)
                {
                    try
                    {
                        dwspcMutex.WaitOne();

                        if (onReads)
                        {
                            LaserModule.DoScanProcess(device as LaserModule);
                        }
                    }
                    finally
                    {
                        dwspcMutex.ReleaseMutex();
                    }
                }

                #endregion
            }
            else if (device is Servo)
            {
                #region Servo process

                usingServo = true;

                while (onReads)
                {
                    try
                    {
                        dwspcMutex.WaitOne();

                        if (onReads)
                        {
                            Servo.DoActionProcess(device as Servo);
                        }
                    }
                    finally
                    {
                        dwspcMutex.ReleaseMutex();
                    }
                }

                #endregion
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Starts read process.
        /// <para>A thread is created for each device process.</para>
        /// <para>A thread is created for the algorithm, that applies the mathematical model.</para>
        /// </summary>
        /// <param name="devicesConnected"></param>
        public void StartReads(List <Device> devicesConnected)
        {
            ClearUIGridMetaTagsDel();

            if (devicesConnected != null)
            {
                Devices = devicesConnected;
            }

            LogUsedDevicesAndMMInformation();

            onReads = true;

            #region create threads for devices

            for (int i = 0; i < Devices.Count; i++)
            {
                if (!Devices[i].Connected)
                {
                    continue;
                }

                if (Devices[i] is UHFReader)
                {
                    UHFReader r = (Devices[i] as UHFReader);
                    r.Reset();

                    #region create thread

                    ParameterizedThreadStart processTaskThread = delegate { UseResource(r, readerCounter++, UpdateUIGridMetaTagsDel); };

                    Thread deviceThread = new Thread(processTaskThread)
                    {
                        Name = String.Format("R{0}", i)
                    };

                    #endregion

                    deviceThread.Start();

                    threadsUsed.Add(deviceThread);

                    ExcelMediator.ExcelProcessForRSSIs(r, i + 1);
                }
                else if (Devices[i] is LaserModule)
                {
                    LaserModule l = (Devices[i] as LaserModule);

                    #region create thread

                    ParameterizedThreadStart processTaskThread = delegate { UseResource(l, -1, null); };

                    Thread deviceThread = new Thread(processTaskThread)
                    {
                        Name = String.Format("L{0}", i)
                    };

                    #endregion

                    deviceThread.Start();

                    threadsUsed.Add(deviceThread);
                }
                else if (Devices[i] is Servo)
                {
                    Servo s = (Devices[i] as Servo);

                    #region create thread

                    ParameterizedThreadStart processTaskThread = delegate { UseResource(s, -1, null); };

                    Thread deviceThread = new Thread(processTaskThread)
                    {
                        Name = String.Format("S{0}", i)
                    };

                    #endregion

                    deviceThread.Start();

                    threadsUsed.Add(deviceThread);
                }
            }

            #endregion

            #region create algorithm thread

            if (useMM)
            {
                ParameterizedThreadStart processTaskThreadForAlgorithm = delegate { UseResourceForAlgorithm(Devices, RunAlgorithm); };

                Thread algorithmThread = new Thread(processTaskThreadForAlgorithm)
                {
                    Name = "M"
                };

                algorithmThread.Start();

                threadsUsed.Add(algorithmThread);
            }

            #endregion

            #region send tags to Excel

            ExcelMediator.ExcelProcessForTagsPosition(WriteLog);

            #endregion
        }