Ejemplo n.º 1
0
        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Cancelled == true)
            {
                UpdateStatusText("Canceled!");
            }
            else if (e.Error != null)
            {
                UpdateStatusText("Error: " + e.Error.Message);
            }
            else
            {
                if (server.deviceFound())
                {
                    UpdateStatusText("Port " + server.portName + " pripojený!");
                    Form f = new Form2(server);
                    f.ShowDialog();
                }
                else
                {
                    UpdateStatusText("Port " + server.portName + " neodpovedá!");
                }
            }
            autoPortsCount++;
            try
            {
                if (!runninAutoSearch || (runninAutoSearch && autoPorts.Count == autoPortsCount))
                {
                    serialPorts.Enabled = true;
                    autoSearch.Enabled  = true;

                    progressBar1.Visible = false;
                    progressBar1.Value   = 0;
                    Console.WriteLine("Enabled");
                }
            }
            catch (Exception ex)
            {
            }
            runninSearch = false;
        }
Ejemplo n.º 2
0
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;

            runninSearch = true;
            int    progress;
            string comName = (string)e.Argument;

            server = new SensorServer(comName);
            Console.WriteLine(comName);


            _serialPort = new SerialPort(comName);

            _serialPort.RtsEnable = true;

            _serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

            _serialPort.WriteTimeout = 200;


            e.Result = "";
            try
            {
                _serialPort.Open();

                _serialPort.DiscardInBuffer();
                _serialPort.DiscardOutBuffer();
            } catch (Exception ee)
            {
                e.Result = "Port Nereaguje";
                return;
            }

            worker.ReportProgress(10);

            if (!_serialPort.IsOpen)
            {
                e.Result = "Port Nereaguje";
                return;
            }
            server.comPort = _serialPort;
            worker.ReportProgress(20);


            Thread.Sleep(100);
            server.flushInputBuffer();

            Stopwatch stopWatch = new Stopwatch();

            stopWatch.Start();

            worker.ReportProgress(30);

            server.sendCommand(new SerialCommand("hi", server.command_hi));
            //server.sendCommand("list;");

            worker.ReportProgress(40);
            progress = 40;


            Console.WriteLine("Probe");
            while (true)
            {
                if (!_serialPort.IsOpen)
                {
                    Console.WriteLine("CLOSED");
                    break;
                }
                if (server.deviceFound())
                {
                    Console.WriteLine("FOUND");
                    break;
                }
                if (stopWatch.ElapsedMilliseconds > 0 && (stopWatch.ElapsedMilliseconds % 100 == 0))
                {
                    worker.ReportProgress(40 + (int)(55 / ((serialTimeOut / stopWatch.ElapsedMilliseconds))));
                }
                if ((stopWatch.ElapsedMilliseconds >= serialTimeOut))
                {
                    Console.WriteLine("TIMEOUT");
                    break;
                }
                if (server.deviceWriteFailed())
                {
                    Console.WriteLine("WRITE TIMEOUT");
                    break;
                }
            }

            e.Result = comName;
            if (server.deviceFound())
            {
                Console.WriteLine("Najdene");
            }
            else
            {
                Console.WriteLine("TIMEOUT");
                _serialPort.Close();
            }

            stopWatch.Stop();

            worker.ReportProgress(100);
        }