using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using HBLConsole.Service;
using Lebai.SDK;
using Lebai.SDK.Dtos;
using Robotc;
namespace HBLConsole.Communication
{
public class LebaiHelper
{
private volatile static LebaiHelper _Instance;
public static LebaiHelper GetInstance => _Instance ?? (_Instance = new LebaiHelper());
private LebaiHelper() { }
private LebaiRobotClient client;
private RobotData robotData;
public void Connect(string ip)
{
bool ErrorFlag = false;
while (robotData == null)
{
try
{
client = new LebaiRobotClient(ip);
robotData = client.GetRobotData().Result;
}
catch (Exception ex)
{
if (!ErrorFlag)
{
MessageLog.GetInstance.Show(ex.ToString());
ErrorFlag = true;
}
Thread.Sleep(3000);
}
}
MessageLog.GetInstance.Show("乐百机器人连接成功!");
GetSpeed();
//ActionOperate.GetInstance.Send($"{GVL.GeneralConfig.DeviceType.ToString()}/ConnectOk");
}
public void GetSpeed()
{
//client.StartSys().GetAwaiter();
var aa = client.GetActualTcpSpeed().GetAwaiter();
}
///
/// 获取信号量
///
///
///
public SignalResult GetValueAsync(int index = 0)
{
if (robotData == null) return default(SignalResult);
SignalValue signalValue = new SignalValue();
signalValue.Index = index;
return client?.GetSignal(signalValue).Result;
}
///
/// 设置信号量
///
///
///
///
public SignalResult SetValue(int value, int index = 0)
{
if (robotData == null) return default(SignalResult);
SignalValue signalValue = new SignalValue();
signalValue.Index = index;
signalValue.Value = value;
return client.SetSignal(signalValue).Result;
}
///
/// 运行指定的场景
///
///
public void Scene(int id)
{
if (robotData == null) return;
client?.RunScene(id);
}
}
}