public void setLastRadioTransmit(RadioTransmit radio)
 {
     this.lastActive = radio;
     lastActiveTime = DateTime.Now;
 }
예제 #2
0
 public void setLastRadioTransmit(RadioTransmit radio)
 {
     this.lastActive = radio;
     lastActiveTime  = DateTime.Now;
 }
예제 #3
0
        private void SetupActiveRadio()
        {
            //setup UDP
            this.activeRadioUdpClient = new UdpClient();
            this.activeRadioUdpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            this.activeRadioUdpClient.ExclusiveAddressUse = false; // only if you want to send/receive on same machine.

            IPAddress multicastaddress = IPAddress.Parse("239.255.50.10");

            this.activeRadioUdpClient.JoinMulticastGroup(multicastaddress);

            IPEndPoint localEp = new IPEndPoint(IPAddress.Any, ActiveRadioClientPort);

            this.activeRadioUdpClient.Client.Bind(localEp);

            Task.Run(() =>
            {
                using (activeRadioUdpClient)
                {
                    while (!end)
                    {
                        try
                        {
                            //IPEndPoint object will allow us to read datagrams sent from any source.
                            var remoteEndPoint = new IPEndPoint(IPAddress.Any, ActiveRadioClientPort);
                            activeRadioUdpClient.Client.ReceiveTimeout = 10000;
                            var receivedResults = activeRadioUdpClient.Receive(ref remoteEndPoint);

                            RadioTransmit lastRadioTransmit = JsonConvert.DeserializeObject <RadioTransmit>(Encoding.UTF8.GetString(receivedResults));
                            switch (lastRadioTransmit.radio)
                            {
                            case 0:
                                radio1.setLastRadioTransmit(lastRadioTransmit);
                                break;

                            case 1:
                                radio2.setLastRadioTransmit(lastRadioTransmit);
                                break;

                            case 2:
                                radio3.setLastRadioTransmit(lastRadioTransmit);
                                break;

                            default:
                                break;
                            }
                        }
                        catch (Exception e)
                        {
                            // Console.Out.WriteLine(e.ToString());
                        }
                    }

                    this.activeRadioUdpClient.Close();
                }
            });

            Task.Run(() =>
            {
                while (!end)
                {
                    Thread.Sleep(100);

                    Application.Current.Dispatcher.Invoke(new Action(() =>
                    {
                        radio1.repaintRadioTransmit();
                        radio2.repaintRadioTransmit();
                        radio3.repaintRadioTransmit();
                    }));
                }
            });
        }