public void Dispose()
 {
     if (_oscClient != null)
     {
         _oscClient.Close();
     }
 }
예제 #2
0
        private void oscSenderWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            UDPSender autoDataSender      = null;
            UDPSender heartbeatDataSender = null;
            bool      reinit = true;

            var heartbeatMsg = new OscMessage("/RegisterRequestor");

            while (runThread)
            {
                try
                {
                    if (autoDataSender == null || heartbeatDataSender == null || reinit)
                    {
                        try
                        {
                            try
                            {
                                autoDataSender.Close();
                            }
                            catch (Exception)
                            {
                            }
                            try
                            {
                                heartbeatDataSender.Close();
                            }
                            catch (Exception)
                            {
                            }

                            autoDataSender      = new UDPSender(ROBOT_IP, AUTO_DATA_PORT);
                            heartbeatDataSender = new UDPSender(ROBOT_IP, LOG_DATA_PORT);
                            reinit = false;
                        }
                        catch (Exception)
                        {
                            Console.WriteLine("Couldn't create udp sender");
                        }
                    }

                    int autoStartPositionIndex = -1;
                    int autoModeIndex          = -1;
                    Dispatcher.Invoke(() => autoStartPositionIndex = cboAutoStartSelection.SelectedIndex);
                    Dispatcher.Invoke(() => autoModeIndex          = cboAutoMode.SelectedIndex);

                    var message = new OscMessage("/AutoData",
                                                 (int)autoStartPositionIndex,
                                                 (int)autoModeIndex);
                    autoDataSender.Send(message);

                    if (heartbeatTimer.isTimedOut())
                    {
                        heartbeatDataSender.Send(heartbeatMsg);
                        heartbeatTimer.reset();
                    }

                    Thread.Sleep(100);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                    try
                    {
                        autoDataSender.Close();
                    }
                    catch (Exception)
                    {
                    }
                    try
                    {
                        heartbeatDataSender.Close();
                    }
                    catch (Exception)
                    {
                    }
                    reinit = true;
                }
            }

            autoDataSender.Close();
            heartbeatDataSender.Close();
        }
예제 #3
0
 private void OnDisable()
 {
     // Close all connections
     sender.Close();
 }