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返回⼊料完成) } }