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); } } }