Example #1
0
        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);
                }));
            }
        }
Example #2
0
 private void udpport2_OnDataIn(object sender, nsoftware.IPWorks.UdpportDataInEventArgs e)
 {
     MessageRcvd(UdpMessage.Convert(e.Datagram));
 }                                               //Throw a public event