diff --git a/BPASmartClient.AGV/AGVHelper.cs b/BPASmartClient.AGV/AGVHelper.cs
index b26f8923..cf6204c5 100644
--- a/BPASmartClient.AGV/AGVHelper.cs
+++ b/BPASmartClient.AGV/AGVHelper.cs
@@ -7,7 +7,7 @@ using System.Net;
using System.Web;
using Newtonsoft.Json;
using System.Net.Http;
-
+using System.Configuration;
namespace BPASmartClient.AGV
{
@@ -20,7 +20,24 @@ namespace BPASmartClient.AGV
{
}
-
+ ///
+ /// 获取配置文件信息
+ ///
+ ///
+ ///
+ public string GetAppSettingValue(string strKey)
+ {
+ string file = System.Environment.CurrentDirectory;
+ Configuration config = ConfigurationManager.OpenExeConfiguration(file);
+ foreach (string key in config.AppSettings.Settings.AllKeys)
+ {
+ if (key == strKey)
+ {
+ return config.AppSettings.Settings[strKey].Value.ToString();
+ }
+ }
+ return null;
+ }
public string HttpRequest(string url, string head, string body)
{
return PostData(url, head, body);
@@ -57,89 +74,460 @@ namespace BPASmartClient.AGV
/// AGV去1号线体装桶
///
///
- public string AgvToLineOneLoadRoller()
+ public string AgvToLineOneLoadRoller(string robotJobId)
{
- string url = "";
- string head = "";
- string body = "";
- return HttpRequest(url,head,body);
+ string url = AGVRequestUrl.GetInstance.TaskSendUrl;
+ //请求报文头
+ HttpRequestHeaderModel.GetInstance.appKey = "";
+ HttpRequestHeaderModel.GetInstance.appSecret = "";
+ HttpRequestHeaderModel.GetInstance.requestId = "";
+ HttpRequestHeaderModel.GetInstance.timestamp = "";
+ HttpRequestHeaderModel.GetInstance.version = "2.8";
+ string head = JsonConvert.SerializeObject(HttpRequestHeaderModel.GetInstance);
+ //请求报文体
+ AGVModel.GetInstance.robotJobId =robotJobId ;//上游提供
+ AGVModel.GetInstance.warehouseId = 123; //仓库编号
+ AGVModel.GetInstance.jobPriority = 1;//任务执行的优先级
+ AGVModel.GetInstance.jobPriorityType = 1;//0:根据优先级来执行,1:强制执行
+ AGVModel.GetInstance.jobType = "POINT_ROLLER_MOVE"; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE
+ //详细任务数据
+ //点到点
+ AGV_PointRollerJobData.GetInstance.startPoint = "";//起点点位
+ AGV_PointRollerJobData.GetInstance.endPoint = "";//目的点位
+ AGV_PointRollerJobData.GetInstance.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料
+ AGV_PointRollerJobData.GetInstance.enableIOLoad = true;//上料交互方式 false:接口交互 true:光电交互
+ AGV_PointRollerJobData.GetInstance.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料
+ AGV_PointRollerJobData.GetInstance.enableIOUnload = true;//下料交互方式 false:接口交互 true:光电交互
+ AGVModel.GetInstance.jobData = AGV_PointRollerJobData.GetInstance;
+ string body = JsonConvert.SerializeObject(AGVModel.GetInstance);
+ // string newBody = String.Join(",\r\n", bodyData.Split(','));//格式处理,看需求
+ //货位到货位
+ //AGV_SlotRollerJobData.GetInstance.startSlotCode = "";//起点槽位编号
+ //AGV_SlotRollerJobData.GetInstance.endSlotCode = "";//目的槽位编号
+ //AGV_SlotRollerJobData.GetInstance.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料
+ //AGV_SlotRollerJobData.GetInstance.enableIOLoad = true;//上料交互方式 false:接口交互 true:光电交互
+ //AGV_SlotRollerJobData.GetInstance.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料
+ //AGV_SlotRollerJobData.GetInstance.enableIOUnload = true;//下料交互方式 false:接口交互 true:光电交互
+ //AGVModel.GetInstance.jobData = AGV_SlotRollerJobData.GetInstance;
+ //string body = JsonConvert.SerializeObject(AGVModel.GetInstance);
+ string data = HttpRequest(url, head, body);
+ object objData = JsonConvert.DeserializeObject(data);
+ if (objData != null && objData is HttpResponseModel response)
+ {
+ return response.Body?.code;
+ }
+ return "Analysis Error";
}
///
/// AGV去2号线体装桶
///
///
- public string AgvToLineTwoLoadRoller()
+ public string AgvToLineTwoLoadRoller(string robotJobId)
{
- string url = "";
- string head = "";
- string body = "";
- return HttpRequest(url, head, body);
+ string url = AGVRequestUrl.GetInstance.TaskSendUrl;
+ //请求报文头
+ HttpRequestHeaderModel.GetInstance.appKey = "";
+ HttpRequestHeaderModel.GetInstance.appSecret = "";
+ HttpRequestHeaderModel.GetInstance.requestId = "";
+ HttpRequestHeaderModel.GetInstance.timestamp = "";
+ HttpRequestHeaderModel.GetInstance.version = "2.8";
+ string head = JsonConvert.SerializeObject(HttpRequestHeaderModel.GetInstance);
+ //请求报文体
+ AGVModel.GetInstance.robotJobId = robotJobId;//上游提供
+ AGVModel.GetInstance.warehouseId = 123; //仓库编号
+ AGVModel.GetInstance.jobPriority = 1;//任务执行的优先级
+ AGVModel.GetInstance.jobPriorityType = 1;//0:根据优先级来执行,1:强制执行
+ AGVModel.GetInstance.jobType = "POINT_ROLLER_MOVE"; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE
+ //详细任务数据
+ //点到点
+ AGV_PointRollerJobData.GetInstance.startPoint = "";//起点点位
+ AGV_PointRollerJobData.GetInstance.endPoint = "";//目的点位
+ AGV_PointRollerJobData.GetInstance.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料
+ AGV_PointRollerJobData.GetInstance.enableIOLoad = true;//上料交互方式 false:接口交互 true:光电交互
+ AGV_PointRollerJobData.GetInstance.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料
+ AGV_PointRollerJobData.GetInstance.enableIOUnload = true;//下料交互方式 false:接口交互 true:光电交互
+ AGVModel.GetInstance.jobData = AGV_PointRollerJobData.GetInstance;
+ string body = JsonConvert.SerializeObject(AGVModel.GetInstance);
+ //货位到货位
+ //AGV_SlotRollerJobData.GetInstance.startSlotCode = "";//起点槽位编号
+ //AGV_SlotRollerJobData.GetInstance.endSlotCode = "";//目的槽位编号
+ //AGV_SlotRollerJobData.GetInstance.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料
+ //AGV_SlotRollerJobData.GetInstance.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互
+ //AGV_SlotRollerJobData.GetInstance.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料
+ //AGV_SlotRollerJobData.GetInstance.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互
+ //AGVModel.GetInstance.jobData = AGV_SlotRollerJobData.GetInstance;
+ //string body = JsonConvert.SerializeObject(AGVModel.GetInstance);
+ string data= HttpRequest(url, head, body);
+ object objData= JsonConvert.DeserializeObject(data);
+ if (objData != null && objData is HttpResponseModel response)
+ {
+ return response.Body?.code;
+ }
+ return "Analysis Error";
}
///
/// AGV去3号线体装桶
///
///
- public string AgvToLineThreeLoadRoller()
+ public string AgvToLineThreeLoadRoller(string robotJobId)
{
- string url = "";
- string head = "";
- string body = "";
- return HttpRequest(url, head, body);
+ string url = AGVRequestUrl.GetInstance.TaskSendUrl;
+ //请求报文头
+ HttpRequestHeaderModel.GetInstance.appKey = "";
+ HttpRequestHeaderModel.GetInstance.appSecret = "";
+ HttpRequestHeaderModel.GetInstance.requestId = "";
+ HttpRequestHeaderModel.GetInstance.timestamp = "";
+ HttpRequestHeaderModel.GetInstance.version = "2.8";
+ string head = JsonConvert.SerializeObject(HttpRequestHeaderModel.GetInstance);
+ //请求报文体
+ AGVModel.GetInstance.robotJobId = robotJobId;//上游提供
+ AGVModel.GetInstance.warehouseId = 123; //仓库编号
+ AGVModel.GetInstance.jobPriority = 1;//任务执行的优先级
+ AGVModel.GetInstance.jobPriorityType = 1;//0:根据优先级来执行,1:强制执行
+ AGVModel.GetInstance.jobType = "POINT_ROLLER_MOVE"; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE
+ //详细任务数据
+ //点到点
+ AGV_PointRollerJobData.GetInstance.startPoint = "";//起点点位
+ AGV_PointRollerJobData.GetInstance.endPoint = "";//目的点位
+ AGV_PointRollerJobData.GetInstance.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料
+ AGV_PointRollerJobData.GetInstance.enableIOLoad = true;//上料交互方式 false:接口交互 true:光电交互
+ AGV_PointRollerJobData.GetInstance.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料
+ AGV_PointRollerJobData.GetInstance.enableIOUnload = true;//下料交互方式 false:接口交互 true:光电交互
+ AGVModel.GetInstance.jobData = AGV_PointRollerJobData.GetInstance;
+ string body = JsonConvert.SerializeObject(AGVModel.GetInstance);
+ //货位到货位
+ //AGV_SlotRollerJobData.GetInstance.startSlotCode = "";//起点槽位编号
+ //AGV_SlotRollerJobData.GetInstance.endSlotCode = "";//目的槽位编号
+ //AGV_SlotRollerJobData.GetInstance.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料
+ //AGV_SlotRollerJobData.GetInstance.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互
+ //AGV_SlotRollerJobData.GetInstance.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料
+ //AGV_SlotRollerJobData.GetInstance.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互
+ //AGVModel.GetInstance.jobData = AGV_SlotRollerJobData.GetInstance;
+ //string body = JsonConvert.SerializeObject(AGVModel.GetInstance);
+ string data = HttpRequest(url, head, body);
+ object objData = JsonConvert.DeserializeObject(data);
+ if (objData != null && objData is HttpResponseModel response)
+ {
+ return response.Body?.code;
+ }
+ return "Analysis Error";
}
///
/// AGV离开炒锅1
///
///
- public string AgvLeaveFryPotOne()
+ public string AgvLeaveFryPotOne(string robotJobId)
{
- string url = "";
- string head = "";
- string body = "";
- return HttpRequest(url, head, body);
+ string url = AGVRequestUrl.GetInstance.TaskSendUrl;
+ //请求报文头
+ HttpRequestHeaderModel.GetInstance.appKey = "";
+ HttpRequestHeaderModel.GetInstance.appSecret = "";
+ HttpRequestHeaderModel.GetInstance.requestId = "";
+ HttpRequestHeaderModel.GetInstance.timestamp = "";
+ HttpRequestHeaderModel.GetInstance.version = "2.8";
+ string head = JsonConvert.SerializeObject(HttpRequestHeaderModel.GetInstance);
+ //请求报文体
+ AGVModel.GetInstance.robotJobId = robotJobId;//上游提供
+ AGVModel.GetInstance.warehouseId = 123; //仓库编号
+ AGVModel.GetInstance.jobPriority = 1;//任务执行的优先级
+ AGVModel.GetInstance.jobPriorityType = 1;//0:根据优先级来执行,1:强制执行
+ AGVModel.GetInstance.jobType = "POINT_ROLLER_MOVE"; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE
+ //详细任务数据
+ //点到点
+ AGV_PointRollerJobData.GetInstance.startPoint = "";//起点点位
+ AGV_PointRollerJobData.GetInstance.endPoint = "";//目的点位
+ AGV_PointRollerJobData.GetInstance.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料
+ AGV_PointRollerJobData.GetInstance.enableIOLoad = true;//上料交互方式 false:接口交互 true:光电交互
+ AGV_PointRollerJobData.GetInstance.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料
+ AGV_PointRollerJobData.GetInstance.enableIOUnload = true;//下料交互方式 false:接口交互 true:光电交互
+ AGVModel.GetInstance.jobData = AGV_PointRollerJobData.GetInstance;
+ string body = JsonConvert.SerializeObject(AGVModel.GetInstance);
+ //货位到货位
+ //AGV_SlotRollerJobData.GetInstance.startSlotCode = "";//起点槽位编号
+ //AGV_SlotRollerJobData.GetInstance.endSlotCode = "";//目的槽位编号
+ //AGV_SlotRollerJobData.GetInstance.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料
+ //AGV_SlotRollerJobData.GetInstance.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互
+ //AGV_SlotRollerJobData.GetInstance.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料
+ //AGV_SlotRollerJobData.GetInstance.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互
+ //AGVModel.GetInstance.jobData = AGV_SlotRollerJobData.GetInstance;
+ //string body = JsonConvert.SerializeObject(AGVModel.GetInstance);
+ string data = HttpRequest(url, head, body);
+ object objData = JsonConvert.DeserializeObject(data);
+ if (objData != null && objData is HttpResponseModel response)
+ {
+ return response.Body?.code;
+ }
+ return "Analysis Error";
}
///
/// AGV离开炒锅2
///
///
- public string AgvLeaveFryPotTwo()
+ public string AgvLeaveFryPotTwo(string robotJobId)
{
- string url = "";
- string head = "";
- string body = "";
- return HttpRequest(url, head, body);
+ string url = AGVRequestUrl.GetInstance.TaskSendUrl;
+ //请求报文头
+ HttpRequestHeaderModel.GetInstance.appKey = "";
+ HttpRequestHeaderModel.GetInstance.appSecret = "";
+ HttpRequestHeaderModel.GetInstance.requestId = "";
+ HttpRequestHeaderModel.GetInstance.timestamp = "";
+ HttpRequestHeaderModel.GetInstance.version = "2.8";
+ string head = JsonConvert.SerializeObject(HttpRequestHeaderModel.GetInstance);
+ //请求报文体
+ AGVModel.GetInstance.robotJobId = robotJobId;//上游提供
+ AGVModel.GetInstance.warehouseId = 123; //仓库编号
+ AGVModel.GetInstance.jobPriority = 1;//任务执行的优先级
+ AGVModel.GetInstance.jobPriorityType = 1;//0:根据优先级来执行,1:强制执行
+ AGVModel.GetInstance.jobType = "POINT_ROLLER_MOVE"; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE
+ //详细任务数据
+ //点到点
+ AGV_PointRollerJobData.GetInstance.startPoint = "";//起点点位
+ AGV_PointRollerJobData.GetInstance.endPoint = "";//目的点位
+ AGV_PointRollerJobData.GetInstance.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料
+ AGV_PointRollerJobData.GetInstance.enableIOLoad = true;//上料交互方式 false:接口交互 true:光电交互
+ AGV_PointRollerJobData.GetInstance.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料
+ AGV_PointRollerJobData.GetInstance.enableIOUnload = true;//下料交互方式 false:接口交互 true:光电交互
+ AGVModel.GetInstance.jobData = AGV_PointRollerJobData.GetInstance;
+ string body = JsonConvert.SerializeObject(AGVModel.GetInstance);
+ //货位到货位
+ //AGV_SlotRollerJobData.GetInstance.startSlotCode = "";//起点槽位编号
+ //AGV_SlotRollerJobData.GetInstance.endSlotCode = "";//目的槽位编号
+ //AGV_SlotRollerJobData.GetInstance.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料
+ //AGV_SlotRollerJobData.GetInstance.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互
+ //AGV_SlotRollerJobData.GetInstance.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料
+ //AGV_SlotRollerJobData.GetInstance.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互
+ //AGVModel.GetInstance.jobData = AGV_SlotRollerJobData.GetInstance;
+ //string body = JsonConvert.SerializeObject(AGVModel.GetInstance);
+ string data = HttpRequest(url, head, body);
+ object objData = JsonConvert.DeserializeObject(data);
+ if (objData != null && objData is HttpResponseModel response)
+ {
+ return response.Body?.code;
+ }
+ return "Analysis Error";
}
///
/// AGV离开炒锅3
///
///
- public string AgvLeaveFryPotThree()
+ public string AgvLeaveFryPotThree(string robotJobId)
{
- string url = "";
- string head = "";
- string body = "";
- return HttpRequest(url, head, body);
+ string url = AGVRequestUrl.GetInstance.TaskSendUrl;
+ //请求报文头
+ HttpRequestHeaderModel.GetInstance.appKey = "";
+ HttpRequestHeaderModel.GetInstance.appSecret = "";
+ HttpRequestHeaderModel.GetInstance.requestId = "";
+ HttpRequestHeaderModel.GetInstance.timestamp = "";
+ HttpRequestHeaderModel.GetInstance.version = "2.8";
+ string head = JsonConvert.SerializeObject(HttpRequestHeaderModel.GetInstance);
+ //请求报文体
+ AGVModel.GetInstance.robotJobId = robotJobId;//上游提供
+ AGVModel.GetInstance.warehouseId = 123; //仓库编号
+ AGVModel.GetInstance.jobPriority = 1;//任务执行的优先级
+ AGVModel.GetInstance.jobPriorityType = 1;//0:根据优先级来执行,1:强制执行
+ AGVModel.GetInstance.jobType = "POINT_ROLLER_MOVE"; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE
+ //详细任务数据
+ //点到点
+ AGV_PointRollerJobData.GetInstance.startPoint = "";//起点点位
+ AGV_PointRollerJobData.GetInstance.endPoint = "";//目的点位
+ AGV_PointRollerJobData.GetInstance.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料
+ AGV_PointRollerJobData.GetInstance.enableIOLoad = true;//上料交互方式 false:接口交互 true:光电交互
+ AGV_PointRollerJobData.GetInstance.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料
+ AGV_PointRollerJobData.GetInstance.enableIOUnload = true;//下料交互方式 false:接口交互 true:光电交互
+ AGVModel.GetInstance.jobData = AGV_PointRollerJobData.GetInstance;
+ string body = JsonConvert.SerializeObject(AGVModel.GetInstance);
+ //货位到货位
+ //AGV_SlotRollerJobData.GetInstance.startSlotCode = "";//起点槽位编号
+ //AGV_SlotRollerJobData.GetInstance.endSlotCode = "";//目的槽位编号
+ //AGV_SlotRollerJobData.GetInstance.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料
+ //AGV_SlotRollerJobData.GetInstance.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互
+ //AGV_SlotRollerJobData.GetInstance.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料
+ //AGV_SlotRollerJobData.GetInstance.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互
+ //AGVModel.GetInstance.jobData = AGV_SlotRollerJobData.GetInstance;
+ //string body = JsonConvert.SerializeObject(AGVModel.GetInstance);
+ string data = HttpRequest(url, head, body);
+ object objData = JsonConvert.DeserializeObject(data);
+ if (objData != null && objData is HttpResponseModel response)
+ {
+ return response.Body?.code;
+ }
+ return "Analysis Error";
}
///
/// AGV离开炒锅4
///
///
- public string AgvLeaveFryPotFour()
+ public string AgvLeaveFryPotFour(string robotJobId)
{
- string url = "";
- string head = "";
- string body = "";
- return HttpRequest(url, head, body);
+ string url = AGVRequestUrl.GetInstance.TaskSendUrl;
+ //请求报文头
+ HttpRequestHeaderModel.GetInstance.appKey = "";
+ HttpRequestHeaderModel.GetInstance.appSecret = "";
+ HttpRequestHeaderModel.GetInstance.requestId = "";
+ HttpRequestHeaderModel.GetInstance.timestamp = "";
+ HttpRequestHeaderModel.GetInstance.version = "2.8";
+ string head = JsonConvert.SerializeObject(HttpRequestHeaderModel.GetInstance);
+ //请求报文体
+ AGVModel.GetInstance.robotJobId = robotJobId;//上游提供
+ AGVModel.GetInstance.warehouseId = 123; //仓库编号
+ AGVModel.GetInstance.jobPriority = 1;//任务执行的优先级
+ AGVModel.GetInstance.jobPriorityType = 1;//0:根据优先级来执行,1:强制执行
+ AGVModel.GetInstance.jobType = "POINT_ROLLER_MOVE"; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE
+ //详细任务数据
+ //点到点
+ AGV_PointRollerJobData.GetInstance.startPoint = "";//起点点位
+ AGV_PointRollerJobData.GetInstance.endPoint = "";//目的点位
+ AGV_PointRollerJobData.GetInstance.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料
+ AGV_PointRollerJobData.GetInstance.enableIOLoad = true;//上料交互方式 false:接口交互 true:光电交互
+ AGV_PointRollerJobData.GetInstance.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料
+ AGV_PointRollerJobData.GetInstance.enableIOUnload = true;//下料交互方式 false:接口交互 true:光电交互
+ AGVModel.GetInstance.jobData = AGV_PointRollerJobData.GetInstance;
+ string body = JsonConvert.SerializeObject(AGVModel.GetInstance);
+ //货位到货位
+ //AGV_SlotRollerJobData.GetInstance.startSlotCode = "";//起点槽位编号
+ //AGV_SlotRollerJobData.GetInstance.endSlotCode = "";//目的槽位编号
+ //AGV_SlotRollerJobData.GetInstance.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料
+ //AGV_SlotRollerJobData.GetInstance.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互
+ //AGV_SlotRollerJobData.GetInstance.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料
+ //AGV_SlotRollerJobData.GetInstance.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互
+ //AGVModel.GetInstance.jobData = AGV_SlotRollerJobData.GetInstance;
+ //string body = JsonConvert.SerializeObject(AGVModel.GetInstance);
+ string data = HttpRequest(url, head, body);
+ object objData = JsonConvert.DeserializeObject(data);
+ if (objData != null && objData is HttpResponseModel response)
+ {
+ return response.Body?.code;
+ }
+ return "Analysis Error";
}
///
/// AGV离开炒锅5
///
///
- public string AgvLeaveFryPotFive()
+ public string AgvLeaveFryPotFive(string robotJobId)
{
- string url = "";
- string head = "";
- string body = "";
- return HttpRequest(url, head, body);
+ string url = AGVRequestUrl.GetInstance.TaskSendUrl;
+ //请求报文头
+ HttpRequestHeaderModel.GetInstance.appKey = "";
+ HttpRequestHeaderModel.GetInstance.appSecret = "";
+ HttpRequestHeaderModel.GetInstance.requestId = "";
+ HttpRequestHeaderModel.GetInstance.timestamp = "";
+ HttpRequestHeaderModel.GetInstance.version = "2.8";
+ string head = JsonConvert.SerializeObject(HttpRequestHeaderModel.GetInstance);
+ //请求报文体
+ AGVModel.GetInstance.robotJobId = robotJobId;//上游提供
+ AGVModel.GetInstance.warehouseId = 123; //仓库编号
+ AGVModel.GetInstance.jobPriority = 1;//任务执行的优先级
+ AGVModel.GetInstance.jobPriorityType = 1;//0:根据优先级来执行,1:强制执行
+ AGVModel.GetInstance.jobType = "POINT_ROLLER_MOVE"; //SLOT_ROLLER_MOVE / POINT_ROLLER_MOVE
+ //详细任务数据
+ //点到点
+ AGV_PointRollerJobData.GetInstance.startPoint = "";//起点点位
+ AGV_PointRollerJobData.GetInstance.endPoint = "";//目的点位
+ AGV_PointRollerJobData.GetInstance.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料
+ AGV_PointRollerJobData.GetInstance.enableIOLoad = true;//上料交互方式 false:接口交互 true:光电交互
+ AGV_PointRollerJobData.GetInstance.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料
+ AGV_PointRollerJobData.GetInstance.enableIOUnload = true;//下料交互方式 false:接口交互 true:光电交互
+ AGVModel.GetInstance.jobData = AGV_PointRollerJobData.GetInstance;
+ string body = JsonConvert.SerializeObject(AGVModel.GetInstance);
+ //货位到货位
+ //AGV_SlotRollerJobData.GetInstance.startSlotCode = "";//起点槽位编号
+ //AGV_SlotRollerJobData.GetInstance.endSlotCode = "";//目的槽位编号
+ //AGV_SlotRollerJobData.GetInstance.autoLoad = true;//是否自动上料 true:自动上料 false:人工上料
+ //AGV_SlotRollerJobData.GetInstance.enableIOLoad=true;//上料交互方式 false:接口交互 true:光电交互
+ //AGV_SlotRollerJobData.GetInstance.autoUnload = true;//是否自动下料 true:自动下料 false:人工下料
+ //AGV_SlotRollerJobData.GetInstance.enableIOUnload=true;//下料交互方式 false:接口交互 true:光电交互
+ //AGVModel.GetInstance.jobData = AGV_SlotRollerJobData.GetInstance;
+ //string body = JsonConvert.SerializeObject(AGVModel.GetInstance);
+ string data = HttpRequest(url, head, body);
+ object objData = JsonConvert.DeserializeObject(data);
+ if (objData != null && objData is HttpResponseModel response)
+ {
+ return response.Body?.code;
+ }
+ return "Analysis Error";
+ }
+ ///
+ /// 任务取消
+ ///
+ /// 上游系统任务号,全局唯一
+ public string CancelJobTask(string robotJobId)
+ {
+ string url = AGVRequestUrl.GetInstance.TaskCancelUrl;
+ //请求报文头
+ HttpRequestHeaderModel.GetInstance.appKey = "";
+ HttpRequestHeaderModel.GetInstance.appSecret = "";
+ HttpRequestHeaderModel.GetInstance.requestId = "";
+ HttpRequestHeaderModel.GetInstance.timestamp = "";
+ HttpRequestHeaderModel.GetInstance.version = "2.8";
+ string head = JsonConvert.SerializeObject(HttpRequestHeaderModel.GetInstance);
+ //请求报文体
+ AGVTaskCancelModel.GetInstance.robotJobId = robotJobId;
+ AGVTaskCancelModel.GetInstance.warehouseId = 123;//仓库编号
+ string body = JsonConvert.SerializeObject(AGVTaskCancelModel.GetInstance);
+ string data = HttpRequest(url, head, body);
+ object objData = JsonConvert.DeserializeObject(data);
+ if (objData != null && objData is HttpResponseModel response)
+ {
+ return response.Body?.code;
+ }
+ return "Analysis Error";
+ }
+ ///
+ /// 实操任务完成通知
+ ///
+ ///
+ public string TaskCompleteNotify(string robotJobId)
+ {
+ string url = AGVRequestUrl.GetInstance.TaskCompleteUrl;
+ //请求报文头
+ HttpRequestHeaderModel.GetInstance.appKey = "";
+ HttpRequestHeaderModel.GetInstance.appSecret = "";
+ HttpRequestHeaderModel.GetInstance.requestId = "";
+ HttpRequestHeaderModel.GetInstance.timestamp = "";
+ HttpRequestHeaderModel.GetInstance.version = "2.8";
+ string head = JsonConvert.SerializeObject(HttpRequestHeaderModel.GetInstance);
+ //请求报文体
+ AGVTaskCompleteNotifyModel.GetInstance.robotJobId = robotJobId;
+ AGVTaskCompleteNotifyModel.GetInstance.warehouseId = 123;//仓库编号
+ string body=JsonConvert.SerializeObject(AGVTaskCompleteNotifyModel.GetInstance);
+ string data = HttpRequest(url, head, body);
+ object objData = JsonConvert.DeserializeObject(data);
+ if (objData != null && objData is HttpResponseModel response)
+ {
+ return response.Body?.code;
+ }
+ return "Analysis Error";
+ }
+ ///
+ /// AGV上下料交互反馈
+ ///
+ /// AGV编号
+ /// 任务编号
+ /// 消息编号
+ ///
+ public string UpDownFeedBack(string agvCode,string jobId,string msgId)
+ {
+ string url = AGVRequestUrl.GetInstance.TaskCompleteUrl;
+ //请求报文头
+ HttpRequestHeaderModel.GetInstance.appKey = "";
+ HttpRequestHeaderModel.GetInstance.appSecret = "";
+ HttpRequestHeaderModel.GetInstance.requestId = "";
+ HttpRequestHeaderModel.GetInstance.timestamp = "";
+ HttpRequestHeaderModel.GetInstance.version = "2.8";
+ string head = JsonConvert.SerializeObject(HttpRequestHeaderModel.GetInstance);
+ //请求报文体
+ AGVLoadInteracteModel.GetInstance.agvCode = agvCode;
+ AGVLoadInteracteModel.GetInstance.jobId = jobId;
+ AGVLoadInteracteModel.GetInstance.msgId= msgId;
+ string body=JsonConvert.SerializeObject(AGVLoadInteracteModel.GetInstance);
+ string data = HttpRequest(url, head, body);
+ object objData = JsonConvert.DeserializeObject(data);
+ if (objData != null && objData is HttpResponseModel response)
+ {
+ return response.Body?.code;
+ }
+ return "Analysis Error";
}
}
}
diff --git a/BPASmartClient.AGV/AGVLoadInteracteModel.cs b/BPASmartClient.AGV/AGVLoadInteracteModel.cs
index db147e31..ec1c6a8c 100644
--- a/BPASmartClient.AGV/AGVLoadInteracteModel.cs
+++ b/BPASmartClient.AGV/AGVLoadInteracteModel.cs
@@ -11,6 +11,8 @@ namespace BPASmartClient.AGV
///
internal class AGVLoadInteracteModel
{
+ private static AGVLoadInteracteModel _instance;
+ public static AGVLoadInteracteModel GetInstance=>_instance ??= new AGVLoadInteracteModel();
public string agvCode { get; set;}
public string jobId { get; set; }
public string msgId { get; set; }
diff --git a/BPASmartClient.AGV/AGVModel.cs b/BPASmartClient.AGV/AGVModel.cs
index 1665c1f6..e58a17ff 100644
--- a/BPASmartClient.AGV/AGVModel.cs
+++ b/BPASmartClient.AGV/AGVModel.cs
@@ -11,6 +11,9 @@ namespace BPASmartClient.AGV
///
internal class AGVModel
{
+ private static AGVModel _instance;
+ public static AGVModel GetInstance => _instance ??= new AGVModel();
+
///
/// 必填项
///
diff --git a/BPASmartClient.AGV/AGVRequestUrl.cs b/BPASmartClient.AGV/AGVRequestUrl.cs
index 20817893..c1b758e2 100644
--- a/BPASmartClient.AGV/AGVRequestUrl.cs
+++ b/BPASmartClient.AGV/AGVRequestUrl.cs
@@ -2,10 +2,11 @@
{
public class AGVRequestUrl
{
- //public string HttpHeader { get; set; }
- //public string TaskSendBody { get; set; }
- public AGVRequestUrl(string IpAddress)
+ private static AGVRequestUrl _instance;
+ public static AGVRequestUrl GetInstance => _instance ??= new AGVRequestUrl();
+ public AGVRequestUrl()
{
+ string IpAddress = "";
TaskSendUrl= $"http://{IpAddress}/api/quicktron/wcs/standardized.robot.job.submit";
TaskCancelUrl= $"http://{IpAddress}/api/quicktron/wcs/standardized.robot.job.cancel";
TaskCompleteUrl= $"http://{IpAddress}/api/quicktron/wcs/standardized.operation.notice";
diff --git a/BPASmartClient.AGV/AGVTaskCancelModel.cs b/BPASmartClient.AGV/AGVTaskCancelModel.cs
index 3c6b01e6..b1a0edf1 100644
--- a/BPASmartClient.AGV/AGVTaskCancelModel.cs
+++ b/BPASmartClient.AGV/AGVTaskCancelModel.cs
@@ -11,6 +11,8 @@ namespace BPASmartClient.AGV
///
internal class AGVTaskCancelModel
{
+ private static AGVTaskCancelModel _instance;
+ public static AGVTaskCancelModel GetInstance => _instance ??= new AGVTaskCancelModel();
public string robotJobId { get; set; }
public long warehouseId { get; set; }
public string? executeMode { get; set; }
diff --git a/BPASmartClient.AGV/AGVTaskCompleteNotifyModel.cs b/BPASmartClient.AGV/AGVTaskCompleteNotifyModel.cs
index a6d5ff68..80f918f3 100644
--- a/BPASmartClient.AGV/AGVTaskCompleteNotifyModel.cs
+++ b/BPASmartClient.AGV/AGVTaskCompleteNotifyModel.cs
@@ -11,6 +11,8 @@ namespace BPASmartClient.AGV
///
internal class AGVTaskCompleteNotifyModel
{
+ private static AGVTaskCompleteNotifyModel _instance;
+ public static AGVTaskCompleteNotifyModel GetInstance=>_instance ??= new AGVTaskCompleteNotifyModel();
public string? robotJobId { get; set; }
public string? bucketCode { get; set; }
public string? bucketslotCode { get; set; }
diff --git a/BPASmartClient.AGV/AGV_PointRollerJobData.cs b/BPASmartClient.AGV/AGV_PointRollerJobData.cs
index d2f638cd..c54766ed 100644
--- a/BPASmartClient.AGV/AGV_PointRollerJobData.cs
+++ b/BPASmartClient.AGV/AGV_PointRollerJobData.cs
@@ -11,6 +11,8 @@ namespace BPASmartClient.AGV
///
internal class AGV_PointRollerJobData:IJobData
{
+ private static AGV_PointRollerJobData _instance;
+ public static AGV_PointRollerJobData GetInstance => _instance ??= new AGV_PointRollerJobData();
public string? containerCode { get; set; }
public string startPoint { get; set; }
public string endPoint { get; set; }
diff --git a/BPASmartClient.AGV/AGV_SlotRollerJobData.cs b/BPASmartClient.AGV/AGV_SlotRollerJobData.cs
index ffe47822..28aab53d 100644
--- a/BPASmartClient.AGV/AGV_SlotRollerJobData.cs
+++ b/BPASmartClient.AGV/AGV_SlotRollerJobData.cs
@@ -11,8 +11,10 @@ namespace BPASmartClient.AGV
///
internal class AGV_SlotRollerJobData:IJobData
{
+ private static AGV_SlotRollerJobData _instance;
+ public static AGV_SlotRollerJobData GetInstance => _instance ??= new AGV_SlotRollerJobData();
public string? containerCode { get; set; }
- public string startIotCode { get; set; }
+ public string startSlotCode { get; set; }
public string endSlotCode { get; set; }
public bool autoLoad { get; set; }
public bool enableIOLoad { get; set; }
diff --git a/BPASmartClient.AGV/App.config b/BPASmartClient.AGV/App.config
new file mode 100644
index 00000000..68751874
--- /dev/null
+++ b/BPASmartClient.AGV/App.config
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BPASmartClient.AGV/BPASmartClient.AGV.csproj b/BPASmartClient.AGV/BPASmartClient.AGV.csproj
index 933c8b28..6d1c8e2b 100644
--- a/BPASmartClient.AGV/BPASmartClient.AGV.csproj
+++ b/BPASmartClient.AGV/BPASmartClient.AGV.csproj
@@ -8,6 +8,7 @@
+
diff --git a/BPASmartClient.AGV/Feedback/AGVUpReportHeader.cs b/BPASmartClient.AGV/Feedback/AGVUpReportHeader.cs
new file mode 100644
index 00000000..5c3864d8
--- /dev/null
+++ b/BPASmartClient.AGV/Feedback/AGVUpReportHeader.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.AGV.Feedback
+{
+ public class AGVUpReportHeader
+ {
+ public string? appKey { get; set; }
+ public string? appSecret { get; set; }
+ public string? requestId { get; set; }
+ public string? timestamp { get; set; }
+ public string? version { get; set; }
+ }
+}
diff --git a/BPASmartClient.AGV/Feedback/Upstreamrequest.cs b/BPASmartClient.AGV/Feedback/Upstreamrequest.cs
index 6d11b3c2..411189a1 100644
--- a/BPASmartClient.AGV/Feedback/Upstreamrequest.cs
+++ b/BPASmartClient.AGV/Feedback/Upstreamrequest.cs
@@ -49,6 +49,5 @@ namespace BPASmartClient.AGV.Feedback
/// 上游任务号
///
public string robotJobId { get; set; }
-
}
}
diff --git a/BPASmartClient.AGV/HttpRequestHeaderModel.cs b/BPASmartClient.AGV/HttpRequestHeaderModel.cs
index ab24a75d..f512f103 100644
--- a/BPASmartClient.AGV/HttpRequestHeaderModel.cs
+++ b/BPASmartClient.AGV/HttpRequestHeaderModel.cs
@@ -8,10 +8,12 @@ namespace BPASmartClient.AGV
{
internal class HttpRequestHeaderModel
{
- public string appKey { get; set; }
- public string appSecret { get; set; }
- public string requestId { get; set; }
- public string timestamp { get; set; }
- public string version { get; set; }
+ private static HttpRequestHeaderModel _instance;
+ public static HttpRequestHeaderModel GetInstance => _instance ??= new HttpRequestHeaderModel();
+ public string? appKey { get; set; }
+ public string? appSecret { get; set; }
+ public string? requestId { get; set; }
+ public string? timestamp { get; set; }
+ public string? version { get; set; }
}
}
diff --git a/BPASmartClient.AGV/HttpResponseBodyModel.cs b/BPASmartClient.AGV/HttpResponseBodyModel.cs
new file mode 100644
index 00000000..c0cafc58
--- /dev/null
+++ b/BPASmartClient.AGV/HttpResponseBodyModel.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.AGV
+{
+ internal class HttpResponseBodyModel
+ {
+ public string code { get; set; }
+ public string message { get; set; }
+ public bool success { get; set; }
+ public HttpResponseData data { get; set; }
+ }
+}
diff --git a/BPASmartClient.AGV/HttpResponseHeaderModel.cs b/BPASmartClient.AGV/HttpResponseHeaderModel.cs
new file mode 100644
index 00000000..5ff914d8
--- /dev/null
+++ b/BPASmartClient.AGV/HttpResponseHeaderModel.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.AGV
+{
+ internal class HttpResponseHeaderModel
+ {
+ public string? requestId { get; set; }
+ public string? timestamp { get; set; }
+ public string? version { get; set; }
+ }
+}
diff --git a/BPASmartClient.AGV/HttpResponseModel.cs b/BPASmartClient.AGV/HttpResponseModel.cs
index 5ac3cb22..40ed05ed 100644
--- a/BPASmartClient.AGV/HttpResponseModel.cs
+++ b/BPASmartClient.AGV/HttpResponseModel.cs
@@ -8,9 +8,7 @@ namespace BPASmartClient.AGV
{
internal class HttpResponseModel
{
- public string code { get; set; }
- public string message { get; set; }
- public bool success { get; set; }
- public HttpResponseData data { get; set; }
+ public HttpResponseHeaderModel? Header { get; set; }
+ public HttpResponseBodyModel? Body { get; set; }
}
}
diff --git a/BPASmartClient.CustomResource/BPASmartClient.CustomResource.csproj b/BPASmartClient.CustomResource/BPASmartClient.CustomResource.csproj
index 65642570..becbdc01 100644
--- a/BPASmartClient.CustomResource/BPASmartClient.CustomResource.csproj
+++ b/BPASmartClient.CustomResource/BPASmartClient.CustomResource.csproj
@@ -19,8 +19,18 @@
+
+
+
+
+
+
+
+
+
+
@@ -190,7 +200,17 @@
-
+
+
+
+
+
+
+ Always
+
+
+ Always
+
@@ -200,8 +220,18 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/BPASmartClient.CustomResource/Fonts/80号-萌趣小鱼体.ttf b/BPASmartClient.CustomResource/Fonts/80号-萌趣小鱼体.ttf
new file mode 100644
index 00000000..c846b3b6
Binary files /dev/null and b/BPASmartClient.CustomResource/Fonts/80号-萌趣小鱼体.ttf differ
diff --git a/BPASmartClient.CustomResource/Image/AGV/停车位.png b/BPASmartClient.CustomResource/Image/AGV/停车位.png
new file mode 100644
index 00000000..12e0e689
Binary files /dev/null and b/BPASmartClient.CustomResource/Image/AGV/停车位.png differ
diff --git a/BPASmartClient.CustomResource/Image/AGV/充电桩.png b/BPASmartClient.CustomResource/Image/AGV/充电桩.png
new file mode 100644
index 00000000..9931a41b
Binary files /dev/null and b/BPASmartClient.CustomResource/Image/AGV/充电桩.png differ
diff --git a/BPASmartClient.CustomResource/Image/AGV/墙.png b/BPASmartClient.CustomResource/Image/AGV/墙.png
new file mode 100644
index 00000000..cf81aade
Binary files /dev/null and b/BPASmartClient.CustomResource/Image/AGV/墙.png differ
diff --git a/BPASmartClient.CustomResource/Image/AGV/汤碗.png b/BPASmartClient.CustomResource/Image/AGV/汤碗.png
new file mode 100644
index 00000000..99cb5e69
Binary files /dev/null and b/BPASmartClient.CustomResource/Image/AGV/汤碗.png differ
diff --git a/BPASmartClient.CustomResource/Image/AGV/炒锅.png b/BPASmartClient.CustomResource/Image/AGV/炒锅.png
new file mode 100644
index 00000000..cb917fd9
Binary files /dev/null and b/BPASmartClient.CustomResource/Image/AGV/炒锅.png differ
diff --git a/BPASmartClient.CustomResource/Image/AGV/物流车.png b/BPASmartClient.CustomResource/Image/AGV/物流车.png
new file mode 100644
index 00000000..5ce43fe9
Binary files /dev/null and b/BPASmartClient.CustomResource/Image/AGV/物流车.png differ
diff --git a/BPASmartClient.CustomResource/Image/AGV/砖块.png b/BPASmartClient.CustomResource/Image/AGV/砖块.png
new file mode 100644
index 00000000..1de8c586
Binary files /dev/null and b/BPASmartClient.CustomResource/Image/AGV/砖块.png differ
diff --git a/BPASmartClient.CustomResource/Image/AGV/蔬菜.png b/BPASmartClient.CustomResource/Image/AGV/蔬菜.png
new file mode 100644
index 00000000..4a4b57cd
Binary files /dev/null and b/BPASmartClient.CustomResource/Image/AGV/蔬菜.png differ
diff --git a/BPASmartClient.CustomResource/Image/AGV/语音箭头.png b/BPASmartClient.CustomResource/Image/AGV/语音箭头.png
new file mode 100644
index 00000000..af6d5b03
Binary files /dev/null and b/BPASmartClient.CustomResource/Image/AGV/语音箭头.png differ
diff --git a/BPASmartClient.CustomResource/Pages/View/LoginView.xaml b/BPASmartClient.CustomResource/Pages/View/LoginView.xaml
index d4cf34ce..35c641d5 100644
--- a/BPASmartClient.CustomResource/Pages/View/LoginView.xaml
+++ b/BPASmartClient.CustomResource/Pages/View/LoginView.xaml
@@ -15,6 +15,7 @@
Topmost="False"
WindowStartupLocation="CenterScreen"
WindowStyle="None"
+ WindowState="Normal"
mc:Ignorable="d">
@@ -232,28 +233,6 @@
VerticalAlignment="Center"
LoadedBehavior="Manual" />
-
-
@@ -279,10 +258,10 @@
Text="{Binding ErrorInfo}" />
@@ -337,271 +316,6 @@
TabIndex="3" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/BPASmartClient.CustomResource/Pages/View/MainView.xaml b/BPASmartClient.CustomResource/Pages/View/MainView.xaml
index 2da3e524..76baebcb 100644
--- a/BPASmartClient.CustomResource/Pages/View/MainView.xaml
+++ b/BPASmartClient.CustomResource/Pages/View/MainView.xaml
@@ -21,6 +21,7 @@
+
@@ -280,7 +281,90 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -430,7 +514,19 @@
-
+
+
+
+
+ /// 设备初始化状态
+ ///
+ public bool Status
+ {
+ get { return _status; }
+ set
+ {
+ if (value)
+ {
+ ActionManage.GetInstance.Send("StartPlcInite");
+ }
+ else
+ {
+ ActionManage.GetInstance.Send("EndPlcInite");
+ }
+ _status = value;
+ OnPropertyChanged();
+ }
+ }
+ ///
+ /// 开机自启
+ ///
+ public bool AutoStart { get { return SystemHelper.GetInstance.IsAutoStart(); } set { SystemHelper.GetInstance.AutoStart(value); OnPropertyChanged(); } }
public RelayCommand
-
-
+
+ Content="停止制作" Cursor="Hand"/>
模式
@@ -295,11 +304,18 @@
+ Margin="0,0,0,10" HorizontalAlignment="Left" Width="1000">
+
+
-
diff --git a/BPASmartClient.MorkT/ViewModel/DebugViewModel.cs b/BPASmartClient.MorkT/ViewModel/DebugViewModel.cs
index f1a92f85..affaa52b 100644
--- a/BPASmartClient.MorkT/ViewModel/DebugViewModel.cs
+++ b/BPASmartClient.MorkT/ViewModel/DebugViewModel.cs
@@ -8,10 +8,12 @@ using BPASmartClient.LebaiRobot;
using BPASmartClient.Message;
using BPASmartClient.Model;
using BPASmartClient.Model.乐白机器人;
+using BPASmartClient.Model.乐白机器人.Enum;
using BPASmartClient.Model.冰淇淋.Enum;
using BPASmartClient.Model.单片机;
using BPASmartClient.Model.单片机.Enum;
using BPASmartClient.Model.咖啡机.Enum;
+using BPASmartClient.MorkT.Model;
using Microsoft.Toolkit.Mvvm.ComponentModel;
using Microsoft.Toolkit.Mvvm.Input;
using System;
@@ -36,6 +38,12 @@ namespace BPASmartClient.MorkT.ViewModel
///
public string RobotMode { get { return _robotMode; } set { _robotMode = value; OnPropertyChanged(); } }
private string _robotMode { get; set; }
+ ///
+ /// 乐白机器人自嗨时间间隔
+ ///
+ public int TimeInterval { get { return Global.TimeInterval; } set { Global.TimeInterval = value; OnPropertyChanged(); } }
+ //private int _timeInterval { get; set; } = Global.TimeInterval;
+
///
/// 机器人控制指令
///
@@ -44,9 +52,12 @@ namespace BPASmartClient.MorkT.ViewModel
/// 机器人控制
///
///
+
public RelayCommand Button_SetValueCommand { get; set; }
+ public RelayCommand Button_GoToHomeCommand { get; set; }
+
private void Button_SetValue()
{
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 });
@@ -56,6 +67,14 @@ namespace BPASmartClient.MorkT.ViewModel
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiControlEvent { DeviceId = DeviceId, LebaiControl = o.ToString() });
}
+ private void Button_GoToHome()
+ {
+ //EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }, (o) => { });
+ //MessageLog.GetInstance.Show("开始执行乐白机器人回原点");
+ //EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = Lebai_qsqdCode.SENCE_机器人回原点 });
+ //MessageLog.GetInstance.Show("开始执行乐白机器人回原点-----");
+ }
+
#endregion
#region 冰淇淋机器
@@ -124,12 +143,12 @@ namespace BPASmartClient.MorkT.ViewModel
private void Button_MakeIceCream()
{
-
+ EventBus.EventBus.GetInstance().Publish(new GSIceCream_DischargeEvent { DeviceId = DeviceId });
}
private void Button_SetIceCreamModel()
{
MORKI_MODE mORKI_MODE = (MORKI_MODE)Enum.Parse(typeof(MORKI_MODE), SelecteIceCreamdMode);
- new GSIceCream_ModeSetEvent() { DeviceId = DeviceId, Mode = mORKI_MODE }.Publish();
+ EventBus.EventBus.GetInstance().Publish(new GSIceCream_ModeSetEvent { DeviceId = DeviceId, Mode = mORKI_MODE });
}
#endregion
@@ -222,10 +241,13 @@ namespace BPASmartClient.MorkT.ViewModel
private void Button_SCChipRefrigeration()
{
- EventBus.EventBus.GetInstance().Publish(new SCChip_RotorSwitchEvent { DeviceId = DeviceId, TurnOn = true });
+ //EventBus.EventBus.GetInstance().Publish(new SCChip_RotorSwitchEvent { DeviceId = DeviceId, TurnOn = true });
+ //Thread.Sleep(500);
+ //EventBus.EventBus.GetInstance().Publish(new SCChip_RotorSwitchEvent { DeviceId = DeviceId, TurnOn = false });
+ EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetOutPutEvent { DeviceId = DeviceId, Value = true, Pin = 1 });
Thread.Sleep(500);
- EventBus.EventBus.GetInstance().Publish(new SCChip_RotorSwitchEvent { DeviceId = DeviceId, TurnOn = false });
-
+ EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetOutPutEvent { DeviceId = DeviceId, Value = false, Pin = 1 });
+
}
private void Button_SCChipDischarge()
@@ -248,6 +270,7 @@ namespace BPASmartClient.MorkT.ViewModel
{
Button_RobotControlCommand = new RelayCommand(Button_RobotControl);
Button_SetValueCommand = new RelayCommand(Button_SetValue);
+ Button_GoToHomeCommand = new RelayCommand(Button_GoToHome);
Button_MakeIceCreamCommand = new RelayCommand(Button_MakeIceCream);
Button_SetIceCreamModelCommand = new RelayCommand(Button_SetIceCreamModel);
@@ -313,7 +336,7 @@ namespace BPASmartClient.MorkT.ViewModel
DL = variableMonitors.FirstOrDefault(p => p.Notes == "冰淇淋机器电流").CurrentValue;
DY = variableMonitors.FirstOrDefault(p => p.Notes == "冰淇淋机器电压").CurrentValue;
CurrentMode = variableMonitors.FirstOrDefault(p => p.Notes == "冰淇淋机器模式").CurrentValue;
- IceCreamFault = variableMonitors.FirstOrDefault(p => p.Notes == "冰淇淋机器故障").CurrentValue;
+ IceCreamFault = variableMonitors.FirstOrDefault(p => p.Notes == "冰淇淋机器异常").CurrentValue;
CXB = variableMonitors.FirstOrDefault(p => p.Notes == "冰淇淋机器成型比").CurrentValue;
DLCompleted = variableMonitors.FirstOrDefault(p => p.Notes == "冰淇淋机器打料完成")?.CurrentValue == "True" ? "打料完成" : "打料中";
}
diff --git a/BPASmartClient.MorkTM/Alarm.cs b/BPASmartClient.MorkTM/Alarm.cs
new file mode 100644
index 00000000..6fc83b1c
--- /dev/null
+++ b/BPASmartClient.MorkTM/Alarm.cs
@@ -0,0 +1,15 @@
+using BPASmartClient.Device;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.MorkTM
+{
+ public class Alarm: IAlarm
+ {
+ [Alarm("报警")]
+ public string Name { get; set; }
+ }
+}
diff --git a/BPASmartClient.MorkTM/BPASmartClient.MorkTM.csproj b/BPASmartClient.MorkTM/BPASmartClient.MorkTM.csproj
new file mode 100644
index 00000000..0115625e
--- /dev/null
+++ b/BPASmartClient.MorkTM/BPASmartClient.MorkTM.csproj
@@ -0,0 +1,48 @@
+
+
+
+ net6.0-windows
+ enable
+ enable
+ true
+ Library
+ False
+
+
+
+
+
+
+
+
+
+ True
+ True
+ Resources.resx
+
+
+ True
+ True
+ Settings.settings
+
+
+
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
+
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+
+
+
+
+
+
diff --git a/BPASmartClient.MorkTM/Control_MorkTM.cs b/BPASmartClient.MorkTM/Control_MorkTM.cs
new file mode 100644
index 00000000..30dfb988
--- /dev/null
+++ b/BPASmartClient.MorkTM/Control_MorkTM.cs
@@ -0,0 +1,169 @@
+using BPA.Message;
+using BPA.Message.Enum;
+using BPASmartClient.Device;
+using BPASmartClient.EventBus;
+using BPASmartClient.Helper;
+using BPASmartClient.Message;
+using BPASmartClient.Model;
+using BPASmartClient.Model.PLC;
+using BPASmartClient.MorkTM.Model;
+using System.Collections.Concurrent;
+using static BPASmartClient.EventBus.EventBus;
+
+namespace BPASmartClient.MorkTM
+{
+ public class Control_MorkTM : BaseDevice
+ {
+ public override DeviceClientType DeviceType => throw new NotImplementedException();
+
+ GVL_MorkTM morkTM = new GVL_MorkTM();
+ public override void DoMain()
+ {
+ ServerInit();
+ DataParse();
+
+ ActionManage.GetInstance.Register(new Action((o) =>
+ {
+ if (o != null && o is WritePar writePar) WriteData(writePar.Address, writePar.Value);
+ }), "WriteVW");
+
+ ActionManage.GetInstance.Register(new Action((o) =>
+ {
+ if (o != null && o is WritePar writePar) WriteData(writePar.Address, writePar.Value);
+ }), "WriteBools");
+
+ DeviceProcessLogShow("设备初始化完成");
+
+ }
+ private void ServerInit()
+ {
+ //物料信息
+ EventBus.EventBus.GetInstance().Subscribe(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
+ {
+ if (@event == null) return;
+ if (@event is MaterialDeliveryEvent material)
+ {
+ orderMaterialDelivery = material.orderMaterialDelivery;
+ }
+ });
+
+ //配方数据信息
+ EventBus.EventBus.GetInstance().Subscribe(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
+ {
+ if (@event == null) return;
+ if (@event is RecipeBomEvent recipe)
+ {
+ recipeBoms = recipe.recipeBoms;
+ }
+ });
+ }
+ private void DataParse()
+ {
+ EventBus.EventBus.GetInstance().Subscribe(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
+ {
+ if(@event == null) return;
+ if(@event is DoOrderEvent order)
+ {
+ if (order.MorkOrder.GoodBatchings == null) return;
+ OrderCount++;
+ OrderChange(order.MorkOrder, ORDER_STATUS.WAIT);
+ DeviceProcessLogShow($"接收到{OrderCount}次订单");
+ Dictionary OrderPushes = new Dictionary();
+ foreach (var item in order.MorkOrder.GoodBatchings)
+ {
+ var res = orderMaterialDelivery?.BatchingInfo?.FirstOrDefault(p => p.BatchingId == item.BatchingId);
+ if (res != null)
+ {
+ OrderPushes.TryAdd(res.BatchingLoc, item.BatchingCount);
+ }
+ }
+
+ morkTM.morkOrderPushesTeaWithMilk.Enqueue(new OrderLocInfo()
+ {
+ GoodName = order.MorkOrder.GoodsName,
+ SuborderId = order.MorkOrder.SuborderId,
+ GoodPushes = OrderPushes
+ });
+ }
+ });
+ }
+ private void OrderChange(MorkOrderPush orderPush, ORDER_STATUS oRDER_STATUS)
+ {
+ EventBus.EventBus.GetInstance().Publish(new OrderStatusChangedEvent()
+ {
+ SortNum = orderPush.SortNum.ToString(),
+ GoodName = orderPush.GoodsName,
+ Status = oRDER_STATUS,
+ SubOrderId = orderPush.SuborderId,
+ deviceClientType = DeviceType
+ });
+ }
+
+
+ public override void MainTask()
+ {
+ IsHealth = true;
+ MakeTeaWithMilkProcess();
+ }
+
+ private void MakeTeaWithMilkProcess()
+ {
+ if(morkTM.morkOrderPushesTeaWithMilk.Count > 0)
+ {
+ if(morkTM.morkOrderPushesTeaWithMilk.TryDequeue(out OrderLocInfo orderLoc))
+ {
+ morkTM.RecipesPushes.Clear();
+ morkTM.RecipesPushes = orderLoc.GoodPushes;
+ foreach(var item in morkTM.RecipesPushes)
+ {
+ WriteData(item.Key,item.Value);
+ while (!RTrig.GetInstance("OutMaterialComplete").Start(morkTM.OutMaterialComplete))
+ {
+ Thread.Sleep(100);
+ }
+ DeviceProcessLogShow($"奶茶{orderLoc.GoodName}:配料{item.Key}:添加量{item.Value}");
+ }
+ }
+ }
+ }
+
+
+
+ public override void ReadData()
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void ResetProgram()
+ {
+ morkTM = null;
+ morkTM = new GVL_MorkTM();
+ }
+
+ private void WriteData(string address, object value)
+ {
+ EventBus.EventBus.GetInstance().Publish(new WriteModel() { DeviceId = DeviceId, Address = address, Value = value });
+ }
+
+ private void GetStatus(string key, Action action)
+ {
+ if (peripheralStatus.ContainsKey(key))
+ {
+ if (peripheralStatus[key] != null)
+ {
+ action?.Invoke(peripheralStatus[key]);
+ }
+ }
+ }
+
+ public override void SimOrder()
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void Stop()
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
\ No newline at end of file
diff --git a/BPASmartClient.MorkTM/GVL_MorkTM.cs b/BPASmartClient.MorkTM/GVL_MorkTM.cs
new file mode 100644
index 00000000..77df5d56
--- /dev/null
+++ b/BPASmartClient.MorkTM/GVL_MorkTM.cs
@@ -0,0 +1,33 @@
+using BPA.Models;
+using BPASmartClient.Device;
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.MorkTM
+{
+ public class GVL_MorkTM: IStatus
+ {
+ ///
+ /// 奶茶订单队列
+ ///
+ public ConcurrentQueue morkOrderPushesTeaWithMilk = new ConcurrentQueue();
+ ///
+ /// 当前正在制作的奶茶订单
+ ///
+ public OrderLocInfo CurrentOrderLoc = new OrderLocInfo();
+ ///
+ /// 奶茶配料的队列
+ ///
+ public Dictionary RecipesPushes = new Dictionary();
+ ///
+ ///
+ ///
+ [VariableMonitor("出料完成", "", "")]
+ public bool OutMaterialComplete { get; set; }
+
+ }
+}
diff --git a/BPASmartClient.MorkTM/Model/Alarms.cs b/BPASmartClient.MorkTM/Model/Alarms.cs
new file mode 100644
index 00000000..9456f648
--- /dev/null
+++ b/BPASmartClient.MorkTM/Model/Alarms.cs
@@ -0,0 +1,31 @@
+using Microsoft.Toolkit.Mvvm.ComponentModel;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.MorkTM.Model
+{
+ public class Alarms : ObservableObject
+ {
+ private string _id;
+ public string ID { get { return _id; } set { _id = value; OnPropertyChanged(); } }
+
+ private string _varName;
+ public string VarName { get { return _varName; } set { _varName = value; OnPropertyChanged(); } }
+
+ private string _plcAddress;
+ public string PLCAddress { get { return _plcAddress; } set { _plcAddress = value; OnPropertyChanged(); } }
+
+ private string _modbusTCP;
+ public string ModbusTCP { get { return _modbusTCP; } set { _modbusTCP = value; OnPropertyChanged(); } }
+
+ private string _value;
+ public string Value { get { return _value; } set { _value = value; OnPropertyChanged(); } }
+
+ private string _notes;
+ public string Notes { get { return _notes; } set { _notes = value; OnPropertyChanged(); } }
+ }
+}
diff --git a/BPASmartClient.MorkTM/Model/WritePar.cs b/BPASmartClient.MorkTM/Model/WritePar.cs
new file mode 100644
index 00000000..c05e762c
--- /dev/null
+++ b/BPASmartClient.MorkTM/Model/WritePar.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.MorkTM.Model
+{
+ public class WritePar
+ {
+ public string Address { get; set; }
+ public object Value { get; set; }
+ }
+}
diff --git a/BPASmartClient.MorkTM/OrderLocInfo.cs b/BPASmartClient.MorkTM/OrderLocInfo.cs
new file mode 100644
index 00000000..4f244667
--- /dev/null
+++ b/BPASmartClient.MorkTM/OrderLocInfo.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.MorkTM
+{
+ public class OrderLocInfo
+ {
+
+ public string SuborderId { get; set; }
+ public ushort RecipeNumber { get; set; }
+ public string GoodName { get; set; }
+
+ public Dictionary GoodPushes { get; set; }
+ }
+}
diff --git a/BPASmartClient.MorkTM/PolymerBatching.cs b/BPASmartClient.MorkTM/PolymerBatching.cs
new file mode 100644
index 00000000..cf6d36f6
--- /dev/null
+++ b/BPASmartClient.MorkTM/PolymerBatching.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.MorkTM
+{
+ public enum Material
+ {
+ Material_Top_1, Material_Top_2, Material_Top_3, Material_Top_4, Material_Top_5, Material_Top_6,
+ Material_Mid_1, Material_Mid_2, Material_Mid_3, Material_Mid_4, Material_Mid_5, Material_Mid_6, Material_Mid_7, Material_Mid_8, Material_Mid_9, Material_Mid_10,
+ Marerial_Bottom_1, Marerial_Bottom_2, Marerial_Bottom_3, Marerial_Top_4,Marerial_Bottom_5, Marerial_Bottom_6
+ }
+ public enum TeaStorageBox
+ {
+ TeaStorageBox_1, TeaStorageBox_2, TeaStorageBox_3, TeaStorageBox_4, TeaStorageBox_5, TeaStorageBox_6
+ }
+
+ public class PolymerBatching
+ {
+
+ }
+}
diff --git a/BPASmartClient.MorkTM/Properties/AssemblyInfo.cs b/BPASmartClient.MorkTM/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..e59a713c
--- /dev/null
+++ b/BPASmartClient.MorkTM/Properties/AssemblyInfo.cs
@@ -0,0 +1,16 @@
+using System.Runtime.InteropServices;
+
+[assembly: System.Windows.ThemeInfo(System.Windows.ResourceDictionaryLocation.None, System.Windows.ResourceDictionaryLocation.SourceAssembly)]
+
+// 在此类的 SDK 样式项目中,现在,在此文件中早前定义的几个程序集属性将在生成期间自动添加,并使用在项目属性中定义的值进行填充。有关包含的属性以及如何定制此过程的详细信息,请参阅
+// https://aka.ms/assembly-info-properties
+
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,请将该类型的 ComVisible
+// 属性设置为 true。
+
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于 typelib 的 ID。
+
+[assembly: Guid("a100db3c-23af-4bd5-991e-224a062d4f2d")]
diff --git a/BPASmartClient.MorkTM/Properties/Resources.Designer.cs b/BPASmartClient.MorkTM/Properties/Resources.Designer.cs
new file mode 100644
index 00000000..1631f5d2
--- /dev/null
+++ b/BPASmartClient.MorkTM/Properties/Resources.Designer.cs
@@ -0,0 +1,63 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+namespace BPASmartClient.MorkTM.Properties {
+ using System;
+
+
+ ///
+ /// 一个强类型的资源类,用于查找本地化的字符串等。
+ ///
+ // 此类是由 StronglyTypedResourceBuilder
+ // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+ // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+ // (以 /str 作为命令选项),或重新生成 VS 项目。
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// 返回此类使用的缓存的 ResourceManager 实例。
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BPASmartClient.MorkTM.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// 重写当前线程的 CurrentUICulture 属性,对
+ /// 使用此强类型资源类的所有资源查找执行重写。
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/BPASmartClient.MorkTM/Properties/Resources.resx b/BPASmartClient.MorkTM/Properties/Resources.resx
new file mode 100644
index 00000000..4fdb1b6a
--- /dev/null
+++ b/BPASmartClient.MorkTM/Properties/Resources.resx
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/BPASmartClient.MorkTM/Properties/Settings.Designer.cs b/BPASmartClient.MorkTM/Properties/Settings.Designer.cs
new file mode 100644
index 00000000..0275f2c3
--- /dev/null
+++ b/BPASmartClient.MorkTM/Properties/Settings.Designer.cs
@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+namespace BPASmartClient.MorkTM.Properties {
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/BPASmartClient.MorkTM/Properties/Settings.settings b/BPASmartClient.MorkTM/Properties/Settings.settings
new file mode 100644
index 00000000..049245f4
--- /dev/null
+++ b/BPASmartClient.MorkTM/Properties/Settings.settings
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/BPASmartClient.MorkTM/View/Debug.xaml b/BPASmartClient.MorkTM/View/Debug.xaml
new file mode 100644
index 00000000..2427db65
--- /dev/null
+++ b/BPASmartClient.MorkTM/View/Debug.xaml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/BPASmartClient.DosingSystem/View/DeviceListView.xaml.cs b/BPASmartClient.MorkTM/View/Debug.xaml.cs
similarity index 74%
rename from BPASmartClient.DosingSystem/View/DeviceListView.xaml.cs
rename to BPASmartClient.MorkTM/View/Debug.xaml.cs
index 16366e98..ccdb1641 100644
--- a/BPASmartClient.DosingSystem/View/DeviceListView.xaml.cs
+++ b/BPASmartClient.MorkTM/View/Debug.xaml.cs
@@ -13,14 +13,14 @@ using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
-namespace BPASmartClient.DosingSystem.View
+namespace BPASmartClient.MorkTM.View
{
///
- /// DeviceListView.xaml 的交互逻辑
+ /// Debug.xaml 的交互逻辑
///
- public partial class DeviceListView : UserControl
+ public partial class Debug : UserControl
{
- public DeviceListView()
+ public Debug()
{
InitializeComponent();
}
diff --git a/BPASmartClient.MorkTM/View/Monitor.xaml b/BPASmartClient.MorkTM/View/Monitor.xaml
new file mode 100644
index 00000000..9ac4f2c3
--- /dev/null
+++ b/BPASmartClient.MorkTM/View/Monitor.xaml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/BPASmartClient.DosingSystem/View/AlarmRecordView.xaml.cs b/BPASmartClient.MorkTM/View/Monitor.xaml.cs
similarity index 65%
rename from BPASmartClient.DosingSystem/View/AlarmRecordView.xaml.cs
rename to BPASmartClient.MorkTM/View/Monitor.xaml.cs
index d30b0210..5f33d59a 100644
--- a/BPASmartClient.DosingSystem/View/AlarmRecordView.xaml.cs
+++ b/BPASmartClient.MorkTM/View/Monitor.xaml.cs
@@ -13,16 +13,23 @@ using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
-namespace BPASmartClient.DosingSystem.View
+namespace BPASmartClient.MorkTM.View
{
///
- /// AlarmRecordView.xaml 的交互逻辑
+ /// Monitor.xaml 的交互逻辑
///
- public partial class AlarmRecordView : UserControl
+ public partial class Monitor : UserControl
{
- public AlarmRecordView()
+ public Monitor()
{
InitializeComponent();
+
+ }
+
+ private void gridProducts_LoadingRow(object sender, DataGridRowEventArgs e)
+ {
+
}
}
+
}
diff --git a/BPASmartClient.MorkTM/ViewModel/DebugViewModel.cs b/BPASmartClient.MorkTM/ViewModel/DebugViewModel.cs
new file mode 100644
index 00000000..1a8a82ee
--- /dev/null
+++ b/BPASmartClient.MorkTM/ViewModel/DebugViewModel.cs
@@ -0,0 +1,49 @@
+using Microsoft.Toolkit.Mvvm.ComponentModel;
+using Microsoft.Toolkit.Mvvm.Input;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.MorkTM.ViewModel
+{
+ public class DebugViewModel : ObservableObject
+ {
+ ///
+ /// 出料口集合
+ ///
+ public List Materials { get; set; } = new List();
+
+ ///
+ /// 奶茶
+ ///
+ public ObservableCollection TeaWithMilkType { get; set; }
+ ///
+ /// 出料
+ ///
+ public RelayCommand OutMaterials { get; set; }
+ ///
+ /// 转盘转动
+ ///
+ public RelayCommand TurnOn { get; set; }
+ public float MaertialsWight { get { return _maertialsWight; } set { _maertialsWight = value; OnPropertyChanged(); } }
+ private float _maertialsWight = 10;
+ public DebugViewModel()
+ {
+
+
+ foreach(TeaStorageBox code in Enum.GetValues(typeof(TeaStorageBox)))
+ {
+ Materials.Add(code.ToString());
+ }
+
+ foreach (Material materials in Enum.GetValues(typeof(Material)))
+ {
+ Materials.Add(materials.ToString());
+ }
+
+ }
+ }
+}
diff --git a/BPASmartClient.MorkTM/ViewModel/MonitorViewModel.cs b/BPASmartClient.MorkTM/ViewModel/MonitorViewModel.cs
new file mode 100644
index 00000000..0c502d8f
--- /dev/null
+++ b/BPASmartClient.MorkTM/ViewModel/MonitorViewModel.cs
@@ -0,0 +1,27 @@
+using BPASmartClient.MorkTM.Model;
+using Microsoft.Toolkit.Mvvm.ComponentModel;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.MorkTM.ViewModel
+{
+ public class MonitorViewModel: ObservableObject
+ {
+ public ObservableCollection alarms { get; set; } = new ObservableCollection();
+
+ public MonitorViewModel()
+ {
+ alarms.Add(new Alarms() { ID = "1", VarName = "1", ModbusTCP = "1", Notes = "1111", PLCAddress = "D1", Value = "33" });
+ alarms.Add(new Alarms() { ID = "2", VarName = "2", ModbusTCP = "2", Notes = "2222", PLCAddress = "D2", Value = "33" });
+ alarms.Add(new Alarms() { ID = "3", VarName = "3", ModbusTCP = "3", Notes = "3333", PLCAddress = "D2", Value = "33" });
+
+
+
+
+ }
+ }
+}
diff --git a/BPASmartClient.MorkT_HQ/BPASmartClient.MorkT_HQ.csproj b/BPASmartClient.MorkT_HQ/BPASmartClient.MorkTHQ.csproj
similarity index 95%
rename from BPASmartClient.MorkT_HQ/BPASmartClient.MorkT_HQ.csproj
rename to BPASmartClient.MorkT_HQ/BPASmartClient.MorkTHQ.csproj
index 89d5ed62..9498c495 100644
--- a/BPASmartClient.MorkT_HQ/BPASmartClient.MorkT_HQ.csproj
+++ b/BPASmartClient.MorkT_HQ/BPASmartClient.MorkTHQ.csproj
@@ -19,6 +19,7 @@
+
diff --git a/BPASmartClient.MorkT_HQ/Control_MorkT_HQ.cs b/BPASmartClient.MorkT_HQ/Control_MorkTHQ.cs
similarity index 68%
rename from BPASmartClient.MorkT_HQ/Control_MorkT_HQ.cs
rename to BPASmartClient.MorkT_HQ/Control_MorkTHQ.cs
index d4cef71f..6714be0c 100644
--- a/BPASmartClient.MorkT_HQ/Control_MorkT_HQ.cs
+++ b/BPASmartClient.MorkT_HQ/Control_MorkTHQ.cs
@@ -1,9 +1,11 @@
-using BPA.Message.Enum;
+using BPA.Message;
+using BPA.Message.Enum;
using BPASmartClient.Device;
using BPASmartClient.DRCoffee;
using BPASmartClient.EventBus;
using BPASmartClient.GSIceCream;
using BPASmartClient.Helper;
+using BPASmartClient.KLMCoffee.Protocal;
using BPASmartClient.Lebai;
using BPASmartClient.LebaiRobot;
using BPASmartClient.Message;
@@ -22,14 +24,14 @@ using System.Threading;
using System.Threading.Tasks;
using static BPASmartClient.EventBus.EventBus;
-namespace BPASmartClient.MorkT_HQ
+namespace BPASmartClient.MorkTHQ
{
- public class Control_MorkT_HQ : BaseDevice
+ public class Control_MorkTHQ : BaseDevice
{
public override global::BPA.Message.Enum.DeviceClientType DeviceType { get { return BPA.Message.Enum.DeviceClientType.MORKT; } }
- GLV_MorkT_HQ morkT = new GLV_MorkT_HQ();
-
+ GLV_MorkTHQ morkT = new GLV_MorkTHQ();
+ int[] devStatusBy = new int[2] { 0, 0 };
public override void DoMain()
{
@@ -40,7 +42,7 @@ namespace BPASmartClient.MorkT_HQ
IsHealth = true;
ServerInit();
DataParse();
- EventBus.EventBus.GetInstance().Subscribe(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
+ EventBus.EventBus.GetInstance().Subscribe(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{
if (morkT.MakeCoffeeOrder != null)
morkT.MakeCoffeeOrder.OrderStatus = 1;
@@ -55,7 +57,7 @@ namespace BPASmartClient.MorkT_HQ
public override void ResetProgram()
{
morkT = null;
- morkT = new GLV_MorkT_HQ();
+ morkT = new GLV_MorkTHQ();
}
@@ -72,34 +74,16 @@ namespace BPASmartClient.MorkT_HQ
public override void MainTask()
{
- if (morkT.waitMorkOrder != null)//更新订单取走状态
- {
- EventBus.EventBus.GetInstance().Publish(new LebaiRobot_GetInputEvent() { DeviceId = DeviceId, Pin = 0 }, (o) =>
- {
- if (o != null && o.Length > 0 && o[0] is bool res)
- {
- if (!res)
- {
- OrderChange(morkT.waitMorkOrder.SuborderId, ORDER_STATUS.COMPLETED_TAKE);
- DeviceProcessLogShow("订单取餐完成");
- morkT.waitMorkOrder = null;
- }
- }
- });
- }
+ //制作咖啡
MakeCoffeeProcess();
- EventBus.EventBus.GetInstance().Publish(new LebaiRobot_GetInputEvent { DeviceId = DeviceId, Pin = 0 },(o)=>
- {
- if(o != null && o.Length > 0 && o[0] is bool resultValue)
- {
- if(!resultValue)//取餐口有空余位置
- {
- MakeIceCreamProcess();
- MakeCoffeeComplete();
- }
- }
- });
-
+ //制作果汁
+ MakeJuiceProcess();
+ //制作冰淇淋
+ MakeIceCreamProcess();
+ //制作完取咖啡
+ MakeCoffeeComplete();
+
+
}
@@ -204,7 +188,7 @@ namespace BPASmartClient.MorkT_HQ
GetStatus("CoffeeStatus", new Action((o) =>
{
- if (o is DrCoffeeStatus coffeeStatus)
+ if (o is K95SysTemStatus coffeeStatus)
{
morkT.DrCoffeeStatus = coffeeStatus;
}
@@ -212,7 +196,7 @@ namespace BPASmartClient.MorkT_HQ
GetStatus("CoffeeAppStatus", new Action((o) =>
{
- if (o is DrCoffeeAppStatus appStatus)
+ if (o is TaskIndex appStatus)
{
morkT.CoffeeAppStatus = appStatus;
}
@@ -220,18 +204,26 @@ namespace BPASmartClient.MorkT_HQ
GetStatus("CoffeeWarning", new Action((o) =>
{
- if (o is DrCoffeeWarning coffeeWarning)
+ if (o is FaultMessage coffeeWarning)
{
morkT.CoffeeWarning = coffeeWarning;
}
}));
GetStatus("CoffeeFault", new Action((o) =>
{
- if (o is DrCoffeeFault coffeeFault)
+ if (o is UpkeepMessage coffeeFault)
{
morkT.CaffeeFault = coffeeFault;
}
}));
+ GetStatus("Coffeeprogress", new Action((o) =>
+ {
+ if (o is int coffeeFault)
+ {
+ morkT.Coffeeprogress = coffeeFault;
+ }
+ }));
+
GetStatus("SCChipIsConnect", new Action((o) =>
{
if (o is bool b)
@@ -239,6 +231,13 @@ namespace BPASmartClient.MorkT_HQ
morkT.SCChipIsConnect = b;
}
}));
+ GetStatus("JuiceIsConnect", new Action((o) =>
+ {
+ if (o is bool b)
+ {
+ morkT.JuiceIsConnect = b;
+ }
+ }));
}
@@ -333,6 +332,20 @@ namespace BPASmartClient.MorkT_HQ
});
}
break;
+ case GOODS_TYPE.JUICE:
+ if(morkT.morkOrderPushesIceCream.FirstOrDefault(p=>p.SuborderId == order?.MorkOrder.SuborderId) == null)
+ {
+ morkT.GuMake = order.MorkOrder.MakeID == "2";
+ morkT.morkOrderPushesJuice.Enqueue(new OrderLocInfo()
+ {
+ SuborderId = order.MorkOrder.SuborderId,
+ BatchingId = res.BatchingId,
+ Loc = loc_Goods,
+ GoodsName = order.MorkOrder.GoodsName,
+ SortNum = order.MorkOrder.SortNum
+ });
+ }
+ break;
case GOODS_TYPE.NEITHER:
DeviceProcessLogShow("未知的商品类型");
break;
@@ -371,6 +384,7 @@ namespace BPASmartClient.MorkT_HQ
}
}
+ #region 咖啡
///
/// 是否可以开始制作咖啡
///
@@ -397,7 +411,7 @@ namespace BPASmartClient.MorkT_HQ
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 10051}); //接咖啡后回原点
Wait();
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 }, (o) => { });
- EventBus.EventBus.GetInstance().Publish(new DRCoffee_MakeCoffeeEvent() {DeviceId = DeviceId, DrinkCode = (Model.咖啡机.Enum.DrCoffeeDrinksCode)int.Parse(orderLoc.Loc) });//接咖啡控制
+ EventBus.EventBus.GetInstance().Publish(new KLMCoffee_MakeCoffeeEvent() {DeviceId = DeviceId, DrinkCode = (Model.咖啡机.Enum.DrinkType)int.Parse(orderLoc.Loc) });//接咖啡控制
DeviceProcessLogShow($"发送咖啡机制作{orderLoc.Loc}!");
morkT.IsCoffeeMake = true; morkT.MakeCoffeeOrder = orderLoc;
}
@@ -450,50 +464,16 @@ namespace BPASmartClient.MorkT_HQ
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 },(o)=>{ });
OrderChange(order.SuborderId, ORDER_STATUS.COOKING);
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 10031 }); //SENCE_取咖啡杯
-
Wait();
- EventBus.EventBus.GetInstance().Publish(new SCChip_TakeCupEvent { DeviceId= DeviceId ,Cup = IC_CUP.CUP_COFFEE});//落碗控制
Thread.Sleep(500);
- DeviceProcessLogShow("尝试取咖啡杯!");
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 }, (o) => { });
- int count = 1;
- bool result = true;
- p:
- EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 10033 }); //SENCE_咖啡杯检测
- Wait();
- EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 }, (o) => { });
- EventBus.EventBus.GetInstance().Publish(new LebaiRobot_GetTCPInputEvent { DeviceId = DeviceId, Pin = 1 }, (o)=>
- {
- if(o != null && o.Length > 0 && o[0] is bool resultValue)
- {
- result = resultValue;
- }
- });
-
- if (!result)
- {
- if (count >= 3)
- {
- //退出循环回到初始位置
- DeviceProcessLogShow($"执行{count}次取咖啡杯,仍为成功,订单默认废弃,机器人回到初始位置!");
- EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 10050 }); //SENCE_咖啡杯回原点
- Wait();
- EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 }, (o) => { });
- morkT.GetCoffeeCup = false;
- return;
- }
- DeviceProcessLogShow("执行二次取咖啡杯");
- EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 10035 }); //SENCE_二次取咖啡杯
- Wait();
- EventBus.EventBus.GetInstance().Equals(new SCChip_TakeCupEvent { DeviceId = DeviceId, Cup = IC_CUP.CUP_COFFEE });//落碗控制
- EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 }, (o) => { });
- count++;
- goto p;
- }
+
morkT.GetCoffeeCup = true;
DeviceProcessLogShow("取咖啡杯完成");
}
+ #endregion
+ #region 冰淇淋
///
/// 冰淇淋是否可以开始制作
///
@@ -509,45 +489,40 @@ namespace BPASmartClient.MorkT_HQ
///
private void MakeIceCreamProcess()
{
- //if (IceCreamCanMake())
- //{
- if (morkT.morkOrderPushesIceCream.TryDequeue(out OrderLocInfo order))
- {
- DoIceCream(order);
- }
-
- //if(peripheralStatus.ContainsKey("IceCreamCurrentMode"))
- //{
- // if ((MORKI_MODE)peripheralStatus["IceCreamCurrentMode"] != MORKI_MODE.制冷模式) EventBus.EventBus.GetInstance().Publish(new GSIceCream_ModeSetEvent { DeviceId = DeviceId, Mode = MORKI_MODE.制冷模式 });
- //}
-
- //if(peripheralStatus.ContainsKey("IceCreamCXB"))
- //{
- // if ((byte)peripheralStatus["IceCreamCXB"] >= 86 && morkT.morkOrderPushesIceCream.Count > 0)//成型比大于86才可以制作
- // {
- // bool result = true;
- // EventBus.EventBus.GetInstance().Publish(new LebaiRobot_GetInputEvent { DeviceId = DeviceId, Pin = 3 }, (res) =>
- // {
- // if (res[0] is bool resultValue)
- // {
- // result = resultValue;
- // }
- // });
- // if (result)
- // {
- // if (morkT.IceIsOK) DeviceProcessLogShow("请检查冰淇淋出料口有无遮挡");
- // morkT.IceIsOK = false;
- // }
- // else if (morkT.morkOrderPushesIceCream.TryDequeue(out OrderLocInfo order))
- // {
- // morkT.IceIsOK = true;
- // DeviceProcessLogShow($"开始制作 [冰淇淋] 订单[{order.SortNum}]");
- // DoIceCream(order);
- // }
- // }
- //}
+ if (IceCreamCanMake())
+ {
+ if (peripheralStatus.ContainsKey("IceCreamCurrentMode"))
+ {
+ if ((MORKI_MODE)peripheralStatus["IceCreamCurrentMode"] != MORKI_MODE.制冷模式) EventBus.EventBus.GetInstance().Publish(new GSIceCream_ModeSetEvent { DeviceId = DeviceId, Mode = MORKI_MODE.制冷模式 });
+ }
- //}
+ if (peripheralStatus.ContainsKey("IceCreamCXB"))
+ {
+ if ((byte)peripheralStatus["IceCreamCXB"] >= 86 && morkT.morkOrderPushesIceCream.Count > 0)//成型比大于86才可以制作
+ {
+ bool result = true;
+ EventBus.EventBus.GetInstance().Publish(new LebaiRobot_GetInputEvent { DeviceId = DeviceId, Pin = 3 }, (res) =>
+ {
+ if (res[0] is bool resultValue)
+ {
+ result = resultValue;
+ }
+ });
+ if (result)
+ {
+ if (morkT.IceIsOK) DeviceProcessLogShow("请检查冰淇淋出料口有无遮挡");
+ morkT.IceIsOK = false;
+ }
+ else if (morkT.morkOrderPushesIceCream.TryDequeue(out OrderLocInfo order))
+ {
+ morkT.IceIsOK = true;
+ DeviceProcessLogShow($"开始制作 [冰淇淋] 订单[{order.SortNum}]");
+ DoIceCream(order);
+ }
+ }
+ }
+
+ }
}
@@ -557,12 +532,9 @@ namespace BPASmartClient.MorkT_HQ
private void DoIceCream(OrderLocInfo order)
{
GetIceCreamCup();
- CheckICeCreaCup();
- if(morkT.GetIceCreamCup)
- {
- GetIceCream(order);
- PutIceCream(order);
- }
+ //CheckICeCreaCup();
+ GetIceCream(order);
+ PutIceCream(order);
}
@@ -575,7 +547,6 @@ namespace BPASmartClient.MorkT_HQ
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }, (o) => { });
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 10032 }); //SENCE_取冰淇淋杯
Wait();
- EventBus.EventBus.GetInstance().Publish(new SCChip_TakeCupEvent { DeviceId = DeviceId, Cup = IC_CUP.CUP_ICECREAM });//落碗控制
Thread.Sleep(500);
DeviceProcessLogShow("尝试取冰淇淋杯!");
@@ -657,37 +628,37 @@ namespace BPASmartClient.MorkT_HQ
Wait();
bool doItResult = true;
- //出料
- EventBus.EventBus.GetInstance().Publish(new SCChip_RotorSwitchEvent { DeviceId = DeviceId, TurnOn = true });
- Thread.Sleep(500);
- EventBus.EventBus.GetInstance().Publish(new SCChip_RotorSwitchEvent { DeviceId = DeviceId, TurnOn = false });
- Thread.Sleep(500);
- EventBus.EventBus.GetInstance().Publish(new SCChip_MakeIceCreamEvent { DeviceId = DeviceId, SteeringEngine = IC_SE.SE_2 });//冰淇淋出料
- DeviceProcessLogShow("开始等待6s");
- Thread.Sleep(5000);
+ ////出料
+ //EventBus.EventBus.GetInstance().Publish(new SCChip_RotorSwitchEvent { DeviceId = DeviceId, TurnOn = true });
+ //Thread.Sleep(500);
+ //EventBus.EventBus.GetInstance().Publish(new SCChip_RotorSwitchEvent { DeviceId = DeviceId, TurnOn = false });
+ //Thread.Sleep(500);
+ //EventBus.EventBus.GetInstance().Publish(new SCChip_MakeIceCreamEvent { DeviceId = DeviceId, SteeringEngine = IC_SE.SE_2 });//冰淇淋出料
+ //DeviceProcessLogShow("开始等待6s");
+ //Thread.Sleep(5000);
+
+ // 出料
+ EventBus.EventBus.GetInstance().Publish(new GSIceCream_DischargeEvent { DeviceId = DeviceId }, (o) =>
+ {
+ doItResult = (bool)o[0];
+ });
+ if (doItResult)
+ {
+ IceCreamCookCheck();
+ }
+ else
+ {
+ int count_1 = 0;
- //出料
- //EventBus.EventBus.GetInstance().Publish(new GSIceCream_DischargeEvent { DeviceId = DeviceId },(o)=>
- //{
- // doItResult = (bool)o[0];
- //});
- //if (doItResult)
- //{
- // IceCreamCookCheck();
- //}
- //else
- //{
- // int count_1 = 0;
-
- // while ((byte)peripheralStatus["IceCreamCXB"] <= 86)
- // {
- // Thread.Sleep(5);
- // count_1++;
- // if (count_1 >= 2000)
- // break;
- // }
- // IceCreamCookCheck();
- //}
+ while ((byte)peripheralStatus["IceCreamCXB"] <= 86)
+ {
+ Thread.Sleep(5);
+ count_1++;
+ if (count_1 >= 2000)
+ break;
+ }
+ IceCreamCookCheck();
+ }
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 }, (o) => { });
}
@@ -757,10 +728,138 @@ namespace BPASmartClient.MorkT_HQ
Thread.Sleep(5000);
}
+ #endregion
+ #region 果汁
+ ///
+ /// 制作果汁流程
+ ///
+ private void MakeJuiceProcess()
+ {
+ if(morkT.morkOrderPushesJuice.TryDequeue(out OrderLocInfo order))
+ {
+ OrderChange(order.SuborderId, BPA.Message.Enum.ORDER_STATUS.COOKING);
+ EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 11111 });//SENCE_取果汁杯位置
+ int JuicerNum1 = int.Parse(order.Loc);
+ switch (JuicerNum1)
+ {
+ case 52:
+ if (morkT.GuMake)
+ {
+ morkT.JuicerNum = 0x00;
+ }
+ else
+ {
+ morkT.JuicerNum = 0x01;
+ }
+ EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = Lebai_HQ.SENCE_接果汁公共位置 });
+ Wait();
+
+ EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = Lebai_HQ.SENCE_接1号果汁位置 });
+ Wait();
+ break;
+ case 53:
+ if (morkT.GuMake)
+ {
+ morkT.JuicerNum = 0x02;
+ }
+ else
+ {
+ morkT.JuicerNum = 0x03;
+ }
+ EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = Lebai_HQ.SENCE_接果汁公共位置 });
+ Wait();
+
+ EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = Lebai_HQ.SENCE_接2号果汁位置 });
+ Wait();
+ break;
+ case 54:
+ if (morkT.GuMake)
+ {
+ morkT.JuicerNum = 0x04;
+ }
+ else
+ {
+ morkT.JuicerNum = 0x05;
+ }
+ EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = Lebai_HQ.SENCE_接果汁公共位置 });
+ Wait();
+
+ EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = Lebai_HQ.SENCE_接3号果汁位置 });
+ Wait();
+ break;
+ case 55:
+ if (morkT.GuMake)
+ {
+ morkT.JuicerNum = 0x06;
+ }
+ else
+ {
+ morkT.JuicerNum = 0x07;
+ }
+ EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = Lebai_HQ.SENCE_接果汁公共位置 });
+ Wait();
+
+ EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = Lebai_HQ.SENCE_接4号果汁位置 });
+ Wait();
+ break;
+ default:
+ morkT.JuicerNum = 0x00;
+ EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = Lebai_HQ.SENCE_接果汁公共位置 });
+ Wait();
+
+ EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = Lebai_HQ.SENCE_接1号果汁位置 });
+ Wait();
+ break;
+ }
+ var devStatus = GetDeviceStatus("GetDeviceStatus");
+ var devStatus1 = Convert.ToString(devStatus[0], 2);
+ var devStatus2 = devStatus[1];
+
+ if (devStatus1.IndexOf("0") == 1 && devStatus2 == 0)
+ {
+ EventBus.EventBus.GetInstance().Publish(new WriteJuicer() { Value = morkT.JuicerNum });
+ Thread.Sleep(100);
+ devStatusBy = GetDeviceStatus("GetDeviceStatus");
+ while (!(devStatusBy[1] == 0))
+ {
+ Thread.Sleep(100);
+ devStatusBy = GetDeviceStatus("GetDeviceStatus");
+ while (devStatusBy.Length != 2)
+ {
+ Thread.Sleep(100);
+ devStatusBy = GetDeviceStatus("GetDeviceStatus");
+ }
+ }
+ devStatusBy = GetDeviceStatus("GetDeviceStatus");
+ Thread.Sleep(5000);
+ EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = Lebai_HQ.SENCE_放果汁杯位置后回原点 });
+ Wait();
+
+ OrderChange(order.SuborderId, BPA.Message.Enum.ORDER_STATUS.COMPLETED_TAKE);
+ MessageLog.GetInstance.Show("果汁制作完成");
+ }
+ }
+
+
+
+ }
+
+ private T GetDeviceStatus(string key)
+ {
+ if (peripheralStatus.ContainsKey(key))
+ {
+ if (peripheralStatus[key] != null)
+ {
+ return (T)(peripheralStatus[key]);
+ }
+ }
+ return default;
+ }
+ #endregion
public override void SimOrder()
{
- throw new NotImplementedException();
+
}
}
}
diff --git a/BPASmartClient.MorkT_HQ/GLV_MorkT_HQ.cs b/BPASmartClient.MorkT_HQ/GLV_MorkTHQ.cs
similarity index 64%
rename from BPASmartClient.MorkT_HQ/GLV_MorkT_HQ.cs
rename to BPASmartClient.MorkT_HQ/GLV_MorkTHQ.cs
index 1b337a82..619d5703 100644
--- a/BPASmartClient.MorkT_HQ/GLV_MorkT_HQ.cs
+++ b/BPASmartClient.MorkT_HQ/GLV_MorkTHQ.cs
@@ -1,6 +1,7 @@
using BPASmartClient.Device;
using BPASmartClient.DRCoffee;
using BPASmartClient.GSIceCream;
+using BPASmartClient.KLMCoffee.Protocal;
using BPASmartClient.LebaiRobot;
using BPASmartClient.Model.冰淇淋.Enum;
using Robotc;
@@ -11,9 +12,9 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace BPASmartClient.MorkT_HQ
+namespace BPASmartClient.MorkTHQ
{
- public class GLV_MorkT_HQ:IStatus
+ public class GLV_MorkTHQ:IStatus
{
///
/// 咖啡订单队列
@@ -25,6 +26,10 @@ namespace BPASmartClient.MorkT_HQ
///
public ConcurrentQueue morkOrderPushesIceCream = new ConcurrentQueue();
///
+ /// 果汁订单队列
+ ///
+ public ConcurrentQueue morkOrderPushesJuice = new ConcurrentQueue();
+ ///
/// 等待取餐订单
///
public OrderLocInfo waitMorkOrder = null;
@@ -57,6 +62,16 @@ namespace BPASmartClient.MorkT_HQ
///
public bool GetIceCreamCup;
+ ///
+ /// 果汁机做法,true:热饮,false:冷饮
+ ///
+ public bool GuMake = false;
+
+ ///
+ /// 果汁机控制信号
+ ///
+ public byte JuicerNum;
+
#region
[VariableMonitor("机器人连接状态")]
@@ -99,20 +114,47 @@ namespace BPASmartClient.MorkT_HQ
public bool CoffeeIsConnected { get; set; }
[VariableMonitor("咖啡机状态")]
- public DrCoffeeStatus DrCoffeeStatus { get; set; }
+ public K95SysTemStatus DrCoffeeStatus { get; set; }
[VariableMonitor("咖啡机应用状态")]
- public DrCoffeeAppStatus CoffeeAppStatus { get; set; }
+ public TaskIndex CoffeeAppStatus { get; set; }
[VariableMonitor("咖啡机告警")]
- public DrCoffeeWarning CoffeeWarning { get; set; }
+ public FaultMessage CoffeeWarning { get; set; }
[VariableMonitor("咖啡机故障")]
- public DrCoffeeFault CaffeeFault { get; set; }
+ public UpkeepMessage CaffeeFault { get; set; }
+
+ [VariableMonitor("咖啡机制作进度")]
+ public int Coffeeprogress { get; set; }
[VariableMonitor("单片机连接状态")]
public bool SCChipIsConnect { get; set; }
+
+ [VariableMonitor("果汁机连接状态")]
+ public bool JuiceIsConnect { get; set; }
+ #endregion
+ }
+
+ public class Lebai_HQ
+ {
+ #region 环球设备
+ public const int SENCE_取咖啡杯 = 10001;
+ public const int SENCE_取冰淇淋杯 = 10002;
+ public const int SENCE_接咖啡后回原点 = 10003;
+ public const int SENCE_取咖啡出餐 = 10004;
+ public const int SENCE_接1号冰淇淋 = 10005;
+ public const int SENCE_放冰淇淋位置 = 10006;
+ public const int SENCE_取果汁杯位置 = 10007;
+ public const int SENCE_接果汁公共位置 = 10008;
+ public const int SENCE_接1号果汁位置 = 10009;
+ public const int SENCE_接2号果汁位置 = 10010;
+ public const int SENCE_接3号果汁位置 = 10011;
+ public const int SENCE_接4号果汁位置 = 10012;
+ public const int SENCE_放果汁杯位置后回原点 = 10013;
+
+
#endregion
}
}
diff --git a/BPASmartClient.MorkT_HQ/OrderLocInfo.cs b/BPASmartClient.MorkT_HQ/OrderLocInfo.cs
index 4e78cecd..ee011066 100644
--- a/BPASmartClient.MorkT_HQ/OrderLocInfo.cs
+++ b/BPASmartClient.MorkT_HQ/OrderLocInfo.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace BPASmartClient.MorkT_HQ
+namespace BPASmartClient.MorkTHQ
{
public class OrderLocInfo
{
@@ -16,7 +16,7 @@ namespace BPASmartClient.MorkT_HQ
public int OrderStatus { get; set; }
-
+ public string MakeID { get; set; }
public OrderLocInfo()
{
OrderStatus = 0;
diff --git a/BPASmartClient.MorkT_HQ/PolymerBatching.cs b/BPASmartClient.MorkT_HQ/PolymerBatching.cs
index 66a41ab5..0d163ceb 100644
--- a/BPASmartClient.MorkT_HQ/PolymerBatching.cs
+++ b/BPASmartClient.MorkT_HQ/PolymerBatching.cs
@@ -8,7 +8,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace BPASmartClient.MorkT_HQ
+namespace BPASmartClient.MorkTHQ
{
public enum GOODS_TYPE
{
@@ -29,6 +29,10 @@ namespace BPASmartClient.MorkT_HQ
internal const string ICE_MAIN_BATCHIN1_LOC = "52";
internal const string ICE_MAIN_BATCHIN2_LOC = "53";
internal const string ICE_MAIN_BATCHIN3_LOC = "54";
+ //internal const string Juicer_MAIN_BATCHIN1_LOC = "52";
+ //internal const string Juicer_MAIN_BATCHIN2_LOC = "53";
+ //internal const string Juicer_MAIN_BATCHIN3_LOC = "54";
+ //internal const string Juicer_MAIN_BATCHIN4_LOC = "55";
internal const string COFFEE_HOLDER_LOC = "30";
internal const string ICE_HOLDER_LOC = "51";
public static Dictionary GOODS_TYPES = new Dictionary() {
diff --git a/BPASmartClient.MorkT_HQ/View/DebugView.xaml b/BPASmartClient.MorkT_HQ/View/DebugView.xaml
index a8bf758c..30cf3490 100644
--- a/BPASmartClient.MorkT_HQ/View/DebugView.xaml
+++ b/BPASmartClient.MorkT_HQ/View/DebugView.xaml
@@ -1,9 +1,9 @@
-
@@ -25,7 +25,7 @@
-
+
@@ -198,6 +198,7 @@
+
@@ -209,20 +210,23 @@
- 应用状态
+ 制作任务
+ Text="{Binding CoffeeAppStatus}" Height="23"/>
告警信息
- 故障信息
+ Text="{Binding CoffeeWarning}" />
+ 保养信息
+ Text="{Binding CoffeeFault}" Height="22" Width="60" />
+
+
@@ -238,28 +242,41 @@
Command="{}"
Content="停止制作"/>
-
- 模式
-
-
-
+
-
-
+ HorizontalAlignment="Left" >
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
diff --git a/BPASmartClient.MorkT_HQ/View/DebugView.xaml.cs b/BPASmartClient.MorkT_HQ/View/DebugView.xaml.cs
index aca7442d..9db7f7df 100644
--- a/BPASmartClient.MorkT_HQ/View/DebugView.xaml.cs
+++ b/BPASmartClient.MorkT_HQ/View/DebugView.xaml.cs
@@ -14,7 +14,7 @@ using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
-namespace BPASmartClient.MorkT_HQ.View
+namespace BPASmartClient.MorkTHQ.View
{
///
/// MorkT_DebugView.xaml 的交互逻辑
diff --git a/BPASmartClient.MorkT_HQ/View/Monitor.xaml b/BPASmartClient.MorkT_HQ/View/Monitor.xaml
index da47e12b..edc24d3b 100644
--- a/BPASmartClient.MorkT_HQ/View/Monitor.xaml
+++ b/BPASmartClient.MorkT_HQ/View/Monitor.xaml
@@ -1,10 +1,10 @@
-
diff --git a/BPASmartClient.MorkT_HQ/View/Monitor.xaml.cs b/BPASmartClient.MorkT_HQ/View/Monitor.xaml.cs
index 4d199f56..2c9e1aee 100644
--- a/BPASmartClient.MorkT_HQ/View/Monitor.xaml.cs
+++ b/BPASmartClient.MorkT_HQ/View/Monitor.xaml.cs
@@ -14,7 +14,7 @@ using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
-namespace BPASmartClient.MorkT_HQ.View
+namespace BPASmartClient.MorkTHQ.View
{
///
/// Monitor.xaml 的交互逻辑
diff --git a/BPASmartClient.MorkT_HQ/View/ParSer.xaml b/BPASmartClient.MorkT_HQ/View/ParSer.xaml
index ef78b56e..f1cf31e2 100644
--- a/BPASmartClient.MorkT_HQ/View/ParSer.xaml
+++ b/BPASmartClient.MorkT_HQ/View/ParSer.xaml
@@ -1,9 +1,9 @@
-
diff --git a/BPASmartClient.MorkT_HQ/View/ParSer.xaml.cs b/BPASmartClient.MorkT_HQ/View/ParSer.xaml.cs
index e1eba1f9..29cc49c1 100644
--- a/BPASmartClient.MorkT_HQ/View/ParSer.xaml.cs
+++ b/BPASmartClient.MorkT_HQ/View/ParSer.xaml.cs
@@ -13,7 +13,7 @@ using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
-namespace BPASmartClient.MorkT_HQ.View
+namespace BPASmartClient.MorkTHQ.View
{
///
/// ParSer.xaml 的交互逻辑
diff --git a/BPASmartClient.MorkT_HQ/ViewModel/DebugViewModel.cs b/BPASmartClient.MorkT_HQ/ViewModel/DebugViewModel.cs
index 03514ccf..9f90fa68 100644
--- a/BPASmartClient.MorkT_HQ/ViewModel/DebugViewModel.cs
+++ b/BPASmartClient.MorkT_HQ/ViewModel/DebugViewModel.cs
@@ -20,7 +20,7 @@ using System.Collections.ObjectModel;
using System.Linq;
using System.Threading;
-namespace BPASmartClient.MorkT_HQ.ViewModel
+namespace BPASmartClient.MorkTHQ.ViewModel
{
public class DebugViewModel : ObservableObject
{
@@ -124,7 +124,7 @@ namespace BPASmartClient.MorkT_HQ.ViewModel
private void Button_MakeIceCream()
{
-
+ EventBus.EventBus.GetInstance().Publish(new GSIceCream_DischargeEvent { DeviceId = DeviceId });
}
private void Button_SetIceCreamModel()
{
@@ -147,19 +147,21 @@ namespace BPASmartClient.MorkT_HQ.ViewModel
///
/// 应用状态
///
- public string AppStatus { get { return _appStatus; } set { _appStatus = value; OnPropertyChanged(); } }
- private string _appStatus { get; set; }
+ public string CoffeeAppStatus { get { return _coffeAappStatus; } set { _coffeAappStatus = value; OnPropertyChanged(); } }
+ private string _coffeAappStatus { get; set; }
///
/// 告警
///
- public string Warning { get { return _warning; } set { _warning = value; OnPropertyChanged(); } }
- public string _warning { get; set; }
+ public string CoffeeWarning { get { return _warning; } set { _warning = value; OnPropertyChanged(); } }
+ private string _warning { get; set; }
///
/// 故障信息
///
- public string CaffeeFault { get { return _caffeeFault; } set { _caffeeFault = value; OnPropertyChanged(); } }
- public string _caffeeFault { get; set; }
+ public string CoffeeFault { get { return _coffeeFault; } set { _coffeeFault = value; OnPropertyChanged(); } }
+ private string _coffeeFault { get; set; }
+ public string Coffeeprogress { get { return _coffeeprogress; } set { _coffeeprogress = value; OnPropertyChanged(); } }
+ private string _coffeeprogress { get; set; }
public List Coffees { get; set; } = new List();
public string SelectedCoffee { get; set; }
@@ -235,6 +237,65 @@ namespace BPASmartClient.MorkT_HQ.ViewModel
#endregion
+ #region 果汁机
+ ///
+ /// 果汁机连接状态
+ ///
+ public string JuiceIsConnect { get { return _juiceIsConnect; } set { _juiceIsConnect = value; OnPropertyChanged(); } }
+ private string _juiceIsConnect { get; set; }
+
+ public List Juice { get; set; } = new List() { "果汁1", "果汁2", "果汁3", "果汁4" };
+ public string SelectedJuice { get; set; } = "果汁1";
+
+ public List Temperature { get; set; } = new List() { "冷", "热" };
+
+ public string SelectedTemperature { get; set; } = "冷";
+
+ public RelayCommand MakeJuiceCommand { get; set; }
+
+ private void MakeJuice()
+ {
+ switch (SelectedJuice)
+ {
+ case "果汁1":
+ if (SelectedTemperature == "冷")
+ {
+ MakeJuiceEvent(0x01);
+ }
+ else MakeJuiceEvent(0x00);
+ break;
+ case "果汁2":
+ if (SelectedTemperature == "冷")
+ {
+ MakeJuiceEvent(0x03);
+ }
+ else MakeJuiceEvent(0x02);
+ break;
+ case "果汁3":
+ if (SelectedTemperature == "冷")
+ {
+ MakeJuiceEvent(0x05);
+ }
+ else MakeJuiceEvent(0x04);
+ break;
+ case "果汁4":
+ if (SelectedTemperature == "冷")
+ {
+ MakeJuiceEvent(0x07);
+ }
+ else MakeJuiceEvent(0x06);
+ break;
+ default:
+ MakeJuiceEvent(0x00);
+ break;
+ }
+ }
+ private void MakeJuiceEvent(byte b)
+ {
+ EventBus.EventBus.GetInstance().Publish(new WriteJuicer { DeviceId = DeviceId, Value = b });
+ }
+ #endregion
+
///
/// 设备ID
///
@@ -266,7 +327,9 @@ namespace BPASmartClient.MorkT_HQ.ViewModel
Button_SCChipDischarge();
});
- foreach (DrCoffeeDrinksCode code in Enum.GetValues(typeof(DrCoffeeDrinksCode)))
+ MakeJuiceCommand = new RelayCommand(MakeJuice);
+
+ foreach (DrinkType code in Enum.GetValues(typeof(DrinkType)))
{
Coffees.Add(code.ToString());
}
@@ -283,9 +346,11 @@ namespace BPASmartClient.MorkT_HQ.ViewModel
}
SelecteIceCreamdMode = IceCreamModes[0];
+
+
Plugin.GetInstance()?.GetPlugin()?.GetDevices().ForEach(device =>
{
- if (device.Name == "MorkT") DeviceId = device.DeviceId
+ if (device.Name == "MorkTHQ") DeviceId = device.DeviceId
;
});
ThreadManage.GetInstance().StartLong(new Action(() =>
@@ -299,13 +364,15 @@ namespace BPASmartClient.MorkT_HQ.ViewModel
IceCreamConnected = variableMonitors.FirstOrDefault(p => p.Notes == "冰淇淋连接状态").CurrentValue == "True" ? "已连接" : "未连接";
CoffeeConnected = variableMonitors.FirstOrDefault(p => p.Notes == "咖啡机连接状态").CurrentValue == "True" ? "已连接" : "未连接";
SCChipIsConnect = variableMonitors.FirstOrDefault(p => p.Notes == "单片机连接状态").CurrentValue == "True" ? "已连接" : "未连接";
+ JuiceIsConnect = variableMonitors.FirstOrDefault(p => p.Notes == "果汁机连接状态").CurrentValue == "True" ? "已连接" : "未连接";
RobotMode = variableMonitors.FirstOrDefault(p => p.Notes == "机器人状态").CurrentValue;
CoffeeStatus = variableMonitors.FirstOrDefault(p => p.Notes == "咖啡机状态").CurrentValue;
- AppStatus = variableMonitors.FirstOrDefault(p => p.Notes == "咖啡机应用状态").CurrentValue;
- Warning = variableMonitors.FirstOrDefault(p => p.Notes == "咖啡机告警").CurrentValue;
- CaffeeFault = variableMonitors.FirstOrDefault(p => p.Notes == "咖啡机故障").CurrentValue;
+ CoffeeAppStatus = variableMonitors.FirstOrDefault(p => p.Notes == "咖啡机应用状态").CurrentValue;
+ CoffeeWarning = variableMonitors.FirstOrDefault(p => p.Notes == "咖啡机告警").CurrentValue;
+ CoffeeFault = variableMonitors.FirstOrDefault(p => p.Notes == "咖啡机故障").CurrentValue;
+ Coffeeprogress = variableMonitors.FirstOrDefault(p => p.Notes == "咖啡机制作进度").CurrentValue;
YLWD = variableMonitors.FirstOrDefault(p => p.Notes == "冰淇淋机器预冷温度").CurrentValue;
HQWD = variableMonitors.FirstOrDefault(p => p.Notes == "冰淇淋机器回气温度").CurrentValue;
diff --git a/BPASmartClient.MorkT_HQ/ViewModel/MonitorViewModel.cs b/BPASmartClient.MorkT_HQ/ViewModel/MonitorViewModel.cs
index 0cb556be..722758bd 100644
--- a/BPASmartClient.MorkT_HQ/ViewModel/MonitorViewModel.cs
+++ b/BPASmartClient.MorkT_HQ/ViewModel/MonitorViewModel.cs
@@ -12,7 +12,7 @@ using System.Threading.Tasks;
using System.Windows.Data;
using System.Windows.Media;
-namespace BPASmartClient.MorkT_HQ.ViewModel
+namespace BPASmartClient.MorkTHQ.ViewModel
{
public class MonitorViewModel: ObservableObject
diff --git a/BPASmartClient.SCChip/CommandHandler.cs b/BPASmartClient.SCChip/CommandHandler.cs
index e46f40e6..2719d011 100644
--- a/BPASmartClient.SCChip/CommandHandler.cs
+++ b/BPASmartClient.SCChip/CommandHandler.cs
@@ -1,5 +1,6 @@
using BPASmartClient.EventBus;
+using BPASmartClient.Message;
using BPASmartClient.Model.单片机;
using BPASmartClient.Model.单片机.Enum;
using BPASmartClient.SCChip;
@@ -148,6 +149,7 @@ namespace BPASmartClient.SCChip
package.Cmd = IC_CMD.TAKE_CUP;
package.Value = (byte)(@event as SCChip_TakeCupEvent).Cup;
commProxy.SendData(StructureToByte(package));
+ MessageLog.GetInstance.Show($"发送落杯指令--{(@event as SCChip_TakeCupEvent).Cup}");
bool wait = true;
var waitTimeout = DateTime.Now.AddSeconds(3);
@@ -166,7 +168,7 @@ namespace BPASmartClient.SCChip
break;
}
}
- Thread.Sleep(10);
+ Thread.Sleep(50);
}
}
diff --git a/BPASmartClient.SCChip/ICChipMachine.cs b/BPASmartClient.SCChip/ICChipMachine.cs
index 62aa5d17..3e1d03ab 100644
--- a/BPASmartClient.SCChip/ICChipMachine.cs
+++ b/BPASmartClient.SCChip/ICChipMachine.cs
@@ -144,7 +144,7 @@ namespace BPASmartClient.SCChip
}
continue;
}
- Thread.Sleep(5);
+ Thread.Sleep(10);
}
///
@@ -281,7 +281,7 @@ namespace BPASmartClient.SCChip
package.Cmd = IC_CMD.TAKE_CUP;
package.Value = (byte)(@event as SCChip_TakeCupEvent).Cup;
commProxy.SendData(StructureToByte(package));
-
+ MessageLog.GetInstance.Show($"发送落杯指令--{(@event as SCChip_TakeCupEvent).Cup}");
bool wait = true;
var waitTimeout = DateTime.Now.AddSeconds(3);
while (wait)
@@ -351,7 +351,7 @@ namespace BPASmartClient.SCChip
}
Thread.Sleep(10);
}
- Thread.Sleep(1700);
+ Thread.Sleep(1800);
switch ((IC_SE)(@event as SCChip_MakeIceCreamEvent).SteeringEngine)
{
case IC_SE.SE_1:
diff --git a/BPASmartClient/BPASmartClient.csproj b/BPASmartClient/BPASmartClient.csproj
index d18fa5e3..c5213560 100644
--- a/BPASmartClient/BPASmartClient.csproj
+++ b/BPASmartClient/BPASmartClient.csproj
@@ -36,11 +36,12 @@
+
-
-
+
+
diff --git a/DosingSystem/App.xaml.cs b/DosingSystem/App.xaml.cs
index d56ccc6f..e8d78008 100644
--- a/DosingSystem/App.xaml.cs
+++ b/DosingSystem/App.xaml.cs
@@ -129,6 +129,8 @@ namespace BPASmartClient.DosingSystem
});
+
+
MenuManage.GetInstance.menuModels.Add(new MenuModel()
{
MainMenuIcon = "",
diff --git a/FryPot_DosingSystem/App.xaml b/FryPot_DosingSystem/App.xaml
index e4b7fbc7..b23b0141 100644
--- a/FryPot_DosingSystem/App.xaml
+++ b/FryPot_DosingSystem/App.xaml
@@ -3,7 +3,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:FryPot_DosingSystem" xmlns:con="clr-namespace:System.Drawing;assembly=netstandard"
xmlns:con1="clr-namespace:BPASmartClient.CustomResource.Converters;assembly=BPASmartClient.CustomResource"
- StartupUri="View/MainWindow.xaml">
+ >
@@ -23,6 +23,7 @@
+
diff --git a/FryPot_DosingSystem/App.xaml.cs b/FryPot_DosingSystem/App.xaml.cs
index 241366aa..ec22c536 100644
--- a/FryPot_DosingSystem/App.xaml.cs
+++ b/FryPot_DosingSystem/App.xaml.cs
@@ -1,5 +1,15 @@
-using System;
+using BPASmartClient.AGV.Feedback;
+using BPASmartClient.CustomResource.Pages.Enums;
+using BPASmartClient.CustomResource.Pages.Model;
+using BPASmartClient.CustomResource.Pages.View;
+using BPASmartClient.Helper;
+using BPASmartClient.HubHelper;
+using FryPot_DosingSystem.Control;
+using FryPot_DosingSystem.Model;
+using Newtonsoft.Json;
+using System;
using System.Collections.Generic;
+using System.Collections.ObjectModel;
using System.Configuration;
using System.Data;
using System.Linq;
@@ -13,5 +23,180 @@ namespace FryPot_DosingSystem
///
public partial class App : Application
{
+ protected override void OnStartup(StartupEventArgs e)
+ {
+ base.OnStartup(e);
+ MenuInite();
+ LoginDataInite();
+
+ MainView mv = new MainView();
+ LoginView lv = new LoginView();
+ var res = lv.ShowDialog();
+ if (res != null && res == true)
+ {
+ mv.Show();
+ DeviceOperate deviceOperate = DeviceOperate.GetInstance;//开启实时PLC数据读取
+ DosingLogicControl logigControl = DosingLogicControl.GetInstance;//开启逻辑控制任务程序
+ }
+ else
+ mv.Close();
+
+
+ HubHelper.GetInstance.Report = new Action((o) =>
+ {
+ var res = JsonConvert.DeserializeObject(o.ToString());
+ });
+
+ HubHelper.GetInstance.Upstreamrequest = new Action((o) =>
+ {
+ var res = JsonConvert.DeserializeObject(o.ToString());
+ });
+
+ HubHelper.GetInstance.Connect("192.168.1.99", 8089);
+
+ }
+ protected override void OnExit(ExitEventArgs e)
+ {
+ base.OnExit(e);
+ Json.Save();
+ MessageLog.GetInstance.LogSave();
+ }
+ private void MenuInite()
+ {
+ #region 配方管理菜单
+ ObservableCollection RecipeManage = new ObservableCollection();
+ RecipeManage.Add(new SubMenumodel()
+ {
+ SubMenuName = "配方管理",
+ SubMenuPermission = new Permission[] { Permission.管理员, Permission.技术员 },
+ AssemblyName = "FryPot_DosingSystem",
+ ToggleWindowPath = "View.RecipeSetView"
+ });
+
+ RecipeManage.Add(new SubMenumodel()
+ {
+ SubMenuName = "配方下发",
+ SubMenuPermission = new Permission[] { Permission.操作员, Permission.管理员, Permission.技术员 },
+ AssemblyName = "FryPot_DosingSystem",
+ ToggleWindowPath = "View.RecipeSendDownView"
+ });
+
+ MenuManage.GetInstance.menuModels.Add(new MenuModel()
+ {
+ MainMenuIcon = "",
+ MainMenuName = "配方管理",
+ Alias = "Recipe Management",
+ MainMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.技术员 },
+ subMenumodels = RecipeManage,
+ });
+ #endregion
+
+ #region 消息日志
+ ObservableCollection InfoLog = new ObservableCollection();
+ InfoLog.Add(new SubMenumodel()
+ {
+ SubMenuName = "操作日志",
+ SubMenuPermission = new Permission[] { Permission.操作员, Permission.管理员, Permission.技术员 },
+ AssemblyName = "BPASmartClient.CustomResource",
+ ToggleWindowPath = "Pages.View.UserLogView"
+ });
+
+ InfoLog.Add(new SubMenumodel()
+ {
+ SubMenuName = "运行日志",
+ SubMenuPermission = new Permission[] { Permission.操作员, Permission.管理员, Permission.技术员 },
+ AssemblyName = "BPASmartClient.CustomResource",
+ ToggleWindowPath = "Pages.View.RunLogView"
+ });
+
+ InfoLog.Add(new SubMenumodel()
+ {
+ SubMenuName = "报警记录",
+ SubMenuPermission = new Permission[] { Permission.操作员, Permission.管理员, Permission.技术员 },
+ AssemblyName = "BPASmartClient.CustomResource",
+ ToggleWindowPath = "Pages.View.AlarmView"
+ });
+
+ MenuManage.GetInstance.menuModels.Add(new MenuModel()
+ {
+ MainMenuIcon = "",
+ MainMenuName = "消息日志",
+ Alias = "Message Log",
+ MainMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.技术员 },
+ subMenumodels = InfoLog,
+ });
+ #endregion
+
+ #region 硬件设备监控
+ ObservableCollection DeviceMonitor = new ObservableCollection();
+ DeviceMonitor.Add(new SubMenumodel()
+ {
+ SubMenuName = "PLC通讯设置",
+ SubMenuPermission = new Permission[] { Permission.管理员, Permission.技术员 },
+ AssemblyName = "FryPot_DosingSystem",
+ ToggleWindowPath = "View.DeviceListVIew"
+ });
+
+ DeviceMonitor.Add(new SubMenumodel()
+ {
+ SubMenuName = "滚筒线运行状态",
+ SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.技术员, Permission.观察员 },
+ AssemblyName = "FryPot_DosingSystem",
+ ToggleWindowPath = "View.HardWareStatusView"
+
+ });
+
+ DeviceMonitor.Add(new SubMenumodel()
+ {
+ SubMenuName = "AGV视图",
+ SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.技术员 },
+ AssemblyName = "FryPot_DosingSystem",
+ ToggleWindowPath = "View.AgvView"
+ });
+
+ MenuManage.GetInstance.menuModels.Add(new MenuModel()
+ {
+ MainMenuIcon = "",
+ MainMenuName = "设备监控",
+ Alias = "Device Monitor",
+ MainMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.技术员, Permission.观察员 },
+ subMenumodels = DeviceMonitor,
+ });
+ #endregion
+
+ #region 用户管理
+ ObservableCollection UserManager = new ObservableCollection();
+ UserManager.Add(new SubMenumodel()
+ {
+ SubMenuName = "用户登录",
+ SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.技术员 },
+ AssemblyName = "BPASmartClient.CustomResource",
+ ToggleWindowPath = "Pages.View.LoginView"
+ });
+
+ UserManager.Add(new SubMenumodel()
+ {
+ SubMenuName = "密码修改",
+ SubMenuPermission = new Permission[] { Permission.管理员, Permission.技术员 },
+ AssemblyName = "BPASmartClient.CustomResource",
+ ToggleWindowPath = "Pages.View.PasswordChangeView"
+ });
+
+
+ MenuManage.GetInstance.menuModels.Add(new MenuModel()
+ {
+ MainMenuIcon = "",
+ MainMenuName = "用户管理",
+ Alias = "User Management",
+ MainMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.技术员 },
+ subMenumodels = UserManager,
+ });
+ #endregion
+ }
+ private void LoginDataInite()
+ {
+ Config.GetInstance.Init();//用户数据初始化
+ Json.Read();
+ }
}
}
diff --git a/FryPot_DosingSystem/Control/DosingLogicControl.cs b/FryPot_DosingSystem/Control/DosingLogicControl.cs
index 829f849c..d3296f70 100644
--- a/FryPot_DosingSystem/Control/DosingLogicControl.cs
+++ b/FryPot_DosingSystem/Control/DosingLogicControl.cs
@@ -1,7 +1,12 @@
using BPASmartClient.AGV;
+using BPASmartClient.AGV.Enums;
+using BPASmartClient.AGV.Feedback;
+using BPASmartClient.CustomResource.Pages.Model;
using BPASmartClient.Helper;
-using BPASmartClient.Message;
+using BPASmartClient.HubHelper;
using FryPot_DosingSystem.Model;
+using FryPot_DosingSystem.ViewModel;
+using Newtonsoft.Json;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
@@ -10,6 +15,8 @@ using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
+using System.Windows.Media;
+using System.Windows;
namespace FryPot_DosingSystem.Control
{
@@ -34,29 +41,91 @@ namespace FryPot_DosingSystem.Control
/// 全局变量对象声明
///
GlobalVariable globalVar;
+ ///
+ /// 线体状态对象声明
+ ///
+ HardWareStatusViewModel hardWareStatusModel;
#region 上位机内部变量
- int lineAlarm = 0;//线体故障信号 1:无故障 -1:故障
+ //int lineAlarm = 0;//线体故障信号 1:无故障 -1:故障
int FryPotAlarm = 0;//炒锅滚筒故障信号 1:无故障 -1:故障
int ReicpeNum = 0;//记录接收到的配方数
#endregion
#region agv临时变量
- bool agvArriveLine = false;//agv是否到达线体装料位置
- bool agvArriveFryPot = false;//agv是否到达炒锅送料位置
+ bool agvArriveUpLoad = false;//agv是否到达线体装料位置
+ bool agvArriveUnLoad = false;//agv是否到达炒锅送料位置
bool agvFryPotEmptyRollerArrive = false;//agv是否拿到炒锅空桶
+ string robotJobId = String.Empty;//当前上游系统任务号,全局唯一
+ //List robotJobIds = new List();//存储当前上游系统任务号,全局唯一
+ bool loadInteractive = false;// fasle:不需要上料交互 true:需要上料交互
#endregion
public DosingLogicControl()
{
globalVar = new GlobalVariable();
+ hardWareStatusModel = HardWareStatusViewModel.GetInstance;
ActionManage.GetInstance.Register(new Action(RecipeDataParse), "RecipeSetDown");
ActionManage.GetInstance.Register(new Action(() => { RecipeQuene.Clear(); InputMaterialQuene.Clear(); OutputMaterialQuene.Clear(); }), "ClearRecipes");
ActionManage.GetInstance.Register(new Action(() => { globalVar.PlcInite = 1; }), "StartPlcInite");
ActionManage.GetInstance.Register(new Action(() => { globalVar.PlcInite = 0; }), "EndPlcInite");
ActionManage.GetInstance.Register(new Action(() => { globalVar.ExitMainTask = true; }), "FryPotDosingMainTaskExit");
+ HubHelper.GetInstance.Report = new Action(AgvTaskUpReportDataAnalysis);
+ HubHelper.GetInstance.Upstreamrequest = new Action(AgvFeedBackUpReportDataAnalysis);
ResetProgram();
ReadPlcData();
IniteTask();
}
+
+ ///
+ /// AGV上下料上报数据解析
+ ///
+ ///
+ private void AgvFeedBackUpReportDataAnalysis(object obj)
+ {
+ if (obj != null && obj is byte[] datas)
+ {
+ string strData = Encoding.UTF8.GetString(datas);
+ object objData = JsonConvert.DeserializeObject(strData);
+ if (objData != null && objData is Upstreamrequest upDownReportData)
+ {
+ //if (upDownReportData.body != null && upDownReportData.body is UpstreamrequestBody body)
+ //{
+ // if (body.robotJobId == robotJobId && body.command == "LOAD")//同一任务号且处于上料阶段
+ // {
+ // agvArriveUpLoad = true;//AGV到达上料位置
+ // }
+ // if (body.robotJobId == robotJobId && body.command == "UNLOAD")//同一任务号且处于下料阶段
+ // {
+ // agvArriveUnLoad = true;//AGV到达下料位置
+ // }
+
+ //}
+ }
+ }
+ }
+
+ ///
+ /// AGV搬运任务上报数据解析
+ ///
+ ///
+ private void AgvTaskUpReportDataAnalysis(object obj)
+ {
+ if (obj != null && obj is byte[] datas)
+ {
+ string strData = Encoding.UTF8.GetString(datas);
+ object objData = JsonConvert.DeserializeObject(strData);
+ if (objData != null && objData is AGVToUpSystem agvUpReportData)
+ {
+ //if (agvUpReportData.body != null && agvUpReportData.body is AGVToUpSystemBody body)
+ //{
+ // if (body.state == "ROLLER_LOAD_FINISH" && body.jobData.startPointCode == "")//上料完成以及到达指定上料点位
+ // {
+ // agvFryPotEmptyRollerArrive = true;
+ // }
+ //}
+ }
+ }
+ }
+
///
/// 主任务重启
///
@@ -66,7 +135,7 @@ namespace FryPot_DosingSystem.Control
{
if (RTrig.GetInstance("ResetProgram").Start(globalVar.PlcInite == 1))//判断是否初始化 一初始化就重启主任务
{
- MessageLog.GetInstance.Show("主任务正在重启");
+ MessageLog.GetInstance.ShowRunLog("主任务正在重启");
ThreadManage.GetInstance().StopTask("MainTask", new Action(() =>
{
ThreadManage.GetInstance().StopTask("MainViewReadPlcData", new Action(() =>
@@ -79,7 +148,7 @@ namespace FryPot_DosingSystem.Control
ActionManage.GetInstance.Send("ClearRecipes");
ReadPlcData();
IniteTask();
- MessageLog.GetInstance.Show("主任务重启完成");
+ MessageLog.GetInstance.ShowRunLog("主任务重启完成");
}));
}));
}
@@ -127,6 +196,15 @@ namespace FryPot_DosingSystem.Control
globalVar.rollerLineThree.StationSeven = data[6];
globalVar.rollerLineThree.StationEight = data[7];
}));
+ GetAddressData("D2031", new Action((data) =>
+ {
+ globalVar.rollerLineOne.OutMaterialingSingle = data[3];
+ globalVar.rollerLineTwo.OutMaterialingSingle = data[4];
+ globalVar.rollerLineThree.OutMaterialingSingle = data[5];
+ globalVar.rollerLineOne.OutMaterialingTroubleSingle = data[6];
+ globalVar.rollerLineTwo.OutMaterialingTroubleSingle = data[7];
+ globalVar.rollerLineThree.OutMaterialingTroubleSingle = data[8];
+ }));
GetAddressData("D2040", new Action((data) =>
{
globalVar.fryPotOne.InputMaterialRollerRunningSingle = data[0];
@@ -183,11 +261,102 @@ namespace FryPot_DosingSystem.Control
globalVar.CleadBarrelExitSingle = data[0];
}));
+ //globalVar.rollerLineOne.OutMaterialingSingle = 0;
+ //globalVar.rollerLineOne.StationOne = 401;
+ //globalVar.rollerLineOne.StationTwo = 402;
+ //globalVar.rollerLineOne.OutMaterialingTroubleSingle = 1;
+ RollerLineStatusDisplay();
Thread.Sleep(10);
}), "MainViewReadPlcData");
}
+ ///
+ /// 滚筒线运行状态显示
+ ///
+ private void RollerLineStatusDisplay()
+ {
+ hardWareStatusModel.RollerOneModel.LocOneRollerSerial = globalVar.rollerLineOne.StationOne;
+ hardWareStatusModel.RollerOneModel.LocTwoRollerSerial = globalVar.rollerLineOne.StationTwo;
+ hardWareStatusModel.RollerOneModel.LocThreeRollerSerial = globalVar.rollerLineOne.StationThree;
+ hardWareStatusModel.RollerOneModel.LocFourRollerSerial = globalVar.rollerLineOne.StationFour;
+ hardWareStatusModel.RollerOneModel.LocFiveRollerSerial = globalVar.rollerLineOne.StationFive;
+ hardWareStatusModel.RollerOneModel.LocSixRollerSerial = globalVar.rollerLineOne.StationSix;
+ hardWareStatusModel.RollerOneModel.LocSevenRollerSerial = globalVar.rollerLineOne.StationSeven;
+ hardWareStatusModel.RollerOneModel.LocEightRollerSerial = globalVar.rollerLineOne.StationEight;
+ if (globalVar.rollerLineOne.OutMaterialingTroubleSingle == 0)
+ {
+ hardWareStatusModel.RollerOneModel.RollerAlarmState = Color.FromRgb(130, 232, 139);//无故障
+ }
+ else
+ {
+
+ hardWareStatusModel.RollerOneModel.RollerAlarmState = Color.FromRgb(255, 51, 153);//有故障
+ }
+ if (globalVar.rollerLineOne.OutMaterialingSingle == 1)//运行中
+ {
+
+ hardWareStatusModel.RollerOneModel.RollerRunState = Color.FromRgb(130, 232, 139);//运行中
+ }
+ else
+ {
+
+ hardWareStatusModel.RollerOneModel.RollerRunState = Color.FromRgb(84, 84, 84);//未运行
+ }
+ hardWareStatusModel.RollerTwoModel.LocOneRollerSerial = globalVar.rollerLineTwo.StationOne;
+ hardWareStatusModel.RollerTwoModel.LocTwoRollerSerial = globalVar.rollerLineTwo.StationTwo;
+ hardWareStatusModel.RollerTwoModel.LocThreeRollerSerial = globalVar.rollerLineTwo.StationThree;
+ hardWareStatusModel.RollerTwoModel.LocFourRollerSerial = globalVar.rollerLineTwo.StationFour;
+ hardWareStatusModel.RollerTwoModel.LocFiveRollerSerial = globalVar.rollerLineTwo.StationFive;
+ hardWareStatusModel.RollerTwoModel.LocSixRollerSerial = globalVar.rollerLineTwo.StationSix;
+ hardWareStatusModel.RollerTwoModel.LocSevenRollerSerial = globalVar.rollerLineTwo.StationSeven;
+ hardWareStatusModel.RollerTwoModel.LocEightRollerSerial = globalVar.rollerLineTwo.StationEight;
+ if (globalVar.rollerLineTwo.OutMaterialingTroubleSingle == 0)
+ {
+ hardWareStatusModel.RollerTwoModel.RollerAlarmState = Color.FromRgb(130, 232, 139);//无故障
+ }
+ else
+ {
+
+ hardWareStatusModel.RollerTwoModel.RollerAlarmState = Color.FromRgb(255, 51, 153);//有故障
+ }
+ if (globalVar.rollerLineTwo.OutMaterialingSingle == 1)//运行中
+ {
+
+ hardWareStatusModel.RollerTwoModel.RollerRunState = Color.FromRgb(130, 232, 139);//运行中
+
+ }
+ else
+ {
+ hardWareStatusModel.RollerTwoModel.RollerRunState = Color.FromRgb(84, 84, 84);//未运行
+ }
+ hardWareStatusModel.RollerThreeModel.LocOneRollerSerial = globalVar.rollerLineThree.StationOne;
+ hardWareStatusModel.RollerThreeModel.LocTwoRollerSerial = globalVar.rollerLineThree.StationTwo;
+ hardWareStatusModel.RollerThreeModel.LocThreeRollerSerial = globalVar.rollerLineThree.StationThree;
+ hardWareStatusModel.RollerThreeModel.LocFourRollerSerial = globalVar.rollerLineThree.StationFour;
+ hardWareStatusModel.RollerThreeModel.LocFiveRollerSerial = globalVar.rollerLineThree.StationFive;
+ hardWareStatusModel.RollerThreeModel.LocSixRollerSerial = globalVar.rollerLineThree.StationSix;
+ hardWareStatusModel.RollerThreeModel.LocSevenRollerSerial = globalVar.rollerLineThree.StationSeven;
+ hardWareStatusModel.RollerThreeModel.LocEightRollerSerial = globalVar.rollerLineThree.StationEight;
+ if (globalVar.rollerLineThree.OutMaterialingTroubleSingle == 0)
+ {
+ hardWareStatusModel.RollerThreeModel.RollerAlarmState = Color.FromRgb(130, 232, 139);//无故障
+ }
+ else
+ {
+ hardWareStatusModel.RollerThreeModel.RollerAlarmState = Color.FromRgb(255, 51, 153);//有故障
+ }
+ if (globalVar.rollerLineThree.OutMaterialingSingle == 1)//运行中
+ {
+ hardWareStatusModel.RollerThreeModel.RollerRunState = Color.FromRgb(130, 232, 139);//运行中
+ }
+ else
+ {
+ hardWareStatusModel.RollerThreeModel.RollerRunState = Color.FromRgb(84, 84, 84);//未运行
+ }
+ //滚筒线4
+
+ }
///
/// 返回指定地址指定长度的数据
///
@@ -225,12 +394,18 @@ namespace FryPot_DosingSystem.Control
///
public void RecipeDataParse(object obj)
{
- if (obj != null && obj is NewRecipeModel recipe)
+ Task.Run(new Action(() =>
{
- RecipeQuene.Enqueue(recipe);
- ReicpeNum++;
- MessageLog.GetInstance.Show($"接收到{ReicpeNum}个配方");
- }
+ if (obj != null && obj is NewRecipeModel recipe)
+ {
+ RecipeQuene.Enqueue(recipe);
+ ReicpeNum++;
+ MessageLog.GetInstance.ShowRunLog($"接收到第{ReicpeNum}个配方");
+ }
+
+ }));
+
+
}
///
@@ -250,10 +425,23 @@ namespace FryPot_DosingSystem.Control
{
if (RecipeQuene.Count > 0 && OutputMaterialQuene.Count == 0 && InputMaterialQuene.Count == 0)//后续添加其它限制条件
{
-
+ //NewRecipeModel newRecipe = new NewRecipeModel();
+ MaterialType material = new MaterialType();
if (RecipeQuene.TryDequeue(out NewRecipeModel result))
{
- MessageLog.GetInstance.Show($"开始制作【{result.RecipeName}】 配方");
+ MessageLog.GetInstance.ShowRunLog($"开始制作【{result.RecipeName}】 配方");
+ //for (int k = 0; k < result.materialCollection.Count-1; k++)
+ //{
+ // for (int j = 0; j < result.materialCollection.Count-1-k; j++)
+ // {
+ // if (result.materialCollection[j].MaterialLoc > result.materialCollection[j + 1].MaterialLoc)
+ // {
+ // material = result.materialCollection[j];
+ // result.materialCollection[j] = result.materialCollection[j + 1];
+ // result.materialCollection[j + 1] = material;
+ // }
+ // }
+ //}
for (int i = 0; i < result.materialCollection.Count; i++) //遍历单个配方中所有物料
{
//将配方中原料加入新的队列
@@ -290,7 +478,7 @@ namespace FryPot_DosingSystem.Control
///
public void AgvLoadRoller()
{
- lineAlarm = 0;
+ //lineAlarm = 0;
if (InputMaterialQuene.Count > 0)
{
switch (InputMaterialQuene.ElementAt(0).materialType.MaterialLoc / 100)
@@ -311,7 +499,8 @@ namespace FryPot_DosingSystem.Control
{
if (OutputMaterialQuene.Count > 0 && !globalVar.InOrOutputLock)
{
- while (!agvArriveFryPot)//等待agv到达炒锅位置
+
+ while (!agvArriveUnLoad)//等待agv到达炒锅位置
{
Thread.Sleep(5);
if (globalVar.ExitMainTask)
@@ -325,10 +514,7 @@ namespace FryPot_DosingSystem.Control
FryPotInputMaterialRollerOperate();
globalVar.InOrOutputLock = true;
}
- else
- {
- //MessageLog.GetInstance.ShowEx($"警告:炒锅{OutputMaterialQuene.ElementAt(0).materialType.MaterialLoc / 100}滚筒故障!!!");
- }
+
}
}
@@ -339,12 +525,14 @@ namespace FryPot_DosingSystem.Control
{
if (OutputMaterialQuene.Count > 0 && globalVar.InOrOutputLock)
{
- while (!agvArriveFryPot)//等待agv到达炒锅位置
+ AgvFromFryPotToClean();//上游下发搬运任务给AGV
+ while (!agvArriveUpLoad)//等待agv到达炒锅位置
{
Thread.Sleep(5);
if (globalVar.ExitMainTask)
return;
}
+ agvArriveUpLoad = false;
AgvArriveFryPotOutEmptyRollerSingleSetDown();//暂时考虑agv送完料后原地等待,不加条件,直接发送到位信号
FryPotRollerTroubleCheck();
if (FryPotAlarm == 1)//无故障
@@ -363,10 +551,7 @@ namespace FryPot_DosingSystem.Control
globalVar.InOrOutputLock = false;
}
}
- else//有故障
- {
- }
}
}
///
@@ -377,40 +562,40 @@ namespace FryPot_DosingSystem.Control
switch (OutputMaterialQuene.ElementAt(0).materialType.MaterialLoc / 100)
{
case 1:
- while (globalVar.fryPotOne.InputMaterialArrivedSingle == 0 || globalVar.fryPotOne.InputMaterialRollerRunningSingle == 0)
+ while (globalVar.fryPotOne.InputMaterialArrivedSingle == 0)
{
Thread.Sleep(5); if (globalVar.ExitMainTask)
return;
}
- MessageLog.GetInstance.Show($"炒锅【1】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}已到进料位置,准备倒料"); break;
+ MessageLog.GetInstance.ShowRunLog($"炒锅【1】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}已到进料位置,准备倒料"); break;
case 2:
- while (globalVar.fryPotTwo.InputMaterialArrivedSingle == 0 || globalVar.fryPotTwo.InputMaterialRollerRunningSingle == 0)
+ while (globalVar.fryPotTwo.InputMaterialArrivedSingle == 0)
{
Thread.Sleep(5); if (globalVar.ExitMainTask)
return;
}
- MessageLog.GetInstance.Show($"炒锅【2】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}已到进料位置,准备倒料"); break;
+ MessageLog.GetInstance.ShowRunLog($"炒锅【2】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}已到进料位置,准备倒料"); break;
case 3:
- while (globalVar.fryPotThree.InputMaterialArrivedSingle == 0 || globalVar.fryPotThree.InputMaterialRollerRunningSingle == 0)
+ while (globalVar.fryPotThree.InputMaterialArrivedSingle == 0)
{
Thread.Sleep(5); if (globalVar.ExitMainTask)
return;
}
- MessageLog.GetInstance.Show($"炒锅【3】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}已到进料位置,准备倒料"); break;
+ MessageLog.GetInstance.ShowRunLog($"炒锅【3】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}已到进料位置,准备倒料"); break;
case 4:
- while (globalVar.fryPotFour.InputMaterialArrivedSingle == 0 || globalVar.fryPotFour.InputMaterialRollerRunningSingle == 0)
+ while (globalVar.fryPotFour.InputMaterialArrivedSingle == 0)
{
Thread.Sleep(5); if (globalVar.ExitMainTask)
return;
}
- MessageLog.GetInstance.Show($"炒锅【4】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}已到进料位置,准备倒料"); break;
+ MessageLog.GetInstance.ShowRunLog($"炒锅【4】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}已到进料位置,准备倒料"); break;
case 5:
- while (globalVar.fryPotFive.InputMaterialArrivedSingle == 0 || globalVar.fryPotFive.InputMaterialRollerRunningSingle == 0)
+ while (globalVar.fryPotFive.InputMaterialArrivedSingle == 0)
{
Thread.Sleep(5); if (globalVar.ExitMainTask)
return;
}
- MessageLog.GetInstance.Show($"炒锅【5】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}已到进料位置,准备倒料"); break;
+ MessageLog.GetInstance.ShowRunLog($"炒锅【5】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}已到进料位置,准备倒料"); break;
}
}
@@ -421,21 +606,41 @@ namespace FryPot_DosingSystem.Control
{
switch (OutputMaterialQuene.ElementAt(0).materialType.MaterialLoc / 100)
{
- case 1: while (globalVar.fryPotOne.EmptyBarrelArrivedSingle == 0 || globalVar.fryPotOne.EmptyBarrelRollerRunningSingle == 0) { Thread.Sleep(5); if (globalVar.ExitMainTask)
+ case 1:
+ while (globalVar.fryPotOne.EmptyBarrelArrivedSingle == 0)
+ {
+ Thread.Sleep(5); if (globalVar.ExitMainTask)
return;
- } MessageLog.GetInstance.Show($"炒锅【1】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}空桶到达出桶位置,正在出桶"); break;
- case 2: while (globalVar.fryPotTwo.EmptyBarrelArrivedSingle == 0 || globalVar.fryPotTwo.EmptyBarrelRollerRunningSingle == 0) { Thread.Sleep(5); if (globalVar.ExitMainTask)
+ }
+ MessageLog.GetInstance.ShowRunLog($"炒锅【1】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}空桶到达出桶位置,正在出桶"); break;
+ case 2:
+ while (globalVar.fryPotTwo.EmptyBarrelArrivedSingle == 0)
+ {
+ Thread.Sleep(5); if (globalVar.ExitMainTask)
return;
- } MessageLog.GetInstance.Show($"炒锅【2】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}空桶到达出桶位置,正在出桶"); break;
- case 3: while (globalVar.fryPotThree.EmptyBarrelArrivedSingle == 0 || globalVar.fryPotThree.EmptyBarrelRollerRunningSingle == 0) { Thread.Sleep(5); if (globalVar.ExitMainTask)
+ }
+ MessageLog.GetInstance.ShowRunLog($"炒锅【2】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}空桶到达出桶位置,正在出桶"); break;
+ case 3:
+ while (globalVar.fryPotThree.EmptyBarrelArrivedSingle == 0)
+ {
+ Thread.Sleep(5); if (globalVar.ExitMainTask)
return;
- } MessageLog.GetInstance.Show($"炒锅【3】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}空桶到达出桶位置,正在出桶"); break;
- case 4: while (globalVar.fryPotFour.EmptyBarrelArrivedSingle == 0 || globalVar.fryPotFour.EmptyBarrelRollerRunningSingle == 0) { Thread.Sleep(5); if (globalVar.ExitMainTask)
+ }
+ MessageLog.GetInstance.ShowRunLog($"炒锅【3】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}空桶到达出桶位置,正在出桶"); break;
+ case 4:
+ while (globalVar.fryPotFour.EmptyBarrelArrivedSingle == 0)
+ {
+ Thread.Sleep(5); if (globalVar.ExitMainTask)
return;
- } MessageLog.GetInstance.Show($"炒锅【4】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}空桶到达出桶位置,正在出桶"); break;
- case 5: while (globalVar.fryPotFive.EmptyBarrelArrivedSingle == 0 || globalVar.fryPotFive.EmptyBarrelRollerRunningSingle == 0) { Thread.Sleep(5); if (globalVar.ExitMainTask)
+ }
+ MessageLog.GetInstance.ShowRunLog($"炒锅【4】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}空桶到达出桶位置,正在出桶"); break;
+ case 5:
+ while (globalVar.fryPotFive.EmptyBarrelArrivedSingle == 0)
+ {
+ Thread.Sleep(5); if (globalVar.ExitMainTask)
return;
- } MessageLog.GetInstance.Show($"炒锅【5】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}空桶到达出桶位置,正在出桶"); break;
+ }
+ MessageLog.GetInstance.ShowRunLog($"炒锅【5】原料:{OutputMaterialQuene.ElementAt(0).materialType.MaterialName}空桶到达出桶位置,正在出桶"); break;
}
}
@@ -468,20 +673,74 @@ namespace FryPot_DosingSystem.Control
}
}
///
+ /// AGV离开炒锅运送空桶任务
+ ///
+ public void AgvFromFryPotToClean()
+ {
+ switch (OutputMaterialQuene.ElementAt(0).materialType.MaterialLoc / 100)
+ {
+ case 1:
+ erp: string id = Guid.NewGuid().ToString("N");//上游唯一ID
+ if (id == robotJobId)
+ {
+ goto erp;
+ }
+ string info = AGVHelper.GetInstance.AgvLeaveFryPotOne(id);
+ robotJobId = id;
+ FryCarryTaskErrorCodeAnalysis(info, 1); break;
+ case 2:
+ erp1: string id1 = Guid.NewGuid().ToString("N");//上游唯一ID
+ if (id1 == robotJobId)
+ {
+ goto erp1;
+ }
+ string info1 = AGVHelper.GetInstance.AgvLeaveFryPotTwo(id1);
+ robotJobId = id1;
+ FryCarryTaskErrorCodeAnalysis(info1, 2); break;
+ case 3:
+ erp2: string id2 = Guid.NewGuid().ToString("N");//上游唯一ID
+ if (id2 == robotJobId)
+ {
+ goto erp2;
+ }
+ string info2 = AGVHelper.GetInstance.AgvLeaveFryPotThree(id2);
+ robotJobId = id2;
+ FryCarryTaskErrorCodeAnalysis(info2, 3); break;
+ case 4:
+ erp3: string id3 = Guid.NewGuid().ToString("N");//上游唯一ID
+ if (id3 == robotJobId)
+ {
+ goto erp3;
+ }
+ string info3 = AGVHelper.GetInstance.AgvLeaveFryPotFour(id3);
+ robotJobId = id3;
+ FryCarryTaskErrorCodeAnalysis(info3, 4); break;
+ case 5:
+ erp4: string id4 = Guid.NewGuid().ToString("N");//上游唯一ID
+ if (id4 == robotJobId)
+ {
+ goto erp4;
+ }
+ string info4 = AGVHelper.GetInstance.AgvLeaveFryPotFive(id4);
+ robotJobId = id4;
+ FryCarryTaskErrorCodeAnalysis(info4, 5); break;
+ }
+ }
+ ///
/// 处理agv从线体1到送料到炒锅的条件
///
///
public void AgvFromLineOneToFryPot()
{
- erp: if (lineAlarm == 1)//无故障
+ erp: if (globalVar.rollerLineOne.OutMaterialingTroubleSingle == 0)//无故障
{
- while (!agvArriveLine)//等待AGV到线体装料位置
+ while (!agvArriveUpLoad)//等待AGV到线体装料位置
{
Thread.Sleep(5);
if (globalVar.ExitMainTask)
return;
}
- agvArriveLine = false;
+ agvArriveUpLoad = false;
AgvArriveLineSingelSetDown();
if (InputMaterialQuene.TryDequeue(out MaterialInfo materialInfo))
{
@@ -492,20 +751,20 @@ namespace FryPot_DosingSystem.Control
return;
}
OutputMaterialQuene.Enqueue(materialInfo);
- //原料到位,agv到位,agv运料到炒锅
+ //原料到位,agv到位,agv自行运料到炒锅
}
}
else//有故障
{
- while (lineAlarm == -1)
+ while (globalVar.rollerLineOne.OutMaterialingTroubleSingle == 1)
{
Thread.Sleep(50);
if (globalVar.ExitMainTask)
return;
}
- MessageLog.GetInstance.Show("线体【1】滚筒故障解除,继续运行");
- lineAlarm = 1;
+ MessageLog.GetInstance.ShowRunLog("线体【1】滚筒故障解除,继续运行");
+ //lineAlarm = 1;
goto erp;
}
}
@@ -515,15 +774,15 @@ namespace FryPot_DosingSystem.Control
///
public void AgvFromLineTwoToFryPot()
{
- erp: if (lineAlarm == 1)//无故障
+ erp: if (globalVar.rollerLineTwo.OutMaterialingTroubleSingle == 0)//无故障
{
- while (!agvArriveLine)//等待AGV到线体装料位置
+ while (!agvArriveUpLoad)//等待AGV到线体装料位置
{
Thread.Sleep(5);
if (globalVar.ExitMainTask)
return;
}
- agvArriveLine = false;
+ agvArriveUpLoad = false;
AgvArriveLineSingelSetDown();
if (InputMaterialQuene.TryDequeue(out MaterialInfo materialInfo))
{
@@ -540,14 +799,14 @@ namespace FryPot_DosingSystem.Control
}
else//有故障
{
- while (lineAlarm == -1)
+ while (globalVar.rollerLineTwo.OutMaterialingTroubleSingle == 1)
{
Thread.Sleep(50);
if (globalVar.ExitMainTask)
return;
}
- MessageLog.GetInstance.Show("线体【2】滚筒故障解除,继续运行");
- lineAlarm = 1;
+ MessageLog.GetInstance.ShowRunLog("线体【2】滚筒故障解除,继续运行");
+ // lineAlarm = 1;
goto erp;
}
}
@@ -557,15 +816,15 @@ namespace FryPot_DosingSystem.Control
///
public void AgvFromLineThreeToFryPot()
{
- erp: if (lineAlarm == 1)//无故障
+ erp: if (globalVar.rollerLineThree.OutMaterialingTroubleSingle == 0)//无故障
{
- while (!agvArriveLine)//等待AGV到线体装料位置
+ while (!agvArriveUpLoad)//等待AGV到线体装料位置
{
Thread.Sleep(5);
if (globalVar.ExitMainTask)
return;
}
- agvArriveLine = false;
+ agvArriveUpLoad = false;
AgvArriveLineSingelSetDown();
if (InputMaterialQuene.TryDequeue(out MaterialInfo materialInfo))
{
@@ -580,19 +839,61 @@ namespace FryPot_DosingSystem.Control
}
}
- else//有故障
+ else //有故障
{
- while (lineAlarm == -1)
+ while (globalVar.rollerLineThree.OutMaterialingTroubleSingle == 1)
{
Thread.Sleep(50);
if (globalVar.ExitMainTask)
return;
}
- MessageLog.GetInstance.Show("线体【3】滚筒故障解除,继续运行");
- lineAlarm = 1;
+ MessageLog.GetInstance.ShowRunLog("线体【3】滚筒故障解除,继续运行");
+ // lineAlarm = 1;
goto erp;
}
}
+ ///
+ /// 线体搬运任务错误码分析
+ ///
+ ///
+ ///
+ public void LineCarryTaskErrorCodeAnalysis(string errorCode, int num)
+ {
+ if (errorCode == "SUCCESS")
+ {
+ MessageLog.GetInstance.ShowRunLog($"AGV去{num}号线体");
+ globalVar.AllowAgvToLineLoadRoller = false;
+ }
+ else if (errorCode == "Analysis Error")
+ {
+ MessageLog.GetInstance.ShowRunLog($"提示:AGV去{num}号线体接口调用失败,请检查");
+ }
+ else
+ {
+ MessageLog.GetInstance.ShowRunLog($"提示:AGV去{num}号线体失败,错误码:{errorCode}");
+ }
+ }
+ ///
+ /// 炒锅搬运任务错误码分析
+ ///
+ ///
+ ///
+ public void FryCarryTaskErrorCodeAnalysis(string errorCode, int num)
+ {
+ if (errorCode == "SUCCESS")
+ {
+ MessageLog.GetInstance.ShowRunLog($"AGV离开{num}号炒锅");
+ }
+ else if (errorCode == "Analysis Error")
+ {
+ MessageLog.GetInstance.ShowRunLog($"提示:AGV离开{num}号炒锅接口调用失败,请检查");
+ }
+ else
+ {
+ MessageLog.GetInstance.ShowRunLog($"提示:AGV离开{num}号炒锅失败,错误码:{errorCode}");
+ }
+ }
+
public void AgvToLineOneLoadRoller()
{
if (globalVar.rollerLineOne.OutMaterialingTroubleSingle == 0)//输送线无故障
@@ -605,17 +906,21 @@ namespace FryPot_DosingSystem.Control
if (globalVar.ExitMainTask)
return;
}
- AGVHelper.GetInstance.AgvToLineOneLoadRoller();
- MessageLog.GetInstance.Show("AGV去1号线体");
- globalVar.AllowAgvToLineLoadRoller = false;
+ e: string id = Guid.NewGuid().ToString("N");
+ if (id == robotJobId)
+ goto e;
+ string info = AGVHelper.GetInstance.AgvToLineOneLoadRoller(id);
+ robotJobId = id;
+ Thread.Sleep(500);
+ LineCarryTaskErrorCodeAnalysis(info, 1);
}
}
else
{
- MessageLog.GetInstance.ShowEx("警告:滚筒输送线体【1】故障!!!");
- lineAlarm = -1;
+ MessageLog.GetInstance.ShowRunLog("警告:滚筒输送线体【1】故障!!!");
+ // lineAlarm = -1;
}
- lineAlarm = 1;
+ // lineAlarm = 1;
}
public void AgvToLineTwoLoadRoller()
{
@@ -629,18 +934,22 @@ namespace FryPot_DosingSystem.Control
if (globalVar.ExitMainTask)
return;
}
- AGVHelper.GetInstance.AgvToLineTwoLoadRoller();
- MessageLog.GetInstance.Show("AGV去2号线体");
- globalVar.AllowAgvToLineLoadRoller = false;
+ p: string id = Guid.NewGuid().ToString();
+ if (id == robotJobId)
+ goto p;
+ string info = AGVHelper.GetInstance.AgvToLineTwoLoadRoller(id);
+ robotJobId = id;
+ Thread.Sleep(500);
+ LineCarryTaskErrorCodeAnalysis(info, 2);
}
}
else
{
- MessageLog.GetInstance.ShowEx("警告:滚筒输送线体【2】故障!!!");
- lineAlarm = -1;
+ MessageLog.GetInstance.ShowRunLog("警告:滚筒输送线体【2】故障!!!");
+ //lineAlarm = -1;
}
- lineAlarm = 1;
+ // lineAlarm = 1;
}
public void AgvToLineThreeLoadRoller()
{
@@ -654,18 +963,22 @@ namespace FryPot_DosingSystem.Control
if (globalVar.ExitMainTask)
return;
}
- AGVHelper.GetInstance.AgvToLineThreeLoadRoller();
- MessageLog.GetInstance.Show("AGV去3号线体");
- globalVar.AllowAgvToLineLoadRoller = false;
+ g: string id = Guid.NewGuid().ToString();
+ if (id == robotJobId)
+ goto g;
+ string info = AGVHelper.GetInstance.AgvToLineThreeLoadRoller(id);
+ robotJobId = id;
+ Thread.Sleep(500);
+ LineCarryTaskErrorCodeAnalysis(info, 3);
}
}
else
{
- MessageLog.GetInstance.ShowEx("警告:滚筒输送线体【3】故障!!!");
- lineAlarm = -1;
+ MessageLog.GetInstance.ShowRunLog("警告:滚筒输送线体【3】故障!!!");
+ // lineAlarm = -1;
}
- lineAlarm = 1;
+ // lineAlarm = 1;
}
///
/// 1号线体数据下发
@@ -827,39 +1140,44 @@ namespace FryPot_DosingSystem.Control
switch (OutputMaterialQuene.ElementAt(0).materialType.MaterialLoc / 100)
{
case 1:
- if (globalVar.fryPotOne.RollerTroubleSingle == 1) { FryPotAlarm = -1; MessageLog.GetInstance.ShowEx("警告:炒锅【1】输送滚筒发生故障"); } else { FryPotAlarm = 1; } while (globalVar.fryPotOne.RollerTroubleSingle == 1)
+ if (globalVar.fryPotOne.RollerTroubleSingle == 1) { FryPotAlarm = -1; MessageLog.GetInstance.ShowRunLog("警告:炒锅【1】输送滚筒发生故障"); } else { FryPotAlarm = 1; } while (globalVar.fryPotOne.RollerTroubleSingle == 1)
{
Thread.Sleep(50); if (globalVar.ExitMainTask)
return;
}
+ MessageLog.GetInstance.ShowRunLog("炒锅【1】输送滚筒故障解除,继续运行");
FryPotAlarm = 1; break;
case 2:
- if (globalVar.fryPotTwo.RollerTroubleSingle == 1) { FryPotAlarm = -1; MessageLog.GetInstance.ShowEx("警告:炒锅【1】输送滚筒发生故障"); } else { FryPotAlarm = 1; } while (globalVar.fryPotTwo.RollerTroubleSingle == 1)
+ if (globalVar.fryPotTwo.RollerTroubleSingle == 1) { FryPotAlarm = -1; MessageLog.GetInstance.ShowRunLog("警告:炒锅【2】输送滚筒发生故障"); } else { FryPotAlarm = 1; } while (globalVar.fryPotTwo.RollerTroubleSingle == 1)
{
Thread.Sleep(50); if (globalVar.ExitMainTask)
return;
}
+ MessageLog.GetInstance.ShowRunLog("炒锅【2】输送滚筒故障解除,继续运行");
FryPotAlarm = 1; break;
case 3:
- if (globalVar.fryPotThree.RollerTroubleSingle == 1) { FryPotAlarm = -1; MessageLog.GetInstance.ShowEx("警告:炒锅【1】输送滚筒发生故障"); } else { FryPotAlarm = 1; } while (globalVar.fryPotThree.RollerTroubleSingle == 1)
+ if (globalVar.fryPotThree.RollerTroubleSingle == 1) { FryPotAlarm = -1; MessageLog.GetInstance.ShowRunLog("警告:炒锅【3】输送滚筒发生故障"); } else { FryPotAlarm = 1; } while (globalVar.fryPotThree.RollerTroubleSingle == 1)
{
Thread.Sleep(50); if (globalVar.ExitMainTask)
return;
}
+ MessageLog.GetInstance.ShowRunLog("炒锅【3】输送滚筒故障解除,继续运行");
FryPotAlarm = 1; break;
case 4:
- if (globalVar.fryPotFour.RollerTroubleSingle == 1) { FryPotAlarm = -1; MessageLog.GetInstance.ShowEx("警告:炒锅【1】输送滚筒发生故障"); } else { FryPotAlarm = 1; } while (globalVar.fryPotFour.RollerTroubleSingle == 1)
+ if (globalVar.fryPotFour.RollerTroubleSingle == 1) { FryPotAlarm = -1; MessageLog.GetInstance.ShowRunLog("警告:炒锅【4】输送滚筒发生故障"); } else { FryPotAlarm = 1; } while (globalVar.fryPotFour.RollerTroubleSingle == 1)
{
Thread.Sleep(50); if (globalVar.ExitMainTask)
return;
}
+ MessageLog.GetInstance.ShowRunLog("炒锅【4】输送滚筒故障解除,继续运行");
FryPotAlarm = 1; break;
case 5:
- if (globalVar.fryPotFive.RollerTroubleSingle == 1) { FryPotAlarm = -1; MessageLog.GetInstance.ShowEx("警告:炒锅【1】输送滚筒发生故障"); } else { FryPotAlarm = 1; } while (globalVar.fryPotFive.RollerTroubleSingle == 1)
+ if (globalVar.fryPotFive.RollerTroubleSingle == 1) { FryPotAlarm = -1; MessageLog.GetInstance.ShowRunLog("警告:炒锅【5】输送滚筒发生故障"); } else { FryPotAlarm = 1; } while (globalVar.fryPotFive.RollerTroubleSingle == 1)
{
Thread.Sleep(50); if (globalVar.ExitMainTask)
return;
}
+ MessageLog.GetInstance.ShowRunLog("炒锅【5】输送滚筒故障解除,继续运行");
FryPotAlarm = 1; break;
}
diff --git a/FryPot_DosingSystem/FryPot_DosingSystem.csproj b/FryPot_DosingSystem/FryPot_DosingSystem.csproj
index 1032ddda..8b928b34 100644
--- a/FryPot_DosingSystem/FryPot_DosingSystem.csproj
+++ b/FryPot_DosingSystem/FryPot_DosingSystem.csproj
@@ -17,6 +17,7 @@
+
diff --git a/FryPot_DosingSystem/Model/RecipeManage.cs b/FryPot_DosingSystem/Model/RecipeManage.cs
index 402778f4..b4b29e3d 100644
--- a/FryPot_DosingSystem/Model/RecipeManage.cs
+++ b/FryPot_DosingSystem/Model/RecipeManage.cs
@@ -10,8 +10,7 @@ namespace FryPot_DosingSystem.Model
{
internal class RecipeManage:ObservableObject
{
- //private static RecipeManage _Instance;
- //public static RecipeManage GetInstance=>_Instance ?? (_Instance = new RecipeManage());
+
public ObservableCollection Recipes { get; set; }=new ObservableCollection();
}
}
diff --git a/FryPot_DosingSystem/Model/RollerLineBarrelSerialModel.cs b/FryPot_DosingSystem/Model/RollerLineBarrelSerialModel.cs
new file mode 100644
index 00000000..3f01b166
--- /dev/null
+++ b/FryPot_DosingSystem/Model/RollerLineBarrelSerialModel.cs
@@ -0,0 +1,44 @@
+using Microsoft.Toolkit.Mvvm.ComponentModel;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Media;
+
+namespace FryPot_DosingSystem.Model
+{
+ internal class RollerLineBarrelSerialModel:ObservableObject
+ {
+ private ushort _locOneRollerSerial;
+ public ushort LocOneRollerSerial { get { return _locOneRollerSerial; } set { _locOneRollerSerial = value;OnPropertyChanged(); } }
+
+ private ushort _locTwoRollerSerial;
+ public ushort LocTwoRollerSerial { get { return _locTwoRollerSerial; } set { _locTwoRollerSerial = value; OnPropertyChanged(); } }
+
+ private ushort _locThreeRollerSerial;
+ public ushort LocThreeRollerSerial { get { return _locThreeRollerSerial; } set { _locThreeRollerSerial = value; OnPropertyChanged(); } }
+
+ private ushort _locFourRollerSerial;
+ public ushort LocFourRollerSerial { get { return _locFourRollerSerial; } set { _locFourRollerSerial = value; OnPropertyChanged(); } }
+
+ private ushort _locFiveRollerSerial;
+ public ushort LocFiveRollerSerial { get { return _locFiveRollerSerial; } set { _locFiveRollerSerial = value; OnPropertyChanged(); } }
+
+ private ushort _locSixRollerSerial;
+ public ushort LocSixRollerSerial { get { return _locSixRollerSerial; } set { _locSixRollerSerial = value; OnPropertyChanged(); } }
+
+ private ushort _locSevenRollerSerial;
+ public ushort LocSevenRollerSerial { get { return _locSevenRollerSerial; } set { _locSevenRollerSerial = value; OnPropertyChanged(); } }
+
+ private ushort _locEightRollerSerial;
+ public ushort LocEightRollerSerial { get { return _locEightRollerSerial; } set { _locEightRollerSerial = value; OnPropertyChanged(); } }
+
+ private Color _rollerRunState;
+ public Color RollerRunState { get { return _rollerRunState; } set { _rollerRunState = value; OnPropertyChanged(); } }
+
+
+ private Color _rollerAlarmState;
+ public Color RollerAlarmState { get { return _rollerAlarmState; } set { _rollerAlarmState = value; OnPropertyChanged(); } }
+ }
+}
diff --git a/FryPot_DosingSystem/View/AgvView.xaml b/FryPot_DosingSystem/View/AgvView.xaml
new file mode 100644
index 00000000..69572dee
--- /dev/null
+++ b/FryPot_DosingSystem/View/AgvView.xaml
@@ -0,0 +1,395 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 炒锅(1)号
+
+
+ 炒锅(2)号
+
+
+ 炒锅(3)号
+
+
+ 炒锅(4)号
+
+
+ 炒锅(5)号
+
+
+
+
+
+
+ 满料桶滚筒线
+
+
+
+
+ 空桶滚筒线
+
+
+
+
+
+
+ 停车桩(1号)
+
+
+ 停车桩(2号)
+
+
+ 停车桩(3号)
+
+
+ 停车桩(4号)
+
+
+ 充电桩(1号)
+
+
+ 充电桩(2号)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/FryPot_DosingSystem/View/AgvView.xaml.cs b/FryPot_DosingSystem/View/AgvView.xaml.cs
new file mode 100644
index 00000000..5792930a
--- /dev/null
+++ b/FryPot_DosingSystem/View/AgvView.xaml.cs
@@ -0,0 +1,67 @@
+using FryPot_DosingSystem.ViewModel;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace FryPot_DosingSystem.View
+{
+ ///
+ /// AgvView.xaml 的交互逻辑
+ ///
+ public partial class AgvView : UserControl
+ {
+ public AgvView()
+ {
+ InitializeComponent();
+ this.DataContext = AgvViewModel.GetInstance();
+ }
+
+ private void Button_Click(object sender, RoutedEventArgs e)
+ {
+ AnimationByPath(yunshuche,qc_1);
+ }
+
+ ///
+ /// 路径动画
+ ///
+ /// 画板
+ /// 路径
+ /// 动画对象
+ /// 时间
+ private void AnimationByPath(TextBox target, Path path, int duration = 5)
+ {
+ target.RenderTransformOrigin = new Point(0.5, 0.5);
+
+ MatrixTransform matrix = new MatrixTransform();
+ TransformGroup groups = new TransformGroup();
+ groups.Children.Add(matrix);
+ target.RenderTransform = groups;
+ string registname = "matrix" + Guid.NewGuid().ToString().Replace("-", "");
+ this.RegisterName(registname, matrix);
+ MatrixAnimationUsingPath matrixAnimation = new MatrixAnimationUsingPath();
+ matrixAnimation.PathGeometry = PathGeometry.CreateFromGeometry(Geometry.Parse(path.Data.ToString()));
+ matrixAnimation.Duration = new Duration(TimeSpan.FromSeconds(duration));
+ matrixAnimation.DoesRotateWithTangent = true;//跟随路径旋转
+ matrixAnimation.RepeatBehavior = RepeatBehavior.Forever;//循环
+ Storyboard story = new Storyboard();
+ story.Children.Add(matrixAnimation);
+ Storyboard.SetTargetName(matrixAnimation, registname);
+ Storyboard.SetTargetProperty(matrixAnimation, new PropertyPath(MatrixTransform.MatrixProperty));
+
+ story.FillBehavior = FillBehavior.Stop;
+ story.Begin(target, true);
+ }
+ }
+}
diff --git a/FryPot_DosingSystem/View/DeviceListVIew.xaml b/FryPot_DosingSystem/View/DeviceListVIew.xaml
index a6cd6871..7652df36 100644
--- a/FryPot_DosingSystem/View/DeviceListVIew.xaml
+++ b/FryPot_DosingSystem/View/DeviceListVIew.xaml
@@ -18,55 +18,58 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/FryPot_DosingSystem/View/HardWareStatusView.xaml b/FryPot_DosingSystem/View/HardWareStatusView.xaml
index 48b2fd23..8ad623d3 100644
--- a/FryPot_DosingSystem/View/HardWareStatusView.xaml
+++ b/FryPot_DosingSystem/View/HardWareStatusView.xaml
@@ -4,9 +4,641 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:FryPot_DosingSystem.View"
+ xmlns:vm="clr-namespace:FryPot_DosingSystem.ViewModel"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/FryPot_DosingSystem/View/HardWareStatusView.xaml.cs b/FryPot_DosingSystem/View/HardWareStatusView.xaml.cs
index a90f2f7c..8e1ec40d 100644
--- a/FryPot_DosingSystem/View/HardWareStatusView.xaml.cs
+++ b/FryPot_DosingSystem/View/HardWareStatusView.xaml.cs
@@ -1,4 +1,6 @@
-using System;
+using BPASmartClient.Helper;
+using FryPot_DosingSystem.ViewModel;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -23,6 +25,52 @@ namespace FryPot_DosingSystem.View
public HardWareStatusView()
{
InitializeComponent();
+ this.DataContext = HardWareStatusViewModel.GetInstance;
+ //ActionManage.GetInstance.Register(new Action((a) =>
+ //{
+ // switch (a)
+ // {
+ // case 1: gsGreen1.Color = Color.FromRgb(130, 232, 139);break;
+ // case 2: gsGreen2.Color = Color.FromRgb(130, 232, 139); break;
+ // case 3: gsGreen3.Color = Color.FromRgb(130, 232, 139); break;
+ // case 4: gsGreen4.Color = Color.FromRgb(130, 232, 139); break;
+ // }
+
+ //}), "ToGreen");
+ //ActionManage.GetInstance.Register(new Action((a) =>
+ //{
+ // switch (a)
+ // {
+ // case 1: gsRed1.Color = Color.FromRgb(243, 165, 230); break;
+ // case 2: gsRed2.Color = Color.FromRgb(243, 165, 230); break;
+ // case 3: gsRed3.Color = Color.FromRgb(243, 165, 230); break;
+ // case 4: gsRed4.Color = Color.FromRgb(243, 165, 230); break;
+ // }
+
+ //}), "ToRed");
+ //ActionManage.GetInstance.Register(new Action((a) =>
+ //{
+ // switch (a)
+ // {
+ // case 1: gsGreen1.Color = Color.FromRgb(84,84,84); break;
+ // case 2: gsGreen2.Color = Color.FromRgb(84,84,84); break;
+ // case 3: gsGreen3.Color = Color.FromRgb(84,84,84); break;
+ // case 4: gsGreen4.Color = Color.FromRgb(84,84,84); break;
+ // }
+
+ //}), "GreenToGray");
+ //ActionManage.GetInstance.Register(new Action((a) =>
+ //{
+ // switch (a)
+ // {
+ // case 1: gsRed1.Color = Color.FromRgb(84,84,84); break;
+ // case 2: gsRed2.Color = Color.FromRgb(84,84,84); break;
+ // case 3: gsRed3.Color = Color.FromRgb(84,84,84); break;
+ // case 4: gsRed4.Color = Color.FromRgb(84,84,84); break;
+ // }
+
+ //}), "RedToGray");
+
}
}
}
diff --git a/FryPot_DosingSystem/View/NewRecipeView.xaml b/FryPot_DosingSystem/View/NewRecipeView.xaml
index f5c6e396..155b8795 100644
--- a/FryPot_DosingSystem/View/NewRecipeView.xaml
+++ b/FryPot_DosingSystem/View/NewRecipeView.xaml
@@ -4,7 +4,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:FryPot_DosingSystem.View"
- xmlns:vm="clr-namespace:FryPot_DosingSystem.ViewModel"
+ xmlns:vm="clr-namespace:FryPot_DosingSystem.ViewModel" xmlns:Themes1="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Classic"
mc:Ignorable="d"
Title="NewRecipeView" Height="550" Width="800"
WindowStyle="None" WindowStartupLocation="CenterScreen" AllowsTransparency="True">
@@ -15,7 +15,7 @@
-
+
@@ -40,11 +40,152 @@
+
+
+
+
+
+
+
-
+
+
+
+
@@ -52,19 +193,22 @@
+
-
+
-
-
-
+
+
+
-
+
@@ -84,20 +228,33 @@
-
+
+
+
+
+
-
-
+
+
-
-
+
+
diff --git a/FryPot_DosingSystem/View/RecipeSendDownView.xaml b/FryPot_DosingSystem/View/RecipeSendDownView.xaml
index 823edbd6..7681694a 100644
--- a/FryPot_DosingSystem/View/RecipeSendDownView.xaml
+++ b/FryPot_DosingSystem/View/RecipeSendDownView.xaml
@@ -17,6 +17,7 @@
+
@@ -26,57 +27,99 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/FryPot_DosingSystem/View/RecipeSetView.xaml b/FryPot_DosingSystem/View/RecipeSetView.xaml
index 14a9a6e3..ce5cdd80 100644
--- a/FryPot_DosingSystem/View/RecipeSetView.xaml
+++ b/FryPot_DosingSystem/View/RecipeSetView.xaml
@@ -45,7 +45,7 @@
-
+
@@ -62,7 +62,7 @@
Command="{Binding NewRecipe}">
-
+
+
diff --git a/FryPot_DosingSystem/ViewModel/AgvViewModel.cs b/FryPot_DosingSystem/ViewModel/AgvViewModel.cs
new file mode 100644
index 00000000..a13e0d1c
--- /dev/null
+++ b/FryPot_DosingSystem/ViewModel/AgvViewModel.cs
@@ -0,0 +1,27 @@
+using Microsoft.Toolkit.Mvvm.ComponentModel;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FryPot_DosingSystem.ViewModel
+{
+ ///
+ /// AGV 视图
+ ///
+ public class AgvViewModel : ObservableObject
+ {
+ #region 单例模式
+ private volatile static AgvViewModel _Instance;
+ public static AgvViewModel GetInstance() => _Instance ?? (_Instance = new AgvViewModel());
+ public AgvViewModel()
+ {
+
+ }
+ #endregion
+
+ //public ObservableCollection menus { get; set; } = new ObservableCollection();
+
+ }
+}
diff --git a/FryPot_DosingSystem/ViewModel/DeviceListViewModel.cs b/FryPot_DosingSystem/ViewModel/DeviceListViewModel.cs
index 580908f4..bb33d1ba 100644
--- a/FryPot_DosingSystem/ViewModel/DeviceListViewModel.cs
+++ b/FryPot_DosingSystem/ViewModel/DeviceListViewModel.cs
@@ -20,7 +20,7 @@ namespace FryPot_DosingSystem.ViewModel
public RelayCommand DeleteDevice { get; set; }
public DeviceListViewModel()
{
- Json.Read();
+ //Json.Read();
devices = Json.Data.Devices;
DeviceName.Add("滚筒输送线");
DeviceName.Add("炒锅1");
diff --git a/FryPot_DosingSystem/ViewModel/HardWareStatusViewModel.cs b/FryPot_DosingSystem/ViewModel/HardWareStatusViewModel.cs
new file mode 100644
index 00000000..44bd2bdd
--- /dev/null
+++ b/FryPot_DosingSystem/ViewModel/HardWareStatusViewModel.cs
@@ -0,0 +1,52 @@
+using BPASmartClient.Helper;
+using FryPot_DosingSystem.Model;
+using Microsoft.Toolkit.Mvvm.ComponentModel;
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FryPot_DosingSystem.ViewModel
+{
+ internal class HardWareStatusViewModel:ObservableObject
+ {
+ private static HardWareStatusViewModel _instance;
+ public static HardWareStatusViewModel GetInstance => _instance ??= new HardWareStatusViewModel();
+ public HardWareStatusViewModel()
+ {
+ RollerOneModel = new RollerLineBarrelSerialModel();
+ RollerTwoModel = new RollerLineBarrelSerialModel();
+ RollerThreeModel = new RollerLineBarrelSerialModel();
+
+ }
+
+ private int _lineOneOne;
+ public int LineOneOne { get { return _lineOneOne; }set { _lineOneOne = value;OnPropertyChanged(); } }
+
+ ///
+ /// 线体1 工位->桶号
+ ///
+ private RollerLineBarrelSerialModel _rollerOneModel;
+ public RollerLineBarrelSerialModel RollerOneModel { get { return _rollerOneModel; }set { _rollerOneModel = value;OnPropertyChanged(); } }
+
+
+ ///
+ /// 线体2 工位->桶号
+ ///
+ private RollerLineBarrelSerialModel _rollerTwoModel;
+ public RollerLineBarrelSerialModel RollerTwoModel { get { return _rollerTwoModel; } set { _rollerTwoModel = value; OnPropertyChanged(); } }
+
+ ///
+ /// 线体3 工位->桶号
+ ///
+ private RollerLineBarrelSerialModel _rollerThreeModel;
+ public RollerLineBarrelSerialModel RollerThreeModel { get { return _rollerThreeModel; } set { _rollerThreeModel = value; OnPropertyChanged(); } }
+ ///
+ /// 线体4 工位->桶号s
+ ///
+ private RollerLineBarrelSerialModel _rollerFourModel;
+ public RollerLineBarrelSerialModel RollerFourModel { get { return _rollerFourModel; } set { _rollerFourModel = value; OnPropertyChanged(); } }
+ }
+}
diff --git a/FryPot_DosingSystem/ViewModel/RecipeSetDownViewModel.cs b/FryPot_DosingSystem/ViewModel/RecipeSetDownViewModel.cs
index 08f064f1..16f1bfb1 100644
--- a/FryPot_DosingSystem/ViewModel/RecipeSetDownViewModel.cs
+++ b/FryPot_DosingSystem/ViewModel/RecipeSetDownViewModel.cs
@@ -58,8 +58,6 @@ namespace FryPot_DosingSystem.ViewModel
public void RecipeSetDown(NewRecipeModel recipeModel)
{
ActionManage.GetInstance.Send("RecipeSetDown",recipeModel);
- recipeModel.RecipeSetInfo = "下发成功";
-
}
}
}
diff --git a/HubHelper/HubHelper.cs b/HubHelper/HubHelper.cs
deleted file mode 100644
index 4d6888ff..00000000
--- a/HubHelper/HubHelper.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace HubHelper
-{
- public class HubHelper
- {
-
- }
-}
\ No newline at end of file
diff --git a/HubHelper/HubHelper.csproj b/HubHelper/HubHelper.csproj
deleted file mode 100644
index 132c02c5..00000000
--- a/HubHelper/HubHelper.csproj
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- net6.0
- enable
- enable
-
-
-
diff --git a/SmartClient.sln b/SmartClient.sln
index 5d8750ae..8be1190e 100644
--- a/SmartClient.sln
+++ b/SmartClient.sln
@@ -92,7 +92,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.JAKA", "BPAS
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.Juicer", "BPASmartClient.Juicer\BPASmartClient.Juicer.csproj", "{C28A88B1-E449-484C-AC67-B5038FF2CA79}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.MorkT_HQ", "BPASmartClient.MorkT_HQ\BPASmartClient.MorkT_HQ.csproj", "{00C17D87-A323-4A97-BC21-7039E55614DE}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.MorkTHQ", "BPASmartClient.MorkT_HQ\BPASmartClient.MorkTHQ.csproj", "{00C17D87-A323-4A97-BC21-7039E55614DE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.DosingSystem", "DosingSystem\BPASmartClient.DosingSystem.csproj", "{4E0B01AD-CFD0-4BD5-BBE6-AD2A4183B4DB}"
EndProject
@@ -106,6 +106,16 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.MorkT_BarCou
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.MorkT_Container", "BPASmartClient.MorkT_Container\BPASmartClient.MorkT_Container.csproj", "{1BFE3DEE-D57A-4497-9CFA-7FF8EEA1B883}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.AgvApi", "BPASmartClient.AgvApi\BPASmartClient.AgvApi.csproj", "{8B1C64F3-A52C-480F-8262-50F824136CF3}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FryPot_DosingSystem", "FryPot_DosingSystem\FryPot_DosingSystem.csproj", "{2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.ZhuoDian", "BPASmartClient.ZhuoDian\BPASmartClient.ZhuoDian.csproj", "{E7168B03-68E5-4285-BB95-5660F877577A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestDemo", "TestDemo\TestDemo.csproj", "{A49E1C5A-9489-451C-9CE6-CEA586234B84}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.HubHelper", "BPASmartClient.HubHelper\BPASmartClient.HubHelper.csproj", "{099E047C-F40E-47A3-A5BA-81FC1500D5E8}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -980,6 +990,106 @@ Global
{1BFE3DEE-D57A-4497-9CFA-7FF8EEA1B883}.Release|x64.Build.0 = Release|Any CPU
{1BFE3DEE-D57A-4497-9CFA-7FF8EEA1B883}.Release|x86.ActiveCfg = Release|Any CPU
{1BFE3DEE-D57A-4497-9CFA-7FF8EEA1B883}.Release|x86.Build.0 = Release|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Debug|ARM.Build.0 = Debug|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Debug|x64.Build.0 = Debug|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Debug|x86.Build.0 = Debug|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Release|ARM.ActiveCfg = Release|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Release|ARM.Build.0 = Release|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Release|ARM64.Build.0 = Release|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Release|x64.ActiveCfg = Release|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Release|x64.Build.0 = Release|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Release|x86.ActiveCfg = Release|Any CPU
+ {8B1C64F3-A52C-480F-8262-50F824136CF3}.Release|x86.Build.0 = Release|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Debug|ARM.Build.0 = Debug|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Debug|x64.Build.0 = Debug|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Debug|x86.Build.0 = Debug|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Release|ARM.ActiveCfg = Release|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Release|ARM.Build.0 = Release|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Release|ARM64.Build.0 = Release|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Release|x64.ActiveCfg = Release|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Release|x64.Build.0 = Release|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Release|x86.ActiveCfg = Release|Any CPU
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214}.Release|x86.Build.0 = Release|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Debug|ARM.Build.0 = Debug|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Debug|x64.Build.0 = Debug|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Debug|x86.Build.0 = Debug|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Release|ARM.ActiveCfg = Release|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Release|ARM.Build.0 = Release|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Release|ARM64.Build.0 = Release|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Release|x64.ActiveCfg = Release|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Release|x64.Build.0 = Release|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Release|x86.ActiveCfg = Release|Any CPU
+ {E7168B03-68E5-4285-BB95-5660F877577A}.Release|x86.Build.0 = Release|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Debug|ARM.Build.0 = Debug|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Debug|x64.Build.0 = Debug|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Debug|x86.Build.0 = Debug|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Release|ARM.ActiveCfg = Release|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Release|ARM.Build.0 = Release|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Release|ARM64.Build.0 = Release|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Release|x64.ActiveCfg = Release|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Release|x64.Build.0 = Release|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Release|x86.ActiveCfg = Release|Any CPU
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84}.Release|x86.Build.0 = Release|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Debug|ARM.Build.0 = Debug|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Debug|x64.Build.0 = Debug|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Debug|x86.Build.0 = Debug|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Release|ARM.ActiveCfg = Release|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Release|ARM.Build.0 = Release|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Release|ARM64.Build.0 = Release|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Release|x64.ActiveCfg = Release|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Release|x64.Build.0 = Release|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Release|x86.ActiveCfg = Release|Any CPU
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1028,6 +1138,11 @@ Global
{F61AC179-156D-4075-BFEB-355862231F48} = {666CB1A9-562E-453A-A2C7-FD9D77CFDFDD}
{048FED78-4BFA-4FCD-8FF2-905E9CA4D7DD} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F}
{1BFE3DEE-D57A-4497-9CFA-7FF8EEA1B883} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F}
+ {8B1C64F3-A52C-480F-8262-50F824136CF3} = {8712125E-14CD-4E1B-A1CE-4BDE03805942}
+ {2A1F6798-7BD3-42C9-BC30-F6D9D59E7214} = {8712125E-14CD-4E1B-A1CE-4BDE03805942}
+ {E7168B03-68E5-4285-BB95-5660F877577A} = {8712125E-14CD-4E1B-A1CE-4BDE03805942}
+ {A49E1C5A-9489-451C-9CE6-CEA586234B84} = {8712125E-14CD-4E1B-A1CE-4BDE03805942}
+ {099E047C-F40E-47A3-A5BA-81FC1500D5E8} = {3D1D0E04-03FD-480A-8CF8-6E01A2E28625}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9AEC9B81-0222-4DE9-B642-D915C29222AC}
diff --git a/TestDemo/Form1.cs b/TestDemo/Form1.cs
index 756670c9..5777866f 100644
--- a/TestDemo/Form1.cs
+++ b/TestDemo/Form1.cs
@@ -16,7 +16,7 @@ namespace TestDemo
{
AGVToUpSystem aGVToUpSystem = new AGVToUpSystem();
string value = JsonConvert.SerializeObject(aGVToUpSystem);
- string url = $"http://192.168.1.56:8089/apicallback/quicktron/robotjob/report?sign={value}";
+ string url = $"http://192.168.1.99:8089/apicallback/quicktron/robotjob/report?sign={value}";
var res = APIHelper.GetInstance.HttpRequest(url, "", aGVToUpSystem, RequestType.POST);
}
@@ -25,7 +25,7 @@ namespace TestDemo
Upstreamrequest aGVToUpSystem = new Upstreamrequest();
string value = JsonConvert.SerializeObject(aGVToUpSystem);
- string url = $"http://192.168.1.56:8089/apicallback/quicktron/robotjob/upstreamrequest?sign={value}";
+ string url = $"http://192.168.1.99:8089/apicallback/quicktron/robotjob/upstreamrequest?sign={value}";
var res = APIHelper.GetInstance.HttpRequest(url, "", aGVToUpSystem, RequestType.POST);
}
}