using MqttnetServerWin;
using Newtonsoft.Json;
using System;
using System.Linq;
using System.Text;
using static MainForm.ClassFile.XiaomiAPI_AGV.XiaomiAGVMQTT_Loading;
using static MainForm.ClassFile.XiaomiAPI_AGV.XiaomiAGVMQTT_Loading.IncomingFromAGV;
using static MainForm.ClassFile.XiaomiAPI_AGV.XiaomiAGVMQTT_UnLoading.OutgoingFromAGV;
namespace MainForm.ClassFile.XiaomiAPI_AGV
{
///
/// AGV向装备 发送 出料请求(出料请求指令/出料完成指令)
/// control/outgoing 出料
/// control/outgoing/finish 出料完成
///
public class XiaomiAGVMQTT_UnLoading : XiaomiAGVMQTT_Base
{
#region 解析数据
///
/// 解析 agv报文(出料请求指令、出料完成指令)
/// iiot_tm_comm_control_down/tm/down/control/${portCode}
///
///
/// 设备号
public static OutgoingFromAGV DeviceTopicAGVIncoming(string data)
{
OutgoingFromAGV outgoingFromAGV = new OutgoingFromAGV();
//outgoingFromAGV.things = fromAGV.things; // 事件;非必填
//outgoingFromAGV.time = fromAGV.time; // 时间戳;13位
//// 服务内容
//outgoingFromAGV.service.callId = fromAGV.service.callId;
//outgoingFromAGV.service.identifier = fromAGV.service.identifier;
//outgoingFromAGV.service.identifier = fromAGV.service.identifier;
//// 接驳台信息
//outgoingFromAGV.service.inputItems
// = JsonConvert.DeserializeObject(fromAGV.service.inputItems);
return outgoingFromAGV;
}
///
/// AGV发送来的报文(出料请求指令、出料完成指令) - 实体
/// iiot_tm_comm_control_down/tm/down/control/${portCode}
///
public class OutgoingFromAGV
{
///
/// 事件;非必填
///
public string things { set; get; } = null;
///
/// 服务内容
///
public OutgoingFromAGVService service { set; get; } = new OutgoingFromAGVService();
///
/// 时间戳;13位
///
public string time { set; get; } = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
///
/// 服务内容
///
public class OutgoingFromAGVService
{
///
/// Id 等于 时间戳time
///
public string callId { set; get; } = string.Empty;
///
/// 任务标识符
/// control/outgoing 出料请求
/// control/outgoing/finish 出料完成
///
public string identifier { set; get; } = string.Empty;
///
/// 接驳台信息
///
public OutgoingFromAGVInputItems inputItems { set; get; } = new OutgoingFromAGVInputItems();
}
///
/// 接驳台信息
///
public class OutgoingFromAGVInputItems
{
///
/// 接驳⼝编码
///
public string portCode { set; get; } = string.Empty;
}
}
#endregion 解析数据
#region 装备向AGV 回复‘出料请求指令’(SMT装备向AGV返回[允许或拒绝]出料请求)
///
/// 装备向AGV 回复‘出料请求指令’(SMT装备向AGV返回[允许或拒绝]出料请求)
/// iiot_tm_comm_control_up/tm/up/control/agv
///
public void SendOutgoingToAGV(ref MQTTHelper mqttHelper, OutgoingToAGV data)
{
string dataJson = JsonConvert.SerializeObject(data);
mqttHelper.PublishAsync_Client(AgvTopic, dataJson, true).Wait();
}
///
/// 出料请求指令 - 装备向AGV回复的报文
///
public class OutgoingToAGV
{
///
/// 时间戳;13位
///
public string time { set; get; } = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
///
/// 事件;非必填
///
public string things { set; get; } = null;
///
/// 服务内容
///
public OutgoingToAGVService service { set; get; } = new OutgoingToAGVService();
///
/// 服务内容
///
public class OutgoingToAGVService
{
///
/// Id 等于 时间戳time
///
public string callId { set; get; } = string.Empty;
///
/// 任务标识符
/// control/outgoing 出料请求
///
public string identifier { set; get; } = "control/outgoing";
///
/// 状态信息
///
public string executeStatus { set; get; } = "SUCCESS";
///
/// 接驳台信息
///
public OutgoingToAGVOutputItems outputItems { set; get; } = new OutgoingToAGVOutputItems();
}
///
/// 接驳台信息
///
public class OutgoingToAGVOutputItems
{
///
/// 接驳⼝编码
///
public string portCode { set; get; } = string.Empty;
///
/// 允许:agree
/// 不允许:refuse
///
public string message { set; get; } = "agree";
}
}
#endregion 装备向AGV 回复‘出料请求指令’(SMT装备向AGV返回[允许或拒绝]出料请求)
#region 装备向AGV 回复‘出料完成指令’(SMT装备向AGV返回出料完成)
///
/// 装备向AGV 回复‘出料完成指令’(SMT装备向AGV返回出料完成)
/// iiot_tm_comm_control_up/tm/up/control/agv
///
public void SendOutgoingFinishToAGV(ref MQTTHelper mqttHelper, OutgoingFinishToAGV data)
{
string dataJson = JsonConvert.SerializeObject(data);
mqttHelper.PublishAsync_Client(AgvTopic, dataJson, true).Wait();
}
///
/// 出料完成指令 - 装备向AGV回复的报文
///
public class OutgoingFinishToAGV
{
///
/// 时间戳;13位
///
public string time { set; get; } = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
///
/// 事件;非必填
///
public string things { set; get; } = null;
///
/// 服务内容
///
public OutgoingFinishToAGVService service { set; get; } = new OutgoingFinishToAGVService();
///
/// 服务内容
///
public class OutgoingFinishToAGVService
{
///
/// Id 等于 时间戳time
///
public string callId { set; get; } = string.Empty;
///
/// 任务标识符
/// control/outgoing/finish 出料完成
///
public string identifier { set; get; } = "control/outgoing/finish";
///
/// 状态信息
///
public string executeStatus { set; get; } = "SUCCESS";
///
/// 接驳台信息
///
public OutgoingFinishToAGVOutputItems outputItems { set; get; } = new OutgoingFinishToAGVOutputItems();
}
///
/// 接驳台信息
///
public class OutgoingFinishToAGVOutputItems
{
///
/// 接驳⼝编码
///
public string portCode { set; get; } = string.Empty;
}
}
#endregion 装备向AGV 回复‘出料完成指令’(SMT装备向AGV返回出料完成)
}
}