コード例 #1
0
ファイル: ConnectForm.cs プロジェクト: henrik1235/koalaDrone
        private void droneListBox_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (droneListBox.SelectedItem == null)
            {
                return;
            }

            DroneEntry entry = (DroneEntry)droneListBox.SelectedItem;

            Connect(entry.Address);
        }
コード例 #2
0
ファイル: DroneList.cs プロジェクト: Hendrik410/KKS_Drone
        private void HandlePacket(byte[] packet, IPEndPoint sender)
        {
            try
            {
                using (MemoryStream stream = new MemoryStream(packet))
                {
                    PacketBuffer buffer = new PacketBuffer(stream);

                    if (packet.Length < 3 || buffer.ReadByte() != 'F' || buffer.ReadByte() != 'L' || buffer.ReadByte() != 'Y')
                    {
                        Log.Debug("Hello: Invalid magic value!");
                        return;
                    }

                    if (buffer.ReadByte() != (byte)HelloPacketType.Answer)
                        return;

                    DroneEntry entry = new DroneEntry();
                    entry.Address = sender.Address;

                    entry.LastFound = DateTime.Now;
                    entry.Name = buffer.ReadString();
                    entry.Model = buffer.ReadString();
                    entry.SerialCode = buffer.ReadString();
                    entry.FirmwareVersion = buffer.ReadByte();

                    AddDrone(entry);
                }
            }
            catch (Exception e)
            {
                Log.Error(e.ToString());
            }
        }
コード例 #3
0
ファイル: DroneList.cs プロジェクト: Hendrik410/KKS_Drone
        private bool UpdateDrone(DroneEntry entry)
        {
            for (int i = 0; i < foundDrones.Count; i++)
            {
                DroneEntry e = foundDrones[i];
                if (e.Address.Equals(entry.Address))
                {
                    foundDrones[i] = DroneEntry.UpdateEntry(entry);

                    if (!e.Equals(entry))
                        InvokeEvent();
                    return true;
                }
            }
            return false;
        }
コード例 #4
0
ファイル: DroneList.cs プロジェクト: Hendrik410/KKS_Drone
        private void AddDrone(DroneEntry entry)
        {
            lock(foundDrones)
            {
                if (UpdateDrone(entry))
                    return;

                // alte Drone mit gleicher IP-Adresse entfernen
                RemoveDrone(entry.Address);

                foundDrones.Add(entry);
            }

            InvokeEvent();
        }
コード例 #5
0
 public DroneListChangedEventArgs(DroneEntry[] entries)
 {
     this.Entries = entries;
 }