diff --git a/BPASmartClient.Business/Plugin/OrderProxy.cs b/BPASmartClient.Business/Plugin/OrderProxy.cs
index 8b2611ae..3622772c 100644
--- a/BPASmartClient.Business/Plugin/OrderProxy.cs
+++ b/BPASmartClient.Business/Plugin/OrderProxy.cs
@@ -111,7 +111,7 @@ namespace BPASmartClient.Business
var device = deviceMgr.GetDevices().FirstOrDefault(p => p.DeviceId == deviceId);
while (running)
{
- if (device.IsBusy || !device.IsHealth)
+ if (device.IsBusy /*|| !device.IsHealth*/)
{
Thread.Sleep(100);
continue;
diff --git a/BPASmartClient.DRCoffee/CoffeeMachine.cs b/BPASmartClient.DRCoffee/CoffeeMachine.cs
index d0cd6a9b..af8b0b66 100644
--- a/BPASmartClient.DRCoffee/CoffeeMachine.cs
+++ b/BPASmartClient.DRCoffee/CoffeeMachine.cs
@@ -38,6 +38,9 @@ namespace BPASmartClient.DRCoffee
/// 是否在线
///
public bool OnLine { get { return DateTime.Now.Subtract(lastRefreshTime).TotalSeconds <= 3; } }
+
+ //private volatile static CoffeeMachine _Instance;
+ //public static CoffeeMachine GetInstance => _Instance ?? (_Instance = new CoffeeMachine());
public CoffeeMachine()
{
DrCoffeePackage package = new DrCoffeePackage();
@@ -100,6 +103,7 @@ namespace BPASmartClient.DRCoffee
//一系列解包
while (dataStorage.GetSize() > 0)
{
+
byte item = dataStorage.GetData();
if (DrCoffee.HEADER == item)
{
@@ -137,9 +141,11 @@ namespace BPASmartClient.DRCoffee
///
public void ProcessPackage(DrCoffeePackage package)
{
+
if (((DrCoffeeStatus)status["Status"]) == DrCoffeeStatus.Running && package.Status != DrCoffeeStatus.Running)
{
status["Status"] = package.Status;
+
lastRefreshTime = DateTime.Now;
new DRCoffee_CoffeEndCookEvent() { DeviceId = DeviceId }.Publish();
}
@@ -147,7 +153,7 @@ namespace BPASmartClient.DRCoffee
status["AppStatus"] = package.ApplicationStatus;
status["Warning"] = package.Warning;
status["Fault"] = package.Fault;
-
+
if ((DrCoffeeStatus)status["Status"] == DrCoffeeStatus.Warning
|| (DrCoffeeStatus)status["Status"] == DrCoffeeStatus.Fault
|| (DrCoffeeWarning)status["Warning"] != DrCoffeeWarning.无警告
@@ -155,9 +161,10 @@ namespace BPASmartClient.DRCoffee
)
{
IsWork = false;
+
}
else
- IsWork = true;
+ IsWork = true;
}
protected override void InitStatus()
@@ -229,6 +236,8 @@ namespace BPASmartClient.DRCoffee
}
});
InitStatus();
+ //测试
+ Start();
}
}
diff --git a/BPASmartClient.Device/BaseDevice.cs b/BPASmartClient.Device/BaseDevice.cs
index b6b2f590..5bad77e9 100644
--- a/BPASmartClient.Device/BaseDevice.cs
+++ b/BPASmartClient.Device/BaseDevice.cs
@@ -129,7 +129,6 @@ namespace BPASmartClient.Device
{
p.DeviceId = this.DeviceId;
p.Init();
-
});
this.peripherals = peripherals;
}
diff --git a/BPASmartClient.GSIceCream/IceCreamMachine.cs b/BPASmartClient.GSIceCream/IceCreamMachine.cs
index 3f62577b..49f97a36 100644
--- a/BPASmartClient.GSIceCream/IceCreamMachine.cs
+++ b/BPASmartClient.GSIceCream/IceCreamMachine.cs
@@ -32,7 +32,8 @@ namespace BPASmartClient.GSIceCream
private DateTime lastRefreshTime = DateTime.MinValue;
//是否在线
public bool OnLine { get { return DateTime.Now.Subtract(lastRefreshTime).TotalSeconds <= 3; } }
-
+ //private volatile static IceCreamMachine _Instance;
+ //public static IceCreamMachine GetInstance => _Instance ?? (_Instance = new IceCreamMachine());
public IceCreamMachine()
{
ICMSG_Heart_DW heartDW = new ICMSG_Heart_DW();
@@ -330,6 +331,8 @@ namespace BPASmartClient.GSIceCream
}
});
InitStatus();
+ //测试用
+ Start();
}
}
diff --git a/BPASmartClient.Lebai/BPASmartClient.Lebai.csproj b/BPASmartClient.Lebai/BPASmartClient.Lebai.csproj
index c1df8931..c39fa1e5 100644
--- a/BPASmartClient.Lebai/BPASmartClient.Lebai.csproj
+++ b/BPASmartClient.Lebai/BPASmartClient.Lebai.csproj
@@ -9,6 +9,7 @@
+
diff --git a/BPASmartClient.Lebai/LebaiRobot.cs b/BPASmartClient.Lebai/LebaiRobot.cs
index d65041b9..f5a72406 100644
--- a/BPASmartClient.Lebai/LebaiRobot.cs
+++ b/BPASmartClient.Lebai/LebaiRobot.cs
@@ -14,71 +14,17 @@ using BPASmartClient.Peripheral;
using BPASmartClient.EventBus;
using static BPASmartClient.EventBus.EventBus;
using BPASmartClient.Model;
+using BPASmartClient.LebaiRobot;
namespace BPASmartClient.Lebai
{
public class LebaiRobot: BasePeripheral
{
- //public const int SENCE_自嗨 = 10008;
- //public const int SENCE_接冰淇淋1 = 10004;
- //public const int SENCE_接冰淇淋2 = 10003;
- //public const int SENCE_接冰淇淋3 = 10005;
- //public const int SENCE_咖啡 = 10006;
- //#region 新增场景
- //public const int SENCE_取咖啡杯 = 10013;
- //public const int SENCE_咖啡杯检测 = 10014;
- //public const int SENCE_再次取杯 = 10017;
- //public const int SENCE_接咖啡 = 10015;
- //public const int SENCE_送咖啡 = 10016; //无取走咖啡检测配合场景
- //public const int SENCE_New送咖啡 = 10021;//有取走咖啡检测配合场景
- //public const int SENCE_有无咖啡检测 = 10019;
- //public const int SENCE_再送咖啡 = 10020;
- //public const int SENCE_复位 = 10018;
- //#endregion
- //public const int SENCE_欢迎 = 10002;
-
-
- #region 且时且多设备
- //取咖啡杯 set:=1 get:=101 10031
- //取冰淇淋杯 set:=1 get:=101 10032
- //咖啡杯检测 set:=1 get:=101 10033
- //冰淇淋杯检测 set:=1 get:=101 10034
- //二次取咖啡杯 set:=1 get:=101 10035
- //二次取冰淇淋杯 set:=1 get:=101 10036
- //接咖啡 set:=1 get:=101 10037
- //接冰淇淋公共点 set:=1 get:=101 10038
- //接1号冰淇淋 set:=1 get:=101 10039
- //接2号冰淇淋 set:=1 get:=101 10040
- //接3号冰淇淋 set:=1 get:=101 10041
- //放咖啡位置 set:=1 get:=101 10042
- //放冰淇淋位置 set:=1 get:=101 10043
-
- public const int SENCE_取咖啡杯 = 10031;
- public const int SENCE_取冰淇淋杯 = 10032;
- public const int SENCE_咖啡杯检测 = 10033;
- public const int SENCE_冰淇淋杯检测 = 10034;
- public const int SENCE_二次取咖啡杯 = 10035;
- public const int SENCE_二次取冰淇淋杯 = 10036;
- public const int SENCE_接咖啡 = 10037;
- public const int SENCE_接冰淇淋公共点 = 10038;
- public const int SENCE_接1号冰淇淋 = 10039;
- public const int SENCE_接2号冰淇淋 = 10040;
- public const int SENCE_接3号冰淇淋 = 10041;
- public const int SENCE_放咖啡位置 = 10042;
- public const int SENCE_放冰淇淋位置 = 10043;
-
- //add 新加场景
- public const int SENCE_接咖啡后回原点 = 10051;
- public const int SENCE_咖啡杯回原点 = 10050;
- public const int SENCE_冰淇淋杯回原点 = 10049;
- public const int SENCE_取咖啡出餐 = 10052;
- #endregion
-
///
/// IP地址
///
- public string IpAddress { get; set; }
+ public string IpAddress { get; set; } = "192.168.0.1";
///
/// 抓手上传感器输入位索引
///
@@ -88,281 +34,6 @@ namespace BPASmartClient.Lebai
///
public int OutputSingalValue { get; set; }
-
- private volatile static LebaiRobot _Instance;
- public static LebaiRobot GetInstance => _Instance ?? (_Instance = new LebaiRobot());
- private LebaiRobot() { }
- private LebaiRobotClient client;
- private RobotData robotData;
- public bool IsIdle { get; set; } = false;
- public bool IsConnected { get { return null != 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.ShowEx(ex.ToString());
- ErrorFlag = true;
- }
- Thread.Sleep(3000);
- }
- }
- StartRobot();
- MessageLog.GetInstance.Show("乐百机器人连接成功!");
- }
- ///
- /// 机器人重连检测
- ///
- ///
- public void Reconnect(string ip)
- {
- if (client == null)
- {
- try
- {
- client = new LebaiRobotClient(ip);
- }
- catch (Exception)
- {
-
- // throw;
- }
- }
- check:
- while (robotData != null)
- {
-
- try
- {
- robotData = client.GetRobotData().Result;
- }
- catch (Exception)
- {
- robotData = null;
- // throw;
- }
- }
- MessageLog.GetInstance.Show("乐白机器人断开连接,准备重连");
- int num = 0;
- while (num < 6 && robotData == null)
- {
- try
- {
-
- robotData = client.GetRobotData().Result;
- }
- catch (Exception ex)
- {
- if (num == 5)
- {
- MessageLog.GetInstance.ShowEx(ex.ToString());
- }
- }
-
- if (num < 5 && robotData == null)
- {
- Thread.Sleep(1000);
- MessageLog.GetInstance.Show($"乐白机器人正在尝试第{num + 1}次重连....");
- }
- else if (num >= 5 && robotData == null)
- {
- MessageLog.GetInstance.Show("乐白机器人重连失败,请检查硬件连接");
- //return;
- }
- num++;
- }
- if (robotData != null)
- {
- StartRobot();
- MessageLog.GetInstance.Show("乐白机器人重连成功");
- }
- goto check;
- }
-
- public void GetRobotModeStatus()
- {
-
- if (robotData == null) return;
- int mode = robotData.RobotMode.Mode;
- IsIdle = mode == 5;
- for (int i = 0; i < 14; i++)
- {
- if (RTrig.GetInstance(((ELebaiRModel)i).ToString()).Start(mode == i))
- MessageLog.GetInstance.Show(((ELebaiRModel)i).ToString());
- }
- }
- public void GetSpeed()
- {
- //client.StartSys().GetAwaiter();
- var aa = client.GetActualTcpSpeed().GetAwaiter();
- //robotData.RobotMode.Mode
- }
-
- ///
- /// 启动机器人
- ///
- public async void StartRobot()
- {
- if (robotData != null)
- {
- await client.StartSys();
- await client.Sync();
- MessageLog.GetInstance.Show("机器人启动成功");
- }
- }
-
- ///
- /// 启动示教
- ///
- public async void StartTeachMode()
- {
- try
- {
- if (robotData != null)
- {
- await client.TeachMode();
- MessageLog.GetInstance.Show("机器人切换为示教模式.");
- }
- }
- catch (Exception ex)
- {
- MessageLog.GetInstance.ShowEx(ex.ToString());
- }
- }
-
- ///
- /// 结束示教
- ///
- public async void EndtTeachMode()
- {
- try
- {
- if (robotData != null)
- {
- await client.EndTeachMode();
- MessageLog.GetInstance.Show("机器人切换为停止示教模式.");
- }
- }
- catch (Exception ex)
- {
- MessageLog.GetInstance.ShowEx(ex.ToString());
- }
- }
-
- ///
- /// 机器人急停
- ///
- public async void EStopRobot()
- {
- try
- {
- if (robotData != null)
- {
- await client.EStop();
- MessageLog.GetInstance.Show("机器人急停");
- }
- }
- catch (Exception ex)
- {
- MessageLog.GetInstance.ShowEx(ex.ToString());
- }
- }
-
- ///
- /// 获取抓手重量
- ///
- ///
- public double GetClawWdight()
- {
- if (robotData != null)
- {
- return client.GetClawWeight().Result.Weight_;
- }
- return 0;
- }
-
- ///
- /// 获取信号量
- ///
- ///
- ///
- 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;
- SignalValue signalValue = new SignalValue();
- signalValue.Index = index;
- signalValue.Value = value;
- return client.SetSignal(signalValue).Result;
- }
-
- ///
- /// 获取输入DI状态
- ///
- ///
- ///
- public bool GetInput(int pin = 0)
- {
- if (client == null) return false;
- var res = client.GetDIO(new IOPin() { Pin = pin }).Result;
- if (res != null)
- {
- return res.Value == 1 ? true : false;
- }
- return false;
- }
-
- ///
- /// 运行指定的场景
- ///
- ///
- public async void Scene(int id)
- {
- CancellationToken cancellationToken = default(CancellationToken);
- var result = await client.GetTasks(new GetTasksInput { PageIndex = 1, PageSize = 1 }, cancellationToken);
- var first = result?.Items?.FirstOrDefault();
- var r = first == null || first.Status != TaskStatus.Running && first.Status != TaskStatus.Pause;
- while (!r)
- {
- Thread.Sleep(5);
- result = await client.GetTasks(new GetTasksInput { PageIndex = 1, PageSize = 1 }, cancellationToken);
- first = result?.Items?.FirstOrDefault();
- r = first == null || first.Status != TaskStatus.Running && first.Status != TaskStatus.Pause;
- }
- while (GetValueAsync().Value != 0)
- {
- Thread.Sleep(500);
- }
- Thread.Sleep(1000);
- if (robotData == null || client == null) return;
- //if (!client.GetIsCanRunTask().Result) return;
- await client?.RunScene(id);
- MessageLog.GetInstance.Show($"调用场景:{id}");
- }
-
protected override void InitStatus()
{
status["Connected"] = false;
@@ -372,12 +43,18 @@ namespace BPASmartClient.Lebai
public override void Start()
{
- Connect(IpAddress);
-
+ LebaiHelper.GetInstance().Connect(IpAddress);
+ ThreadManage.GetInstance().StartLong(() => { LebaiHelper.GetInstance().Reconnect(IpAddress); Thread.Sleep(5000); }, "机器人重连检测");
+ ThreadManage.GetInstance().StartLong(() =>
+ {
+ status["Connected"] = LebaiHelper.GetInstance().IsConnected;
+ if (LebaiHelper.GetInstance().robotData != null) status["RobotMode"] = LebaiHelper.GetInstance().robotData.RobotMode.Mode;
+ },"获取乐白机器人数据");
}
public override void Stop()
{
+
}
public override void Init()
@@ -387,6 +64,9 @@ namespace BPASmartClient.Lebai
});
InitStatus();
+ Start();
}
+
+
}
}
diff --git a/BPASmartClient.LebaiRobot/BPASmartClient.LebaiRobot.csproj b/BPASmartClient.LebaiRobot/BPASmartClient.LebaiRobot.csproj
new file mode 100644
index 00000000..1ce18eb6
--- /dev/null
+++ b/BPASmartClient.LebaiRobot/BPASmartClient.LebaiRobot.csproj
@@ -0,0 +1,15 @@
+
+
+
+ net6.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+
diff --git a/BPASmartClient.Lebai/ELebaiRModel.cs b/BPASmartClient.LebaiRobot/ELebaiRModel.cs
similarity index 93%
rename from BPASmartClient.Lebai/ELebaiRModel.cs
rename to BPASmartClient.LebaiRobot/ELebaiRModel.cs
index acec6be9..3f0b1a52 100644
--- a/BPASmartClient.Lebai/ELebaiRModel.cs
+++ b/BPASmartClient.LebaiRobot/ELebaiRModel.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace BPASmartClient.Lebai
+namespace BPASmartClient.LebaiRobot
{
public enum ELebaiRModel : int
{
diff --git a/BPASmartClient.LebaiRobot/LebaiHelper.cs b/BPASmartClient.LebaiRobot/LebaiHelper.cs
new file mode 100644
index 00000000..64790e8c
--- /dev/null
+++ b/BPASmartClient.LebaiRobot/LebaiHelper.cs
@@ -0,0 +1,333 @@
+using BPASmartClient.Helper;
+using BPASmartClient.Message;
+using BPASmartClient.Model;
+using Lebai.SDK;
+using Lebai.SDK.Dtos;
+using Robotc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using TaskStatus = Lebai.SDK.Dtos.TaskStatus;
+
+namespace BPASmartClient.LebaiRobot
+{
+ public class LebaiHelper:Singleton
+ {
+
+ #region 且时且多设备
+ //取咖啡杯 set:=1 get:=101 10031
+ //取冰淇淋杯 set:=1 get:=101 10032
+ //咖啡杯检测 set:=1 get:=101 10033
+ //冰淇淋杯检测 set:=1 get:=101 10034
+ //二次取咖啡杯 set:=1 get:=101 10035
+ //二次取冰淇淋杯 set:=1 get:=101 10036
+ //接咖啡 set:=1 get:=101 10037
+ //接冰淇淋公共点 set:=1 get:=101 10038
+ //接1号冰淇淋 set:=1 get:=101 10039
+ //接2号冰淇淋 set:=1 get:=101 10040
+ //接3号冰淇淋 set:=1 get:=101 10041
+ //放咖啡位置 set:=1 get:=101 10042
+ //放冰淇淋位置 set:=1 get:=101 10043
+
+ public const int SENCE_取咖啡杯 = 10031;
+ public const int SENCE_取冰淇淋杯 = 10032;
+ public const int SENCE_咖啡杯检测 = 10033;
+ public const int SENCE_冰淇淋杯检测 = 10034;
+ public const int SENCE_二次取咖啡杯 = 10035;
+ public const int SENCE_二次取冰淇淋杯 = 10036;
+ public const int SENCE_接咖啡 = 10037;
+ public const int SENCE_接冰淇淋公共点 = 10038;
+ public const int SENCE_接1号冰淇淋 = 10039;
+ public const int SENCE_接2号冰淇淋 = 10040;
+ public const int SENCE_接3号冰淇淋 = 10041;
+ public const int SENCE_放咖啡位置 = 10042;
+ public const int SENCE_放冰淇淋位置 = 10043;
+
+ //add 新加场景
+ public const int SENCE_接咖啡后回原点 = 10051;
+ public const int SENCE_咖啡杯回原点 = 10050;
+ public const int SENCE_冰淇淋杯回原点 = 10049;
+ public const int SENCE_取咖啡出餐 = 10052;
+ #endregion
+
+
+
+
+ private LebaiRobotClient client;
+ public RobotData robotData;
+ public bool IsIdle { get; set; } = false;
+ public bool IsConnected { get { return null != robotData; } }
+ public void Connect(string ip)
+ {
+ MessageLog.GetInstance.Show($"机器人IP地址:{ip}");
+ bool ErrorFlag = false;
+ while (robotData == null)
+ {
+ try
+ {
+ client = new LebaiRobotClient(ip);
+ robotData = client.GetRobotData().Result;
+ ActionManage.GetInstance.Send("乐白机器人数据");
+ }
+ catch (Exception ex)
+ {
+ if (!ErrorFlag)
+ {
+ MessageLog.GetInstance.ShowEx(ex.ToString());
+ ErrorFlag = true;
+ }
+ Thread.Sleep(3000);
+ }
+ }
+ StartRobot();
+
+ MessageLog.GetInstance.Show("乐百机器人连接成功!");
+ }
+ ///
+ /// 机器人重连检测
+ ///
+ ///
+ public void Reconnect(string ip)
+ {
+ if (client == null)
+ {
+ try
+ {
+ client = new LebaiRobotClient(ip);
+ }
+ catch (Exception)
+ {
+
+ // throw;
+ }
+ }
+ check:
+ while (robotData != null)
+ {
+
+ try
+ {
+ robotData = client.GetRobotData().Result; }
+ catch (Exception)
+ {
+ robotData = null;
+ // throw;
+ }
+ }
+ MessageLog.GetInstance.Show("乐白机器人断开连接,准备重连");
+ int num = 0;
+ while (num < 6 && robotData == null)
+ {
+ try
+ {
+ robotData = client.GetRobotData().Result;
+ }
+ catch (Exception ex)
+ {
+ if (num == 5)
+ {
+ MessageLog.GetInstance.ShowEx(ex.ToString());
+ }
+ }
+
+ if (num < 5 && robotData == null)
+ {
+ Thread.Sleep(1000);
+ MessageLog.GetInstance.Show($"乐白机器人正在尝试第{num + 1}次重连....");
+ }
+ else if (num >= 5 && robotData == null)
+ {
+ MessageLog.GetInstance.Show("乐白机器人重连失败,请检查硬件连接");
+ //return;
+ }
+ num++;
+ }
+ if (robotData != null)
+ {
+ StartRobot();
+ MessageLog.GetInstance.Show("乐白机器人重连成功");
+ }
+ goto check;
+ }
+
+ public void GetRobotModeStatus()
+ {
+ if (robotData == null)
+ {
+
+ return;
+ }
+ int mode = robotData.RobotMode.Mode;
+ IsIdle = mode == 5;
+
+ for (int i = 0; i < 14; i++)
+ {
+ if (RTrig.GetInstance(((ELebaiRModel)i).ToString()).Start(mode == i))
+ MessageLog.GetInstance.Show(((ELebaiRModel)i).ToString());
+ }
+
+ }
+ public void GetSpeed()
+ {
+ //client.StartSys().GetAwaiter();
+ var aa = client.GetActualTcpSpeed().GetAwaiter();
+ //robotData.RobotMode.Mode
+ }
+
+ ///
+ /// 启动机器人
+ ///
+ public async void StartRobot()
+ {
+ if (robotData != null)
+ {
+ await client.StartSys();
+ await client.Sync();
+ MessageLog.GetInstance.Show("机器人启动成功");
+ }
+ }
+
+ ///
+ /// 启动示教
+ ///
+ public async void StartTeachMode()
+ {
+ try
+ {
+ if (robotData != null)
+ {
+ await client.TeachMode();
+ MessageLog.GetInstance.Show("机器人切换为示教模式.");
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageLog.GetInstance.ShowEx(ex.ToString());
+ }
+ }
+
+ ///
+ /// 结束示教
+ ///
+ public async void EndtTeachMode()
+ {
+ try
+ {
+ if (robotData != null)
+ {
+ await client.EndTeachMode();
+ MessageLog.GetInstance.Show("机器人切换为停止示教模式.");
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageLog.GetInstance.ShowEx(ex.ToString());
+ }
+ }
+
+ ///
+ /// 机器人急停
+ ///
+ public async void EStopRobot()
+ {
+ try
+ {
+ if (robotData != null)
+ {
+ await client.EStop();
+ MessageLog.GetInstance.Show("机器人急停");
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageLog.GetInstance.ShowEx(ex.ToString());
+ }
+ }
+
+ ///
+ /// 获取抓手重量
+ ///
+ ///
+ public double GetClawWdight()
+ {
+ if (robotData != null)
+ {
+ return client.GetClawWeight().Result.Weight_;
+ }
+ return 0;
+ }
+
+ ///
+ /// 获取信号量
+ ///
+ ///
+ ///
+ 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;
+ SignalValue signalValue = new SignalValue();
+ signalValue.Index = index;
+ signalValue.Value = value;
+ return client.SetSignal(signalValue).Result;
+ }
+
+ ///
+ /// 获取输入DI状态
+ ///
+ ///
+ ///
+ public bool GetInput(int pin = 0)
+ {
+ if (client == null) return false;
+ var res = client.GetDIO(new IOPin() { Pin = pin }).Result;
+ if (res != null)
+ {
+ return res.Value == 1 ? true : false;
+ }
+ return false;
+ }
+
+ ///
+ /// 运行指定的场景
+ ///
+ ///
+ public async void Scene(int id)
+ {
+ CancellationToken cancellationToken = default(CancellationToken);
+ var result = await client.GetTasks(new GetTasksInput { PageIndex = 1, PageSize = 1 }, cancellationToken);
+ var first = result?.Items?.FirstOrDefault();
+ var r = first == null || first.Status != Lebai.SDK.Dtos.TaskStatus.Running && first.Status != TaskStatus.Pause;
+ while (!r)
+ {
+ Thread.Sleep(5);
+ result = await client.GetTasks(new GetTasksInput { PageIndex = 1, PageSize = 1 }, cancellationToken);
+ first = result?.Items?.FirstOrDefault();
+ r = first == null || first.Status != Lebai.SDK.Dtos.TaskStatus.Running && first.Status != Lebai.SDK.Dtos.TaskStatus.Pause;
+ }
+ while (GetValueAsync().Value != 0)
+ {
+ Thread.Sleep(500);
+ }
+ Thread.Sleep(1000);
+ if (robotData == null || client == null) return;
+ //if (!client.GetIsCanRunTask().Result) return;
+ await client?.RunScene(id);
+ MessageLog.GetInstance.Show($"调用场景:{id}");
+ }
+ }
+}
diff --git a/BPASmartClient.MorkT/Control_MorkT.cs b/BPASmartClient.MorkT/Control_MorkT.cs
index 09a87c9a..e91d9626 100644
--- a/BPASmartClient.MorkT/Control_MorkT.cs
+++ b/BPASmartClient.MorkT/Control_MorkT.cs
@@ -2,7 +2,9 @@
using BPASmartClient.Device;
using BPASmartClient.EventBus;
using BPASmartClient.GSIceCream;
+using BPASmartClient.Helper;
using BPASmartClient.Lebai;
+using BPASmartClient.LebaiRobot;
using BPASmartClient.Message;
using BPASmartClient.Model;
using BPASmartClient.Model.冰淇淋.Enum;
@@ -25,9 +27,9 @@ namespace BPASmartClient.MorkT
GLV_MorkT morkT = new GLV_MorkT();
-
public override void DoMain()
{
+ IsHealth = true;
ServerInit();
DataParse();
EventBus.EventBus.GetInstance().Subscribe(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
@@ -35,7 +37,30 @@ namespace BPASmartClient.MorkT
if (morkT.MakeCoffeeOrder != null)
morkT.MakeCoffeeOrder.OrderStatus = 1;
});
+
+ ActionManage.GetInstance.Register(new Action