IProtocolService.cs
3.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
using Rcs.Application.Common;
using Rcs.Domain.Entities;
using Rcs.Domain.Models.VDA5050;
namespace Rcs.Application.Services.Protocol;
/// <summary>
/// 协议服务统一接口
/// 定义不同协议类型(VDA5050、自定义协议等)的通用操作
/// @author zzy
/// </summary>
public interface IProtocolService
{
/// <summary>
/// 支持的协议类型
/// </summary>
ProtocolType ProtocolType { get; }
/// <summary>
/// 发送任务指令
/// </summary>
/// <param name="robot">机器人实体</param>
/// <param name="task">任务</param>
/// <param name="ct">取消令牌</param>
Task<ApiResponse> SendOrderAsync(Robot robot, RobotTask task, CancellationToken ct = default);
/// <summary>
/// 取消指定订单
/// </summary>
/// <param name="robot">机器人实体</param>
/// <param name="orderId">订单ID</param>
/// <param name="ct">取消令牌</param>
Task CancelOrderAsync(Robot robot, string? orderId, CancellationToken ct = default);
/// <summary>
/// 根据机器人取消任务
/// </summary>
/// <param name="robot">机器人实体</param>
/// <param name="ct">取消令牌</param>
Task CancelRobotTasksAsync(Robot robot, CancellationToken ct = default);
/// <summary>
/// 发送即时动作指令
/// </summary>
/// <param name="robot">机器人实体</param>
/// <param name="actions">即时动作</param>
/// <param name="ct">取消令牌</param>
Task SendInstantActionAsync(Robot robot, InstantAction actions, CancellationToken ct = default);
/// <summary>
/// 复位机器人
/// </summary>
/// <param name="robot">机器人实体</param>
/// <param name="ct">取消令牌</param>
Task ResetRobotAsync(Robot robot, CancellationToken ct = default);
/// <summary>
/// 确认异常
/// </summary>
/// <param name="robot">机器人实体</param>
/// <param name="ct">取消令牌</param>
Task ConfirmExceptionAsync(Robot robot, CancellationToken ct = default);
/// <summary>
/// 机器人暂停
/// </summary>
/// <param name="robot">机器人实体</param>
/// <param name="ct">取消令牌</param>
Task RobotPauseAsync(Robot robot, CancellationToken ct = default);
/// <summary>
/// 机器人取消暂停
/// </summary>
/// <param name="robot">机器人实体</param>
/// <param name="ct">取消令牌</param>
Task RobotUnPauseAsync(Robot robot, CancellationToken ct = default);
/// <summary>
/// 重定位
/// </summary>
/// <param name="robot">机器人实体</param>
/// <param name="ct">取消令牌</param>
Task<ApiResponse> ReLocationAsync(Robot robot,string mapCode,double x,double y, double theta, CancellationToken ct = default);
/// <summary>
/// 发送下一段路径指令
/// 从已缓存的分段路径中获取下一段并发送
/// </summary>
/// <param name="robot">机器人实体</param>
/// <param name="task">任务实体</param>
/// <param name="ct">取消令牌</param>
/// <returns>操作响应</returns>
Task<ApiResponse> SendNextSegmentAsync(Robot robot, RobotSubTask currentSubTask, CancellationToken ct = default, bool reExec = false);
/// <summary>
/// 发送下一段指令,针对VDA协议的制造商和序列号
/// </summary>
/// <param name="robotManufacturer"></param>
/// <param name="robotSerialNumber"></param>
/// <param name="ct"></param>
/// <returns></returns>
Task<ApiResponse> SendNextSegmentAsync(string robotManufacturer, string robotSerialNumber,
CancellationToken ct = default, bool reExec = false);
}