using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; using System.Web; using Newtonsoft.Json; using System.Net.Http; using System.Configuration; using System.Security.Cryptography; namespace BPASmartClient.AGV { public class AGVHelper { public static AGVHelper _Instance { get; set; } public static AGVHelper GetInstance => _Instance ?? (_Instance = new AGVHelper()); Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); //根据Key读取元素的Value // string name = config.AppSettings.Settings["name"].Value; public List resId = new List(); public AGVHelper() { } public string HttpRequest(string url, string head, string body) { return PostData(url, head, body); } public string PostData(string url, string head, string body) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url)); request.Method = "POST"; request.Headers["header"] = head; request.Proxy = null; byte[] bytes = Encoding.UTF8.GetBytes(body); request.ContentType = "application/json"; //窗体数据被编码为名称/值对形式 //request.ContentType = "application/json"; request.ContentLength = bytes.Length; request.ServicePoint.Expect100Continue = false; Stream myResponseStream = request.GetRequestStream(); myResponseStream.Write(bytes, 0, bytes.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream stream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(stream);//解码 string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); if (response != null) { response.Close(); } if (request != null) { request.Abort(); } return retString;//返回响应报文 } /// /// MD5哈希摘要转16进制 /// /// /// public string MD5Deal(string body) { //如果启用签名 用MD5 哈希摘要 再转16进制 MD5 md5 = MD5.Create(); byte[] bte = md5.ComputeHash(Encoding.UTF8.GetBytes(body)); StringBuilder build = new StringBuilder(); for (int i = 0; i < bte.Length; i++) { build.Append(bte[i].ToString("X")); } return build.ToString(); } public string ResquestIdGenerate() { eq: string reqId = Guid.NewGuid().ToString("D"); string Id = resId.FirstOrDefault(p => p == reqId); if (Id != null) goto eq; resId.Add(Id); if (resId.Count > 15) { resId.RemoveRange(0,5);//定期清理请求Id } return Id; } /// /// AGV去1号线体装桶到炒锅1 /// /// public string AgvToLineOneLoadRoller(string robotJobId) { //bool b = Convert.ToBoolean(config.AppSettings.Settings["appKey"].Value);//配置文件信息读取 string url = AGVRequestUrl.GetInstance.TaskSendUrl; //请求报文头 HttpRequestHeaderModel httpHeader = new HttpRequestHeaderModel(); httpHeader.appKey = config.AppSettings.Settings["appKey"].Value; httpHeader.appSecret = config.AppSettings.Settings["appSecret"].Value; httpHeader.requestId = ResquestIdGenerate(); httpHeader.timestamp = DateTime.Now.ToString();//时间戳 httpHeader.version = config.AppSettings.Settings["version"].Value; string head = JsonConvert.SerializeObject(httpHeader); //请求报文体 AGVModel httpModel = new AGVModel(); httpModel.robotJobId = robotJobId;//上游提供 httpModel.warehouseId = long.Parse(config.AppSettings.Settings["warehouseId"].Value); //仓库编号 httpModel.jobPriority = Convert.ToInt32(config.AppSettings.Settings["jobPriority"].Value);//任务执行的优先级 httpModel.jobPriorityType = Convert.ToInt32(config.AppSettings.Settings["jobPriorityType"].Value);//0:根据优先级来执行,1:强制执行 httpModel.jobType = config.AppSettings.Settings["jobType"].Value; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE //详细任务数据 //点到点 AGV_PointRollerJobData httpJobData = new AGV_PointRollerJobData(); httpJobData.startPoint = config.AppSettings.Settings["LineOnePoint"].Value;//起点点位 httpJobData.endPoint = config.AppSettings.Settings["FryPotOnePoint"].Value; ;//目的点位 httpJobData.autoLoad = Convert.ToBoolean(config.AppSettings.Settings["autoLoad"].Value); //是否自动上料 true:自动上料 false:人工上料 httpJobData.enableIOLoad = Convert.ToBoolean(config.AppSettings.Settings["enableIOLoad"].Value); ;//上料交互方式 false:接口交互 true:光电交互 httpJobData.autoUnload = Convert.ToBoolean(config.AppSettings.Settings["autoUnload"].Value); ;//是否自动下料 true:自动下料 false:人工下料 httpJobData.enableIOUnload = Convert.ToBoolean(config.AppSettings.Settings["enableIOUnload"].Value); ;//下料交互方式 false:接口交互 true:光电交互 httpJobData.loadEquipmentId = 1; httpJobData.unloadEquipmentId = 5; httpModel.jobData = httpJobData; string body = "["+JsonConvert.SerializeObject(httpModel)+"]"; // string newBody = String.Join(",\r\n", body.Split(','));//格式处理,看需求 //货位到货位 //AGV_SlotRollerJobData httpSlotJobData = new AGV_SlotRollerJobData(); //httpSlotJobData.startSlotCode = "";//起点槽位编号 //httpSlotJobData.endSlotCode = "";//目的槽位编号 //httpSlotJobData.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料 //httpSlotJobData.enableIOLoad = true;//上料交互方式 false:接口交互 true:光电交互 //httpSlotJobData.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料 //httpSlotJobData.enableIOUnload = true;//下料交互方式 false:接口交互 true:光电交互 //httpModel.jobData = httpSlotJobData; //string body = JsonConvert.SerializeObject(httpModel); //启用签名 //url = url + "?sign=" + MD5Deal(body); string data = HttpRequest(url, head, body).Replace("[", "").Replace("]", ""); object objData = JsonConvert.DeserializeObject(data); if (objData != null && objData is HttpResponseBodyModel response) { return response.code; } return "Analysis Error"; } /// /// AGV去1号线体装桶到炒锅4 /// /// public string AgvFromLineOneToFryFourLoadRoller(string robotJobId) { //bool b = Convert.ToBoolean(config.AppSettings.Settings["appKey"].Value);//配置文件信息读取 string url = AGVRequestUrl.GetInstance.TaskSendUrl; //请求报文头 HttpRequestHeaderModel httpHeader = new HttpRequestHeaderModel(); httpHeader.appKey = config.AppSettings.Settings["appKey"].Value; httpHeader.appSecret = config.AppSettings.Settings["appSecret"].Value; httpHeader.requestId = ResquestIdGenerate(); httpHeader.timestamp = DateTime.Now.ToString();//时间戳 httpHeader.version = config.AppSettings.Settings["version"].Value; string head = JsonConvert.SerializeObject(httpHeader); //请求报文体 AGVModel httpModel = new AGVModel(); httpModel.robotJobId = robotJobId;//上游提供 httpModel.warehouseId = long.Parse(config.AppSettings.Settings["warehouseId"].Value); //仓库编号 httpModel.jobPriority = Convert.ToInt32(config.AppSettings.Settings["jobPriority"].Value);//任务执行的优先级 httpModel.jobPriorityType = Convert.ToInt32(config.AppSettings.Settings["jobPriorityType"].Value);//0:根据优先级来执行,1:强制执行 httpModel.jobType = config.AppSettings.Settings["jobType"].Value; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE //详细任务数据 //点到点 AGV_PointRollerJobData httpJobData = new AGV_PointRollerJobData(); httpJobData.startPoint = config.AppSettings.Settings["LineOnePoint"].Value; ;//起点点位 httpJobData.endPoint = config.AppSettings.Settings["FryPotFourPoint"].Value; ;//目的点位 //httpJobData.startPoint = config.AppSettings.Settings["FryPotFivePoint"].Value;//起点点位 //httpJobData.endPoint = config.AppSettings.Settings["FryPotFourPoint"].Value; ;//目的点位 httpJobData.autoLoad = Convert.ToBoolean(config.AppSettings.Settings["autoLoad"].Value); //是否自动上料 true:自动上料 false:人工上料 httpJobData.enableIOLoad = Convert.ToBoolean(config.AppSettings.Settings["enableIOLoad"].Value); ;//上料交互方式 false:接口交互 true:光电交互 httpJobData.autoUnload = Convert.ToBoolean(config.AppSettings.Settings["autoUnload"].Value); ;//是否自动下料 true:自动下料 false:人工下料 httpJobData.enableIOUnload = Convert.ToBoolean(config.AppSettings.Settings["enableIOUnload"].Value); ;//下料交互方式 false:接口交互 true:光电交互 httpJobData.loadEquipmentId = 1; httpJobData.unloadEquipmentId = 8; httpModel.jobData = httpJobData; string body ="["+ JsonConvert.SerializeObject(httpModel)+"]"; // string newBody = String.Join(",\r\n", body.Split(','));//格式处理,看需求 //货位到货位 //AGV_SlotRollerJobData httpSlotJobData = new AGV_SlotRollerJobData(); //httpSlotJobData.startSlotCode = "";//起点槽位编号 //httpSlotJobData.endSlotCode = "";//目的槽位编号 //httpSlotJobData.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料 //httpSlotJobData.enableIOLoad = true;//上料交互方式 false:接口交互 true:光电交互 //httpSlotJobData.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料 //httpSlotJobData.enableIOUnload = true;//下料交互方式 false:接口交互 true:光电交互 //httpModel.jobData = httpSlotJobData; //string body = JsonConvert.SerializeObject(httpModel); //启用签名 //url = url + "?sign=" + MD5Deal(body); string data = HttpRequest(url, head, body).Replace("[", "").Replace("]", ""); var objData = JsonConvert.DeserializeObject(data); if (objData != null && objData is HttpResponseBodyModel response) { return response.code; } return "Analysis Error"; } /// /// AGV去2号线体装桶到炒锅2 /// /// public string AgvToLineTwoLoadRoller(string robotJobId) { string url = AGVRequestUrl.GetInstance.TaskSendUrl; //请求报文头 HttpRequestHeaderModel httpHeader = new HttpRequestHeaderModel(); httpHeader.appKey = config.AppSettings.Settings["appKey"].Value; ; httpHeader.appSecret = config.AppSettings.Settings["appSecret"].Value; httpHeader.requestId = ResquestIdGenerate(); httpHeader.timestamp = DateTime.Now.ToString(); httpHeader.version = config.AppSettings.Settings["version"].Value; string head = JsonConvert.SerializeObject(httpHeader); //请求报文体 AGVModel httpModel = new AGVModel(); httpModel.robotJobId = robotJobId;//上游提供 httpModel.warehouseId = long.Parse(config.AppSettings.Settings["warehouseId"].Value); //仓库编号 httpModel.jobPriority =Convert.ToInt32( config.AppSettings.Settings["jobPriority"].Value);//任务执行的优先级 httpModel.jobPriorityType = Convert.ToInt32(config.AppSettings.Settings["jobPriorityType"].Value); ;//0:根据优先级来执行,1:强制执行 httpModel.jobType = config.AppSettings.Settings["jobType"].Value; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE //详细任务数据 //点到点 AGV_PointRollerJobData httpJobData = new AGV_PointRollerJobData(); httpJobData.startPoint = config.AppSettings.Settings["LineTwoPoint"].Value;//起点点位 httpJobData.endPoint = config.AppSettings.Settings["FryPotTwoPoint"].Value; ;//目的点位 httpJobData.autoLoad = Convert.ToBoolean(config.AppSettings.Settings["autoLoad"].Value);//是否自动上料 true:自动上料 false:人工上料 httpJobData.enableIOLoad = Convert.ToBoolean(config.AppSettings.Settings["enableIOLoad"].Value); //上料交互方式 false:接口交互 true:光电交互 httpJobData.autoUnload = Convert.ToBoolean(config.AppSettings.Settings["autoUnload"].Value); //是否自动下料 true:自动下料 false:人工下料 httpJobData.enableIOUnload = Convert.ToBoolean(config.AppSettings.Settings["enableIOUnload"].Value); ;//下料交互方式 false:接口交互 true:光电交互 httpJobData.loadEquipmentId = 2; httpJobData.unloadEquipmentId = 6; httpModel.jobData = httpJobData; string body ="["+ JsonConvert.SerializeObject(httpModel)+"]"; //货位到货位 //AGV_SlotRollerJobData httpSlotJobData = new AGV_SlotRollerJobData(); //httpSlotJobData.startSlotCode = "";//起点槽位编号 //httpSlotJobData.endSlotCode = "";//目的槽位编号 //httpSlotJobData.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料 //httpSlotJobData.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互 //httpSlotJobData.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料 //httpSlotJobData.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互 //httpModel.jobData = httpSlotJobData; //string body = JsonConvert.SerializeObject(httpModel); //启用签名 //url = url + "?sign=" + MD5Deal(body); string data = HttpRequest(url, head, body).Replace("[", "").Replace("]", ""); object objData = JsonConvert.DeserializeObject(data); if (objData != null && objData is HttpResponseBodyModel response) { return response.code; } return "Analysis Error"; } /// /// AGV去2号线体装桶到炒锅5 /// /// public string AgvFromLineTwoToFryFiveLoadRoller(string robotJobId) { string url = AGVRequestUrl.GetInstance.TaskSendUrl; //请求报文头 HttpRequestHeaderModel httpHeader = new HttpRequestHeaderModel(); httpHeader.appKey = config.AppSettings.Settings["appKey"].Value; ; httpHeader.appSecret = config.AppSettings.Settings["appSecret"].Value; httpHeader.requestId = ResquestIdGenerate(); httpHeader.timestamp = DateTime.Now.ToString(); httpHeader.version = config.AppSettings.Settings["version"].Value; string head = JsonConvert.SerializeObject(httpHeader); //请求报文体 AGVModel httpModel = new AGVModel(); httpModel.robotJobId = robotJobId;//上游提供 httpModel.warehouseId = long.Parse(config.AppSettings.Settings["warehouseId"].Value); //仓库编号 httpModel.jobPriority = Convert.ToInt32(config.AppSettings.Settings["jobPriority"].Value);//任务执行的优先级 httpModel.jobPriorityType = Convert.ToInt32(config.AppSettings.Settings["jobPriorityType"].Value); ;//0:根据优先级来执行,1:强制执行 httpModel.jobType = config.AppSettings.Settings["jobType"].Value; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE //详细任务数据 //点到点 AGV_PointRollerJobData httpJobData = new AGV_PointRollerJobData(); httpJobData.startPoint = config.AppSettings.Settings["LineTwoPoint"].Value; ;//起点点位 httpJobData.endPoint = config.AppSettings.Settings["FryPotFivePoint"].Value; ;//目的点位 httpJobData.autoLoad = Convert.ToBoolean(config.AppSettings.Settings["autoLoad"].Value);//是否自动上料 true:自动上料 false:人工上料 httpJobData.enableIOLoad = Convert.ToBoolean(config.AppSettings.Settings["enableIOLoad"].Value); //上料交互方式 false:接口交互 true:光电交互 httpJobData.autoUnload = Convert.ToBoolean(config.AppSettings.Settings["autoUnload"].Value); //是否自动下料 true:自动下料 false:人工下料 httpJobData.enableIOUnload = Convert.ToBoolean(config.AppSettings.Settings["enableIOUnload"].Value); ;//下料交互方式 false:接口交互 true:光电交互 httpJobData.loadEquipmentId = 2; httpJobData.unloadEquipmentId = 9; httpModel.jobData = httpJobData; string body = "["+JsonConvert.SerializeObject(httpModel)+"]"; //货位到货位 //AGV_SlotRollerJobData httpSlotJobData = new AGV_SlotRollerJobData(); //httpSlotJobData.startSlotCode = "";//起点槽位编号 //httpSlotJobData.endSlotCode = "";//目的槽位编号 //httpSlotJobData.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料 //httpSlotJobData.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互 //httpSlotJobData.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料 //httpSlotJobData.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互 //httpModel.jobData = httpSlotJobData; //string body = JsonConvert.SerializeObject(httpModel); //启用签名 //url = url + "?sign=" + MD5Deal(body); string data = HttpRequest(url, head, body).Replace("[", "").Replace("]", ""); object objData = JsonConvert.DeserializeObject(data); if (objData != null && objData is HttpResponseBodyModel response) { return response.code; } return "Analysis Error"; } /// /// AGV去3号线体装桶 /// /// public string AgvToLineThreeLoadRoller(string robotJobId) { string url = AGVRequestUrl.GetInstance.TaskSendUrl; //请求报文头 HttpRequestHeaderModel httpHeader = new HttpRequestHeaderModel(); httpHeader.appKey = config.AppSettings.Settings["appKey"].Value; ; httpHeader.appSecret = config.AppSettings.Settings["appSecret"].Value; httpHeader.requestId = ResquestIdGenerate(); httpHeader.timestamp = DateTime.Now.ToString(); httpHeader.version = config.AppSettings.Settings["version"].Value; string head = JsonConvert.SerializeObject(httpHeader); //请求报文体 AGVModel httpModel = new AGVModel(); httpModel.robotJobId = robotJobId;//上游提供 httpModel.warehouseId = long.Parse(config.AppSettings.Settings["warehouseId"].Value); //仓库编号 httpModel.jobPriority = Convert.ToInt32(config.AppSettings.Settings["jobPriority"].Value);//任务执行的优先级 httpModel.jobPriorityType = Convert.ToInt32(config.AppSettings.Settings["jobPriorityType"].Value); ;//0:根据优先级来执行,1:强制执行 httpModel.jobType = config.AppSettings.Settings["jobType"].Value; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE //详细任务数据 //点到点 AGV_PointRollerJobData httpJobData = new AGV_PointRollerJobData(); httpJobData.startPoint = config.AppSettings.Settings["LineThreePoint"].Value;//起点点位 httpJobData.endPoint = config.AppSettings.Settings["FryPotThreePoint"].Value;//目的点位 httpJobData.autoLoad = Convert.ToBoolean(config.AppSettings.Settings["autoLoad"].Value);//是否自动上料 true:自动上料 false:人工上料 httpJobData.enableIOLoad = Convert.ToBoolean(config.AppSettings.Settings["enableIOLoad"].Value); //上料交互方式 false:接口交互 true:光电交互 httpJobData.autoUnload = Convert.ToBoolean(config.AppSettings.Settings["autoUnload"].Value); //是否自动下料 true:自动下料 false:人工下料 httpJobData.enableIOUnload = Convert.ToBoolean(config.AppSettings.Settings["enableIOUnload"].Value); ;//下料交互方式 false:接口交互 true:光电交互 httpJobData.loadEquipmentId = 3; httpJobData.unloadEquipmentId = 7; httpModel.jobData = httpJobData; string body = "["+JsonConvert.SerializeObject(httpModel)+"]"; //货位到货位 //AGV_SlotRollerJobData httpSlotJobData=new AGV_SlotRollerJobData(); //httpSlotJobData.startSlotCode = "";//起点槽位编号 //httpSlotJobData.endSlotCode = "";//目的槽位编号 //httpSlotJobData.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料 //httpSlotJobData.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互 //httpSlotJobData.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料 //httpSlotJobData.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互 //httpModel.jobData = httpSlotJobData; //string body = JsonConvert.SerializeObject(httpModel); //启用签名 //url = url + "?sign=" + MD5Deal(body); string data = HttpRequest(url, head, body).Replace("[","").Replace("]",""); object objData = JsonConvert.DeserializeObject(data); if (objData != null && objData is HttpResponseBodyModel response) { return response.code; } return "Analysis Error"; } /// /// AGV从清洗台到4号线体卸桶 /// /// public string AgvFromCleanToLineFourUnLoadRoller(string robotJobId) { string url = AGVRequestUrl.GetInstance.TaskSendUrl; //请求报文头 HttpRequestHeaderModel httpHeader = new HttpRequestHeaderModel(); httpHeader.appKey = config.AppSettings.Settings["appKey"].Value; ; httpHeader.appSecret = config.AppSettings.Settings["appSecret"].Value; httpHeader.requestId = ResquestIdGenerate(); httpHeader.timestamp = DateTime.Now.ToString(); httpHeader.version = config.AppSettings.Settings["version"].Value; string head = JsonConvert.SerializeObject(httpHeader); //请求报文体 AGVModel httpModel = new AGVModel(); httpModel.robotJobId = robotJobId;//上游提供 httpModel.warehouseId = long.Parse(config.AppSettings.Settings["warehouseId"].Value); //仓库编号 httpModel.jobPriority = Convert.ToInt32(config.AppSettings.Settings["jobPriority"].Value);//任务执行的优先级 httpModel.jobPriorityType = Convert.ToInt32(config.AppSettings.Settings["jobPriorityType"].Value); ;//0:根据优先级来执行,1:强制执行 httpModel.jobType = config.AppSettings.Settings["jobType"].Value; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE //详细任务数据 //点到点 AGV_PointRollerJobData httpJobData = new AGV_PointRollerJobData(); httpJobData.startPoint = config.AppSettings.Settings["CleanPoint"].Value; ;//起点点位 httpJobData.endPoint = config.AppSettings.Settings["LineFourPoint"].Value; ;//目的点位 httpJobData.autoLoad = Convert.ToBoolean(config.AppSettings.Settings["autoLoad"].Value);//是否自动上料 true:自动上料 false:人工上料 httpJobData.enableIOLoad = Convert.ToBoolean(config.AppSettings.Settings["enableIOLoad"].Value); //上料交互方式 false:接口交互 true:光电交互 httpJobData.autoUnload = Convert.ToBoolean(config.AppSettings.Settings["autoUnload"].Value); //是否自动下料 true:自动下料 false:人工下料 httpJobData.enableIOUnload = Convert.ToBoolean(config.AppSettings.Settings["enableIOUnload"].Value); ;//下料交互方式 false:接口交互 true:光电交互 httpJobData.loadEquipmentId = 10; httpJobData.unloadEquipmentId = 44; httpModel.jobData = httpJobData; string body ="["+ JsonConvert.SerializeObject(httpModel)+"]"; //货位到货位 //AGV_SlotRollerJobData httpSlotJobData = new AGV_SlotRollerJobData(); //httpSlotJobData.startSlotCode = "";//起点槽位编号 //httpSlotJobData.endSlotCode = "";//目的槽位编号 //httpSlotJobData.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料 //httpSlotJobData.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互 //httpSlotJobData.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料 //httpSlotJobData.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互 //httpModel.jobData = httpSlotJobData; //string body = JsonConvert.SerializeObject(httpModel); //启用签名 //url = url + "?sign=" + MD5Deal(body); string data = HttpRequest(url, head, body).Replace("[", "").Replace("]", ""); object objData = JsonConvert.DeserializeObject(data); if (objData != null && objData is HttpResponseBodyModel response) { return response.code; } return "Analysis Error"; } /// /// AGV离开炒锅1 /// /// public string AgvLeaveFryPotOne(string robotJobId) { string url = AGVRequestUrl.GetInstance.TaskSendUrl; //请求报文头 HttpRequestHeaderModel httpHeader = new HttpRequestHeaderModel(); httpHeader.appKey = config.AppSettings.Settings["appKey"].Value; ; httpHeader.appSecret = config.AppSettings.Settings["appSecret"].Value; httpHeader.requestId = ResquestIdGenerate(); httpHeader.timestamp = DateTime.Now.ToString(); httpHeader.version = config.AppSettings.Settings["version"].Value; string head = JsonConvert.SerializeObject(httpHeader); //请求报文体 AGVModel httpModel = new AGVModel(); httpModel.robotJobId = robotJobId;//上游提供 httpModel.warehouseId = long.Parse(config.AppSettings.Settings["warehouseId"].Value); //仓库编号 httpModel.jobPriority = Convert.ToInt32(config.AppSettings.Settings["jobPriority"].Value);//任务执行的优先级 httpModel.jobPriorityType = Convert.ToInt32(config.AppSettings.Settings["jobPriorityType"].Value); ;//0:根据优先级来执行,1:强制执行 httpModel.jobType = config.AppSettings.Settings["jobType"].Value; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE //详细任务数据 //点到点 AGV_PointRollerJobData httpJobData = new AGV_PointRollerJobData(); httpJobData.startPoint = config.AppSettings.Settings["FryPotOnePoint"].Value; ;//起点点位 httpJobData.endPoint = config.AppSettings.Settings["LineFourPoint"].Value; ;//目的点位 httpJobData.autoLoad = Convert.ToBoolean(config.AppSettings.Settings["autoLoad"].Value);//是否自动上料 true:自动上料 false:人工上料 httpJobData.enableIOLoad = Convert.ToBoolean(config.AppSettings.Settings["enableIOLoad"].Value); //上料交互方式 false:接口交互 true:光电交互 httpJobData.autoUnload = Convert.ToBoolean(config.AppSettings.Settings["autoUnload"].Value); //是否自动下料 true:自动下料 false:人工下料 httpJobData.enableIOUnload = Convert.ToBoolean(config.AppSettings.Settings["enableIOUnload"].Value); ;//下料交互方式 false:接口交互 true:光电交互 httpJobData.loadEquipmentId = 5; httpJobData.unloadEquipmentId = 4; httpModel.jobData = httpJobData; string body = "["+JsonConvert.SerializeObject(httpModel)+"]"; //货位到货位 //AGV_SlotRollerJobData httpSlotJobData = new AGV_SlotRollerJobData(); //httpSlotJobData.startSlotCode = "";//起点槽位编号 //httpSlotJobData.endSlotCode = "";//目的槽位编号 //httpSlotJobData.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料 //httpSlotJobData.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互 //httpSlotJobData.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料 //httpSlotJobData.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互 //httpModel.jobData = httpSlotJobData; //string body = JsonConvert.SerializeObject(httpModel); //启用签名 //url = url + "?sign=" + MD5Deal(body); string data = HttpRequest(url, head, body).Replace("[", "").Replace("]", ""); object objData = JsonConvert.DeserializeObject(data); if (objData != null && objData is HttpResponseBodyModel response) { return response.code; } return "Analysis Error"; } /// /// AGV离开炒锅2 /// /// public string AgvLeaveFryPotTwo(string robotJobId) { string url = AGVRequestUrl.GetInstance.TaskSendUrl; //请求报文头 HttpRequestHeaderModel httpHeader = new HttpRequestHeaderModel(); httpHeader.appKey = config.AppSettings.Settings["appKey"].Value; ; httpHeader.appSecret = config.AppSettings.Settings["appSecret"].Value; httpHeader.requestId = ResquestIdGenerate(); httpHeader.timestamp = DateTime.Now.ToString(); httpHeader.version = config.AppSettings.Settings["version"].Value; string head = JsonConvert.SerializeObject(httpHeader); //请求报文体 AGVModel httpModel = new AGVModel(); httpModel.robotJobId = robotJobId;//上游提供 httpModel.warehouseId = long.Parse(config.AppSettings.Settings["warehouseId"].Value); //仓库编号 httpModel.jobPriority = Convert.ToInt32(config.AppSettings.Settings["jobPriority"].Value);//任务执行的优先级 httpModel.jobPriorityType = Convert.ToInt32(config.AppSettings.Settings["jobPriorityType"].Value); ;//0:根据优先级来执行,1:强制执行 httpModel.jobType = config.AppSettings.Settings["jobType"].Value; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE //详细任务数据 //点到点 AGV_PointRollerJobData httpJobData = new AGV_PointRollerJobData(); httpJobData.startPoint = config.AppSettings.Settings["FryPotTwoPoint"].Value; //起点点位 httpJobData.endPoint = config.AppSettings.Settings["LineFourPoint"].Value;//目的点位 httpJobData.autoLoad = Convert.ToBoolean(config.AppSettings.Settings["autoLoad"].Value);//是否自动上料 true:自动上料 false:人工上料 httpJobData.enableIOLoad = Convert.ToBoolean(config.AppSettings.Settings["enableIOLoad"].Value); //上料交互方式 false:接口交互 true:光电交互 httpJobData.autoUnload = Convert.ToBoolean(config.AppSettings.Settings["autoUnload"].Value); //是否自动下料 true:自动下料 false:人工下料 httpJobData.enableIOUnload = Convert.ToBoolean(config.AppSettings.Settings["enableIOUnload"].Value); ;//下料交互方式 false:接口交互 true:光电交互 httpJobData.loadEquipmentId = 6; httpJobData.unloadEquipmentId = 4; httpModel.jobData = httpJobData; string body ="["+ JsonConvert.SerializeObject(httpModel)+"]"; //货位到货位 //AGV_SlotRollerJobData httpSlotJobData = new AGV_SlotRollerJobData(); //httpSlotJobData.startSlotCode = "";//起点槽位编号 //httpSlotJobData.endSlotCode = "";//目的槽位编号 //httpSlotJobData.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料 //httpSlotJobData.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互 //httpSlotJobData.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料 //httpSlotJobData.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互 //httpModel.jobData = httpSlotJobData; //string body = JsonConvert.SerializeObject(httpModel); //启用签名 //url = url + "?sign=" + MD5Deal(body); string data = HttpRequest(url, head, body).Replace("[", "").Replace("]", ""); object objData = JsonConvert.DeserializeObject(data); if (objData != null && objData is HttpResponseBodyModel response) { return response.code; } return "Analysis Error"; } /// /// AGV离开炒锅3 /// /// public string AgvLeaveFryPotThree(string robotJobId) { string url = AGVRequestUrl.GetInstance.TaskSendUrl; //请求报文头 HttpRequestHeaderModel httpHeader = new HttpRequestHeaderModel(); httpHeader.appKey = config.AppSettings.Settings["appKey"].Value; ; httpHeader.appSecret = config.AppSettings.Settings["appSecret"].Value; httpHeader.requestId = ResquestIdGenerate(); httpHeader.timestamp = DateTime.Now.ToString(); httpHeader.version = config.AppSettings.Settings["version"].Value; string head = JsonConvert.SerializeObject(httpHeader); //请求报文体 AGVModel httpModel = new AGVModel(); httpModel.robotJobId = robotJobId;//上游提供 httpModel.warehouseId = long.Parse(config.AppSettings.Settings["warehouseId"].Value); //仓库编号 httpModel.jobPriority = Convert.ToInt32(config.AppSettings.Settings["jobPriority"].Value);//任务执行的优先级 httpModel.jobPriorityType = Convert.ToInt32(config.AppSettings.Settings["jobPriorityType"].Value); ;//0:根据优先级来执行,1:强制执行 httpModel.jobType = config.AppSettings.Settings["jobType"].Value; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE //详细任务数据 //点到点 AGV_PointRollerJobData httpJobData = new AGV_PointRollerJobData(); httpJobData.startPoint = config.AppSettings.Settings["FryPotThreePoint"].Value;//起点点位 httpJobData.endPoint = config.AppSettings.Settings["LineFourPoint"].Value;//目的点位 httpJobData.autoLoad = Convert.ToBoolean(config.AppSettings.Settings["autoLoad"].Value);//是否自动上料 true:自动上料 false:人工上料 httpJobData.enableIOLoad = Convert.ToBoolean(config.AppSettings.Settings["enableIOLoad"].Value); //上料交互方式 false:接口交互 true:光电交互 httpJobData.autoUnload = Convert.ToBoolean(config.AppSettings.Settings["autoUnload"].Value); //是否自动下料 true:自动下料 false:人工下料 httpJobData.enableIOUnload = Convert.ToBoolean(config.AppSettings.Settings["enableIOUnload"].Value); ;//下料交互方式 false:接口交互 true:光电交互 httpJobData.loadEquipmentId = 7; httpJobData.unloadEquipmentId = 4; httpModel.jobData = httpJobData; string body ="["+ JsonConvert.SerializeObject(httpModel)+"]"; //货位到货位 //AGV_SlotRollerJobData httpSlotJobData = new AGV_SlotRollerJobData(); //httpSlotJobData.startSlotCode = "";//起点槽位编号 //httpSlotJobData.endSlotCode = "";//目的槽位编号 //httpSlotJobData.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料 //httpSlotJobData.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互 //httpSlotJobData.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料 //httpSlotJobData.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互 //httpModel.jobData = httpSlotJobData; //string body = JsonConvert.SerializeObject(httpModel); //启用签名 //url = url + "?sign=" + MD5Deal(body); string data = HttpRequest(url, head, body).Replace("[", "").Replace("]", ""); object objData = JsonConvert.DeserializeObject(data); if (objData != null && objData is HttpResponseBodyModel response) { return response.code; } return "Analysis Error"; } /// /// AGV离开炒锅4 /// /// public string AgvLeaveFryPotFour(string robotJobId) { string url = AGVRequestUrl.GetInstance.TaskSendUrl; //请求报文头 HttpRequestHeaderModel httpHeader = new HttpRequestHeaderModel(); httpHeader.appKey = config.AppSettings.Settings["appKey"].Value; ; httpHeader.appSecret = config.AppSettings.Settings["appSecret"].Value; httpHeader.requestId = ResquestIdGenerate(); httpHeader.timestamp = DateTime.Now.ToString(); httpHeader.version = config.AppSettings.Settings["version"].Value; string head = JsonConvert.SerializeObject(httpHeader); //请求报文体 AGVModel httpModel = new AGVModel(); httpModel.robotJobId = robotJobId;//上游提供 httpModel.warehouseId = long.Parse(config.AppSettings.Settings["warehouseId"].Value); //仓库编号 httpModel.jobPriority = Convert.ToInt32(config.AppSettings.Settings["jobPriority"].Value);//任务执行的优先级 httpModel.jobPriorityType = Convert.ToInt32(config.AppSettings.Settings["jobPriorityType"].Value); ;//0:根据优先级来执行,1:强制执行 httpModel.jobType = config.AppSettings.Settings["jobType"].Value; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE //详细任务数据 //点到点 AGV_PointRollerJobData httpJobData = new AGV_PointRollerJobData(); httpJobData.startPoint = config.AppSettings.Settings["FryPotFourPoint"].Value;//起点点位 httpJobData.endPoint = config.AppSettings.Settings["LineFourPoint"].Value;//目的点位 httpJobData.autoLoad = Convert.ToBoolean(config.AppSettings.Settings["autoLoad"].Value);//是否自动上料 true:自动上料 false:人工上料 httpJobData.enableIOLoad = Convert.ToBoolean(config.AppSettings.Settings["enableIOLoad"].Value); //上料交互方式 false:接口交互 true:光电交互 httpJobData.autoUnload = Convert.ToBoolean(config.AppSettings.Settings["autoUnload"].Value); //是否自动下料 true:自动下料 false:人工下料 httpJobData.enableIOUnload = Convert.ToBoolean(config.AppSettings.Settings["enableIOUnload"].Value); ;//下料交互方式 false:接口交互 true:光电交互 httpJobData.loadEquipmentId = 8; httpJobData.unloadEquipmentId = 4; httpModel.jobData = httpJobData; string body = "["+JsonConvert.SerializeObject(httpModel)+"]"; //货位到货位 //AGV_SlotRollerJobData httpSlotJobData = new AGV_SlotRollerJobData(); //httpSlotJobData.startSlotCode = "";//起点槽位编号 //httpSlotJobData.endSlotCode = "";//目的槽位编号 //httpSlotJobData.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料 //httpSlotJobData.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互 //httpSlotJobData.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料 //httpSlotJobData.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互 //httpModel.jobData = httpSlotJobData; //string body = JsonConvert.SerializeObject(httpModel); //启用签名 //url = url + "?sign=" + MD5Deal(body); string data = HttpRequest(url, head, body).Replace("[", "").Replace("]", ""); object objData = JsonConvert.DeserializeObject(data); if (objData != null && objData is HttpResponseBodyModel response) { return response.code; } return "Analysis Error"; } /// /// AGV离开炒锅5 /// /// public string AgvLeaveFryPotFive(string robotJobId) { string url = AGVRequestUrl.GetInstance.TaskSendUrl; //请求报文头 HttpRequestHeaderModel httpHeader = new HttpRequestHeaderModel(); httpHeader.appKey = config.AppSettings.Settings["appKey"].Value; ; httpHeader.appSecret = config.AppSettings.Settings["appSecret"].Value; httpHeader.requestId = ResquestIdGenerate(); httpHeader.timestamp = DateTime.Now.ToString(); httpHeader.version = config.AppSettings.Settings["version"].Value; string head = JsonConvert.SerializeObject(httpHeader); //请求报文体 AGVModel httpModel = new AGVModel(); httpModel.robotJobId = robotJobId;//上游提供 httpModel.warehouseId = long.Parse(config.AppSettings.Settings["warehouseId"].Value); //仓库编号 httpModel.jobPriority = Convert.ToInt32(config.AppSettings.Settings["jobPriority"].Value);//任务执行的优先级 httpModel.jobPriorityType = Convert.ToInt32(config.AppSettings.Settings["jobPriorityType"].Value); ;//0:根据优先级来执行,1:强制执行 httpModel.jobType = config.AppSettings.Settings["jobType"].Value; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE //详细任务数据 //点到点 AGV_PointRollerJobData httpJobData = new AGV_PointRollerJobData(); httpJobData.startPoint = config.AppSettings.Settings["FryPotFivePoint"].Value;//起点点位 httpJobData.endPoint = config.AppSettings.Settings["LineFourPoint"].Value;//目的点位 httpJobData.autoLoad = Convert.ToBoolean(config.AppSettings.Settings["autoLoad"].Value);//是否自动上料 true:自动上料 false:人工上料 httpJobData.enableIOLoad = Convert.ToBoolean(config.AppSettings.Settings["enableIOLoad"].Value); //上料交互方式 false:接口交互 true:光电交互 httpJobData.autoUnload = Convert.ToBoolean(config.AppSettings.Settings["autoUnload"].Value); //是否自动下料 true:自动下料 false:人工下料 httpJobData.enableIOUnload = Convert.ToBoolean(config.AppSettings.Settings["enableIOUnload"].Value); ;//下料交互方式 false:接口交互 true:光电交互 httpJobData.loadEquipmentId = 9; httpJobData.unloadEquipmentId = 4; httpModel.jobData = httpJobData; string body = "["+JsonConvert.SerializeObject(httpModel)+"]"; //货位到货位 //AGV_SlotRollerJobData httpSlotJobData = new AGV_SlotRollerJobData(); //httpSlotJobData.startSlotCode = "";//起点槽位编号 //httpSlotJobData.endSlotCode = "";//目的槽位编号 //httpSlotJobData.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料 //httpSlotJobData.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互 //httpSlotJobData.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料 //httpSlotJobData.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互 //httpModel.jobData = httpSlotJobData; //string body = JsonConvert.SerializeObject(httpModel); //启用签名 //url = url + "?sign=" + MD5Deal(body); string data = HttpRequest(url, head, body).Replace("[", "").Replace("]", ""); object objData = JsonConvert.DeserializeObject(data); if (objData != null && objData is HttpResponseBodyModel response) { return response.code; } return "Analysis Error"; } /// /// AGV从1号线运空桶洗桶 /// /// public string AgvLeaveLOneToClean(string robotJobId) { string url = AGVRequestUrl.GetInstance.TaskSendUrl; //请求报文头 HttpRequestHeaderModel httpHeader = new HttpRequestHeaderModel(); httpHeader.appKey = config.AppSettings.Settings["appKey"].Value; ; httpHeader.appSecret = config.AppSettings.Settings["appSecret"].Value; httpHeader.requestId = ResquestIdGenerate(); httpHeader.timestamp = DateTime.Now.ToString(); httpHeader.version = config.AppSettings.Settings["version"].Value; string head = JsonConvert.SerializeObject(httpHeader); //请求报文体 AGVModel httpModel = new AGVModel(); httpModel.robotJobId = robotJobId;//上游提供 httpModel.warehouseId = long.Parse(config.AppSettings.Settings["warehouseId"].Value); //仓库编号 httpModel.jobPriority = Convert.ToInt32(config.AppSettings.Settings["jobPriority"].Value);//任务执行的优先级 httpModel.jobPriorityType = Convert.ToInt32(config.AppSettings.Settings["jobPriorityType"].Value); ;//0:根据优先级来执行,1:强制执行 httpModel.jobType = config.AppSettings.Settings["jobType"].Value; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE //详细任务数据 //点到点 AGV_PointRollerJobData httpJobData = new AGV_PointRollerJobData(); httpJobData.startPoint = config.AppSettings.Settings["LineOnePoint"].Value; //起点点位 httpJobData.endPoint = config.AppSettings.Settings["CleanPoint"].Value; //目的点位 httpJobData.autoLoad = Convert.ToBoolean(config.AppSettings.Settings["autoLoad"].Value);//是否自动上料 true:自动上料 false:人工上料 httpJobData.enableIOLoad = Convert.ToBoolean(config.AppSettings.Settings["enableIOLoad"].Value); //上料交互方式 false:接口交互 true:光电交互 httpJobData.autoUnload = Convert.ToBoolean(config.AppSettings.Settings["autoUnload"].Value); //是否自动下料 true:自动下料 false:人工下料 httpJobData.enableIOUnload = Convert.ToBoolean(config.AppSettings.Settings["enableIOUnload"].Value); ;//下料交互方式 false:接口交互 true:光电交互 httpJobData.loadEquipmentId = 11; httpJobData.unloadEquipmentId = 10; httpModel.jobData = httpJobData; string body = "["+JsonConvert.SerializeObject(httpModel)+"]"; //货位到货位 //AGV_SlotRollerJobData httpSlotJobData = new AGV_SlotRollerJobData(); //httpSlotJobData.startSlotCode = "";//起点槽位编号 //httpSlotJobData.endSlotCode = "";//目的槽位编号 //httpSlotJobData.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料 //httpSlotJobData.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互 //httpSlotJobData.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料 //httpSlotJobData.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互 //httpModel.jobData = httpSlotJobData; //string body = JsonConvert.SerializeObject(httpModel); //启用签名 //url = url + "?sign=" + MD5Deal(body); string data = HttpRequest(url, head, body).Replace("[", "").Replace("]", ""); object objData = JsonConvert.DeserializeObject(data); if (objData != null && objData is HttpResponseBodyModel response) { return response.code; } return "Analysis Error"; } /// /// AGV从2号线运空桶洗桶 /// /// public string AgvLeaveLTwoToClean(string robotJobId) { string url = AGVRequestUrl.GetInstance.TaskSendUrl; //请求报文头 HttpRequestHeaderModel httpHeader = new HttpRequestHeaderModel(); httpHeader.appKey = config.AppSettings.Settings["appKey"].Value; ; httpHeader.appSecret = config.AppSettings.Settings["appSecret"].Value; httpHeader.requestId = ResquestIdGenerate(); httpHeader.timestamp = DateTime.Now.ToString(); httpHeader.version = config.AppSettings.Settings["version"].Value; string head = JsonConvert.SerializeObject(httpHeader); //请求报文体 AGVModel httpModel = new AGVModel(); httpModel.robotJobId = robotJobId;//上游提供 httpModel.warehouseId = long.Parse(config.AppSettings.Settings["warehouseId"].Value); //仓库编号 httpModel.jobPriority = Convert.ToInt32(config.AppSettings.Settings["jobPriority"].Value);//任务执行的优先级 httpModel.jobPriorityType = Convert.ToInt32(config.AppSettings.Settings["jobPriorityType"].Value); ;//0:根据优先级来执行,1:强制执行 httpModel.jobType = config.AppSettings.Settings["jobType"].Value; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE //详细任务数据 //点到点 AGV_PointRollerJobData httpJobData = new AGV_PointRollerJobData(); httpJobData.startPoint = config.AppSettings.Settings["LineTwoPoint"].Value; //起点点位 httpJobData.endPoint = config.AppSettings.Settings["CleanPoint"].Value; //目的点位 httpJobData.autoLoad = Convert.ToBoolean(config.AppSettings.Settings["autoLoad"].Value);//是否自动上料 true:自动上料 false:人工上料 httpJobData.enableIOLoad = Convert.ToBoolean(config.AppSettings.Settings["enableIOLoad"].Value); //上料交互方式 false:接口交互 true:光电交互 httpJobData.autoUnload = Convert.ToBoolean(config.AppSettings.Settings["autoUnload"].Value); //是否自动下料 true:自动下料 false:人工下料 httpJobData.enableIOUnload = Convert.ToBoolean(config.AppSettings.Settings["enableIOUnload"].Value); ;//下料交互方式 false:接口交互 true:光电交互 httpJobData.loadEquipmentId = 22; httpJobData.unloadEquipmentId = 20; httpModel.jobData = httpJobData; string body ="["+ JsonConvert.SerializeObject(httpModel)+"]"; //货位到货位 //AGV_SlotRollerJobData httpSlotJobData = new AGV_SlotRollerJobData(); //httpSlotJobData.startSlotCode = "";//起点槽位编号 //httpSlotJobData.endSlotCode = "";//目的槽位编号 //httpSlotJobData.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料 //httpSlotJobData.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互 //httpSlotJobData.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料 //httpSlotJobData.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互 //httpModel.jobData = httpSlotJobData; //string body = JsonConvert.SerializeObject(httpModel); //启用签名 //url = url + "?sign=" + MD5Deal(body); string data = HttpRequest(url, head, body).Replace("[", "").Replace("]", ""); object objData = JsonConvert.DeserializeObject(data); if (objData != null && objData is HttpResponseBodyModel response) { return response.code; } return "Analysis Error"; } /// /// AGV从3号线运空桶洗桶 /// /// public string AgvLeaveLThreeToClean(string robotJobId) { string url = AGVRequestUrl.GetInstance.TaskSendUrl; //请求报文头 HttpRequestHeaderModel httpHeader = new HttpRequestHeaderModel(); httpHeader.appKey = config.AppSettings.Settings["appKey"].Value; ; httpHeader.appSecret = config.AppSettings.Settings["appSecret"].Value; httpHeader.requestId = ResquestIdGenerate(); httpHeader.timestamp = DateTime.Now.ToString(); httpHeader.version = config.AppSettings.Settings["version"].Value; string head = JsonConvert.SerializeObject(httpHeader); //请求报文体 AGVModel httpModel = new AGVModel(); httpModel.robotJobId = robotJobId;//上游提供 httpModel.warehouseId = long.Parse(config.AppSettings.Settings["warehouseId"].Value); //仓库编号 httpModel.jobPriority = Convert.ToInt32(config.AppSettings.Settings["jobPriority"].Value);//任务执行的优先级 httpModel.jobPriorityType = Convert.ToInt32(config.AppSettings.Settings["jobPriorityType"].Value); ;//0:根据优先级来执行,1:强制执行 httpModel.jobType = config.AppSettings.Settings["jobType"].Value; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE //详细任务数据 //点到点 AGV_PointRollerJobData httpJobData = new AGV_PointRollerJobData(); httpJobData.startPoint = config.AppSettings.Settings["LineThreePoint"].Value; //起点点位 httpJobData.endPoint = config.AppSettings.Settings["CleanPoint"].Value; //目的点位 httpJobData.autoLoad = Convert.ToBoolean(config.AppSettings.Settings["autoLoad"].Value);//是否自动上料 true:自动上料 false:人工上料 httpJobData.enableIOLoad = Convert.ToBoolean(config.AppSettings.Settings["enableIOLoad"].Value); //上料交互方式 false:接口交互 true:光电交互 httpJobData.autoUnload = Convert.ToBoolean(config.AppSettings.Settings["autoUnload"].Value); //是否自动下料 true:自动下料 false:人工下料 httpJobData.enableIOUnload = Convert.ToBoolean(config.AppSettings.Settings["enableIOUnload"].Value); ;//下料交互方式 false:接口交互 true:光电交互 httpJobData.loadEquipmentId = 33; httpJobData.unloadEquipmentId = 30; httpModel.jobData = httpJobData; string body ="["+ JsonConvert.SerializeObject(httpModel)+"]"; //货位到货位 //AGV_SlotRollerJobData httpSlotJobData = new AGV_SlotRollerJobData(); //httpSlotJobData.startSlotCode = "";//起点槽位编号 //httpSlotJobData.endSlotCode = "";//目的槽位编号 //httpSlotJobData.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料 //httpSlotJobData.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互 //httpSlotJobData.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料 //httpSlotJobData.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互 //httpModel.jobData = httpSlotJobData; //string body = JsonConvert.SerializeObject(httpModel); //启用签名 //url = url + "?sign=" + MD5Deal(body); string data = HttpRequest(url, head, body).Replace("[", "").Replace("]", ""); object objData = JsonConvert.DeserializeObject(data); if (objData != null && objData is HttpResponseBodyModel response) { return response.code; } return "Analysis Error"; } /// /// AGV从洗桶处运桶到4号洗桶线 /// /// public string AgvLeaveCleanToLFour(string robotJobId) { string url = AGVRequestUrl.GetInstance.TaskSendUrl; //请求报文头 HttpRequestHeaderModel httpHeader = new HttpRequestHeaderModel(); httpHeader.appKey = config.AppSettings.Settings["appKey"].Value; httpHeader.appSecret = config.AppSettings.Settings["appSecret"].Value; httpHeader.requestId = ResquestIdGenerate(); httpHeader.timestamp = DateTime.Now.ToString(); httpHeader.version = config.AppSettings.Settings["version"].Value; string head = JsonConvert.SerializeObject(httpHeader); //请求报文体 AGVModel httpModel = new AGVModel(); httpModel.robotJobId = robotJobId;//上游提供 httpModel.warehouseId = long.Parse(config.AppSettings.Settings["warehouseId"].Value); //仓库编号 httpModel.jobPriority = Convert.ToInt32(config.AppSettings.Settings["jobPriority"].Value);//任务执行的优先级 httpModel.jobPriorityType = Convert.ToInt32(config.AppSettings.Settings["jobPriorityType"].Value); ;//0:根据优先级来执行,1:强制执行 httpModel.jobType = config.AppSettings.Settings["jobType"].Value; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE //详细任务数据 //点到点 AGV_PointRollerJobData httpJobData = new AGV_PointRollerJobData(); httpJobData.startPoint = config.AppSettings.Settings["CleanPoint"].Value; //起点点位 httpJobData.endPoint = config.AppSettings.Settings["LineFourPoint"].Value; //目的点位 httpJobData.autoLoad = Convert.ToBoolean(config.AppSettings.Settings["autoLoad"].Value);//是否自动上料 true:自动上料 false:人工上料 httpJobData.enableIOLoad = Convert.ToBoolean(config.AppSettings.Settings["enableIOLoad"].Value); //上料交互方式 false:接口交互 true:光电交互 httpJobData.autoUnload = Convert.ToBoolean(config.AppSettings.Settings["autoUnload"].Value); //是否自动下料 true:自动下料 false:人工下料 httpJobData.enableIOUnload = Convert.ToBoolean(config.AppSettings.Settings["enableIOUnload"].Value); ;//下料交互方式 false:接口交互 true:光电交互 httpJobData.loadEquipmentId = 10; httpJobData.unloadEquipmentId = 44; httpModel.jobData = httpJobData; string body = "["+JsonConvert.SerializeObject(httpModel)+"]"; //货位到货位 //AGV_SlotRollerJobData httpSlotJobData = new AGV_SlotRollerJobData(); //httpSlotJobData.startSlotCode = "";//起点槽位编号 //httpSlotJobData.endSlotCode = "";//目的槽位编号 //httpSlotJobData.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料 //httpSlotJobData.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互 //httpSlotJobData.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料 //httpSlotJobData.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互 //httpModel.jobData = httpSlotJobData; //string body = JsonConvert.SerializeObject(httpModel); //启用签名 //url = url + "?sign=" + MD5Deal(body); string data = HttpRequest(url, head, body).Replace("[", "").Replace("]", ""); object objData = JsonConvert.DeserializeObject(data); if (objData != null && objData is HttpResponseBodyModel response) { return response.code; } return "Analysis Error"; } ///// ///// 任务取消 ///// ///// 上游系统任务号,全局唯一 //public string CancelJobTask(string robotJobId) //{ // string url = AGVRequestUrl.GetInstance.TaskCancelUrl; // //请求报文头 // HttpRequestHeaderModel httpHeader = new HttpRequestHeaderModel(); // httpHeader.appKey = config.AppSettings.Settings["appKey"].Value; // httpHeader.appSecret = config.AppSettings.Settings["appSecret"].Value; // httpHeader.requestId = ResquestIdGenerate(); // httpHeader.timestamp = DateTime.Now.ToString(); // httpHeader.version = config.AppSettings.Settings["version"].Value; // string head = JsonConvert.SerializeObject(httpHeader); // //请求报文体 // AGVTaskCancelModel cancel = new AGVTaskCancelModel(); // cancel.robotJobId = robotJobId; // cancel.warehouseId = long.Parse(config.AppSettings.Settings["warehouseId"].Value);//仓库编号 // string body = JsonConvert.SerializeObject(cancel); // //启用签名 // //url = url + "?sign=" + MD5Deal(body); // string data = HttpRequest(url, head, body); // object objData = JsonConvert.DeserializeObject(data); // if (objData != null && objData is HttpResponseBodyModel response) // { // return response.code; // } // return "Analysis Error"; //} /// /// 实操任务完成通知 /// /// public string TaskCompleteNotify(string robotJobId) { string url = AGVRequestUrl.GetInstance.TaskCompleteUrl; //请求报文头 HttpRequestHeaderModel httpHeader = new HttpRequestHeaderModel(); httpHeader.appKey = config.AppSettings.Settings["appKey"].Value; httpHeader.appSecret = config.AppSettings.Settings["appSecret"].Value; httpHeader.requestId = ResquestIdGenerate(); httpHeader.timestamp = DateTime.Now.ToString(); httpHeader.version = config.AppSettings.Settings["version"].Value; string head = JsonConvert.SerializeObject(httpHeader); //请求报文体 AGVTaskCompleteNotifyModel notify = new AGVTaskCompleteNotifyModel(); notify.robotJobId = robotJobId; notify.warehouseId = long.Parse(config.AppSettings.Settings["warehouseId"].Value);//仓库编号 string body = JsonConvert.SerializeObject(notify); //启用签名 //url = url + "?sign=" + MD5Deal(body); string data = HttpRequest(url, head, body).Replace("[", "").Replace("]", ""); object objData = JsonConvert.DeserializeObject(data); if (objData != null && objData is HttpResponseBodyModel response) { return response.code; } return "Analysis Error"; } /// /// AGV上下料交互反馈 /// /// AGV编号 /// 任务编号 /// 消息编号 /// public string UpDownFeedBack(string agvCode, string jobId, string msgId,bool complete=true) { string url = AGVRequestUrl.GetInstance.AGVInteracteUrl; //请求报文头 HttpRequestHeaderModel httpHeader = new HttpRequestHeaderModel(); httpHeader.appKey = config.AppSettings.Settings["appKey"].Value; httpHeader.appSecret = config.AppSettings.Settings["appSecret"].Value; httpHeader.requestId = ResquestIdGenerate(); httpHeader.timestamp = DateTime.Now.ToString(); httpHeader.version = config.AppSettings.Settings["version"].Value; string head = JsonConvert.SerializeObject(httpHeader); //请求报文体 AGVLoadInteracteModel load = new AGVLoadInteracteModel(); load.agvCode = agvCode; load.jobId = jobId; load.msgId = msgId; load.complete = true; string body = JsonConvert.SerializeObject(load); //启用签名 //url = url + "?sign=" + MD5Deal(body); string data = HttpRequest(url, head, body); object objData = JsonConvert.DeserializeObject(data); if (objData != null && objData is HttpResponseBodyModel response) { return response.code; } return "Analysis Error"; } } }