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