public void setLastRadioTransmit(RadioTransmit radio) { this.lastActive = radio; lastActiveTime = DateTime.Now; }
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(); })); } }); }