private void OnDataIn(object sender, nsoftware.IPWorks.UdpportDataInEventArgs e) { if (e.DatagramB[0] == 112) { int idx = sizeof(byte); double sim_time = BitConverter.ToDouble(e.DatagramB, idx); idx += sizeof(double); byte region_id = e.DatagramB[idx++]; Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate { if (!_regionMap.ContainsKey(region_id)) { DiagramShape diagramItem = new DiagramShape(); diagramItem.Height = 100; diagramItem.Width = 100; diagramItem.Content = $"Region{region_id}"; diagramItem.Shape = BasicShapes.Rectangle; this.RegionDiagram.Items.Add(diagramItem); _regionMap[region_id] = diagramItem; _regionDataMap[_regionMap[region_id]] = new RegionDetail(e.DatagramB, idx); RegionDiagram.ApplyCircularLayout(); } else { _regionDataMap[_regionMap[region_id]].update_map(e.DatagramB, idx); } _dtSimLog.Rows.Add(sim_time, region_id, _regionDataMap[_regionMap[region_id]].RegionInfo); })); } else if (e.DatagramB[0] == 101) { int idx = sizeof(byte); double sim_time = BitConverter.ToDouble(e.DatagramB, idx); idx += sizeof(double); byte region_id = e.DatagramB[idx++]; byte event_type = e.DatagramB[idx++]; byte coord_x = e.DatagramB[idx++]; byte coord_y = e.DatagramB[idx++]; int agent_id = BitConverter.ToInt32(e.DatagramB, idx); idx += sizeof(int); Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate { _dtEventLog.Rows.Add(sim_time, region_id, event_type, $"({coord_x}, {coord_y})", agent_id); })); } }
private void udpport2_OnDataIn(object sender, nsoftware.IPWorks.UdpportDataInEventArgs e) { MessageRcvd(UdpMessage.Convert(e.Datagram)); } //Throw a public event