Need to work on Getting the Missions running, There is currently an issue with the UDP Client sending to a bad IP
This commit is contained in:
48
Tello Drone/UdpClientWrapper.cs
Normal file
48
Tello Drone/UdpClientWrapper.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
|
||||
namespace Tello_Drone
|
||||
{
|
||||
internal class UdpClientWrapper : IUdpClientWrapper
|
||||
{
|
||||
private readonly UdpClient _client;
|
||||
private const string LocalHost = "127.0.0.1";
|
||||
private readonly int _port = 8889;
|
||||
private IPEndPoint _ipEndPoint;
|
||||
private int retryCount = 0;
|
||||
|
||||
|
||||
public UdpClientWrapper(long ipAddress, int port)
|
||||
{
|
||||
_ipEndPoint = new IPEndPoint(ipAddress, port);
|
||||
_client = new UdpClient(LocalHost, _port);
|
||||
|
||||
}
|
||||
public bool TrySend(string message, int timeOut)
|
||||
{
|
||||
if(retryCount < 3 )
|
||||
{
|
||||
_client.Send(Encoding.UTF8.GetBytes(message), 1, _ipEndPoint.Address.ToString(), _ipEndPoint.Port);
|
||||
var timer = new Stopwatch();
|
||||
timer.Start();
|
||||
while (timer.ElapsedMilliseconds <= timeOut)
|
||||
{
|
||||
var bytes = _client.Receive(ref _ipEndPoint);
|
||||
var returnMessage = Encoding.ASCII.GetString(bytes, 0, bytes.Length);
|
||||
if (returnMessage == "Ok") return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_client?.Dispose();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user