using MqttnetServerWin;
using Newtonsoft.Json;
using System;
using System.Linq;
using System.Text;
using static MainForm.ClassFile.XiaomiAPI_AGV.XiaomiAGVMQTT_Loading.IncomingFromAGV;
namespace MainForm.ClassFile.XiaomiAPI_AGV
{
///
/// AGV向装备 发送 ⼊料指令(⼊料请求指令/⼊料完成指令)
/// control/incoming ⼊料请求
/// control/incoming/finish ⼊料完成
///
public class XiaomiAGVMQTT_Loading : XiaomiAGVMQTT_Base
{
#region 解析数据
///
/// 解析 agv报文(⼊料请求指令、⼊料完成指令)
/// iiot_tm_comm_control_down/tm/down/control/${portCode}
///
///
/// 设备号
public static IncomingFromAGV DoData_AGVIncoming(string data)
{
IncomingFromAGV incomingFromAGV = new IncomingFromAGV();
//incomingFromAGV.things = fromAGV.things; // 事件;非必填
//incomingFromAGV.time = fromAGV.time; // 时间戳;13位
//// 服务内容
//incomingFromAGV.service.callId = fromAGV.service.callId;
//incomingFromAGV.service.identifier = fromAGV.service.identifier;
//incomingFromAGV.service.identifier = fromAGV.service.identifier;
//// 接驳台信息
//incomingFromAGV.service.inputItems
// = JsonConvert.DeserializeObject(fromAGV.service.inputItems);
return incomingFromAGV;
}
///
/// AGV发送来的报文(⼊料请求指令、⼊料完成指令) - 实体
///
public class IncomingFromAGV
{
///
/// 事件;非必填
///
public string things { set; get; } = null;
///
/// 服务内容
///
public IncomingFromAGVService service { set; get; } = new IncomingFromAGVService();
///
/// 时间戳;13位
///
public string time { set; get; } = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
///
/// 服务内容
///
public class IncomingFromAGVService
{
///
/// Id 等于 时间戳time
///
public string callId { set; get; } = string.Empty;
///
/// 任务标识符
/// control/incoming ⼊料请求
/// control/incoming/finish ⼊料完成
///
public string identifier { set; get; } = string.Empty;
///
/// 接驳台信息
///
public IncomingFromAGVInputItems inputItems { set; get; } = new IncomingFromAGVInputItems();
}
///
/// 接驳台信息
///
public class IncomingFromAGVInputItems
{
///
/// 接驳⼝编码
///
public string portCode { set; get; } = string.Empty;
///
/// 送料数量;空箱传0
///
public int quantity { set; get; }
}
}
#endregion 解析数据
#region 装备向AGV 回复‘⼊料请求指令’(SMT装备向AGV返回[允许或拒绝]⼊料请求)
///
/// 装备向AGV 回复‘⼊料请求指令’(SMT装备向AGV返回[允许或拒绝]⼊料请求)
/// iiot_tm_comm_control_up/tm/up/control/agv
///
///
///
public static void SendIncomingToAGV(ref MQTTHelper mqttHelper, IncomingToAGV data)
{
string dataJson = JsonConvert.SerializeObject(data);
mqttHelper.PublishAsync_Client(AgvTopic, dataJson, true).Wait();
}
///
/// ⼊料请求指令 - 装备向AGV回复的报文
///
public class IncomingToAGV
{
///
/// 时间戳;13位
///
public string time { set; get; } = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
///
/// 事件;非必填
///
public string things { set; get; } = null;
///
/// 服务内容
///
public IncomingToAGVService service { set; get; } = new IncomingToAGVService();
///
/// 服务内容
///
public class IncomingToAGVService
{
///
/// Id 等于 时间戳time
///
public string callId { set; get; } = string.Empty;
///
/// 任务标识符
/// control/incoming ⼊料请求
///
public string identifier { set; get; } = "control/incoming";
///
/// 状态信息
///
public string executeStatus { set; get; } = "SUCCESS";
///
/// 接驳台信息
///
public IncomingToAGVOutputItems outputItems { set; get; } = new IncomingToAGVOutputItems();
}
///
/// 接驳台信息
///
public class IncomingToAGVOutputItems
{
///
/// 接驳⼝编码
///
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 static void SendIncomingFinishToAGV(ref MQTTHelper mqttHelper, IncomingFinishToAGV data)
{
string dataJson = JsonConvert.SerializeObject(data);
mqttHelper.PublishAsync_Client(AgvTopic, dataJson, true).Wait();
}
///
/// ⼊料完成指令 - 装备向AGV回复的报文
///
public class IncomingFinishToAGV
{
///
/// 时间戳;13位
///
public string time { set; get; } = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
///
/// 事件;非必填
///
public string things { set; get; } = null;
///
/// 服务内容
///
public IncomingFinishToAGVService service { set; get; } = new IncomingFinishToAGVService();
///
/// 服务内容
///
public class IncomingFinishToAGVService
{
///
/// Id 等于 时间戳time
///
public string callId { set; get; } = string.Empty;
///
/// 任务标识符
/// control/incoming/finish ⼊料完成
///
public string identifier { set; get; } = "control/incoming/finish";
///
/// 状态信息
///
public string executeStatus { set; get; } = "SUCCESS";
///
/// 接驳台信息
///
public IncomingFinishToAGVOutputItems outputItems { set; get; } = new IncomingFinishToAGVOutputItems();
}
///
/// 接驳台信息
///
public class IncomingFinishToAGVOutputItems
{
///
/// 接驳⼝编码
///
public string portCode { set; get; } = string.Empty;
///
/// 送料数量.空箱传0
///
public int quantity { set; get; } = 0;
}
}
#endregion 装备向AGV 回复‘⼊料完成指令’(SMT装备向AGV返回⼊料完成)
}
}