@@ -0,0 +1,60 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
using System.Net; | |||||
using System.Web; | |||||
using Newtonsoft.Json; | |||||
using System.Net.Http; | |||||
namespace BPASmartClient.AGV | |||||
{ | |||||
public class AGVHelper | |||||
{ | |||||
public static AGVHelper _Instance { get; set; } | |||||
public static AGVHelper GetInstance => _Instance ?? (_Instance = new AGVHelper()); | |||||
public AGVHelper() | |||||
{ | |||||
} | |||||
public string HttpRequest(string url, string head, string body) | |||||
{ | |||||
return PostData(url, head, body); | |||||
} | |||||
public string PostData(string url, string head, string body) | |||||
{ | |||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); | |||||
request.Method = "POST"; | |||||
request.Headers["header"] = head; | |||||
//request.Proxy = new WebProxy("192.168.1.12",80); | |||||
byte[] bytes = Encoding.UTF8.GetBytes(body); | |||||
request.ContentType = "application/json; charset=UTF-8"; ;//窗体数据被编码为名称/值对形式 | |||||
//request.ContentType = "application/json"; | |||||
request.ContentLength = bytes.Length; | |||||
Stream myResponseStream = request.GetRequestStream(); | |||||
myResponseStream.Write(bytes, 0, bytes.Length); | |||||
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); | |||||
StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); | |||||
string retString = myStreamReader.ReadToEnd(); | |||||
myStreamReader.Close(); | |||||
myResponseStream.Close(); | |||||
if (response != null) | |||||
{ | |||||
response.Close(); | |||||
} | |||||
if (request != null) | |||||
{ | |||||
request.Abort(); | |||||
} | |||||
return retString;//返回响应报文 | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,19 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.AGV | |||||
{ | |||||
/// <summary> | |||||
/// AGV上下料交互反馈接口(上游系统->快仓系统) | |||||
/// </summary> | |||||
internal class AGVLoadInteracteModel | |||||
{ | |||||
public string agvCode { get; set;} | |||||
public string jobId { get; set; } | |||||
public string msgId { get; set; } | |||||
public bool? complete { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,49 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.AGV | |||||
{ | |||||
/// <summary> | |||||
/// AGV任务下发 | |||||
/// </summary> | |||||
internal class AGVModel | |||||
{ | |||||
/// <summary> | |||||
/// 必填项 | |||||
/// </summary> | |||||
public string robotJobId { get; set; } | |||||
/// <summary> | |||||
/// 必填项 | |||||
/// </summary> | |||||
public long warehouseId { get; set; } | |||||
public string? robotJobGroupId { get; set; } | |||||
public int? sequence { get; set; } | |||||
/// <summary> | |||||
/// 必填项 | |||||
/// </summary> | |||||
public int jobPriority { get; set; } | |||||
/// <summary> | |||||
/// 必填项 | |||||
/// </summary> | |||||
public int jobPriorityType { get; set; } | |||||
public string? deadline { get; set; } | |||||
public string? agvType { get; set; } | |||||
public string? agvEndPoint { get; set; } | |||||
public bool? needOperation { get; set; } | |||||
public string? agvCode { get; set; } | |||||
public int? taskCountDown { get; set; } | |||||
public string? businessType { get; set; } | |||||
/// <summary> | |||||
/// 必填项 | |||||
/// </summary> | |||||
public string jobType { get; set; } | |||||
/// <summary> | |||||
/// 必填项 | |||||
/// </summary> | |||||
public IJobData jobData { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,42 @@ | |||||
namespace BPASmartClient.AGV | |||||
{ | |||||
public class AGVRequestUrl | |||||
{ | |||||
//public string HttpHeader { get; set; } | |||||
//public string TaskSendBody { get; set; } | |||||
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"; | |||||
AGVInteracteUrl= $"http://{IpAddress}/api/quicktron/wcs/standardized.roller.job.upstream.response"; | |||||
} | |||||
#region Url汇总 | |||||
//各种AGV的移动及搬运任务。 | |||||
// 本接口请求参数包含公共字段及具体任务字段两部分组成。 | |||||
//支持批量任务下发。 | |||||
public string TaskSendUrl { get; set; } | |||||
//货架搬运任务指令下发后,允许上游系统调用该接口取消移位任务,支持取消策略。不同车型允许取消的任务节点不同,具体信息见API文档 | |||||
public string TaskCancelUrl { get; set; } | |||||
//工作站任务实操完成后调用该接口。如果bucket有其他任务去执行其他任务。在线工作站货架直接回库,离线工作站分配AGV回库。 | |||||
public string TaskCompleteUrl { get; set; } | |||||
//1.辊筒AGV在手动上下料时请求上游交互后,上游下发的反馈接口 | |||||
//2.料箱AGV在任务下发需要和上游进行交互时调用此接口 | |||||
//3.翻板车AGV在投递点前确认时上游反馈接口 | |||||
public string AGVInteracteUrl { get; set; } | |||||
#endregion | |||||
} | |||||
} | |||||
@@ -0,0 +1,19 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.AGV | |||||
{ | |||||
/// <summary> | |||||
/// AGV任务取消 | |||||
/// </summary> | |||||
internal class AGVTaskCancelModel | |||||
{ | |||||
public string robotJobId { get; set; } | |||||
public long warehouseId { get; set; } | |||||
public string? executeMode { get; set; } | |||||
public string? reason { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,21 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.AGV | |||||
{ | |||||
/// <summary> | |||||
/// AGV任务完成通知 | |||||
/// </summary> | |||||
internal class AGVTaskCompleteNotifyModel | |||||
{ | |||||
public string? robotJobId { get; set; } | |||||
public string? bucketCode { get; set; } | |||||
public string? bucketslotCode { get; set; } | |||||
public long warehouseId { get; set; } | |||||
public bool? nullFlag { get; set; } | |||||
public string? jobId { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,27 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.AGV | |||||
{ | |||||
/// <summary> | |||||
/// 辊筒点到点搬运 | |||||
/// </summary> | |||||
internal class AGV_PointRollerJobData:IJobData | |||||
{ | |||||
public string? containerCode { get; set; } | |||||
public string startPoint { get; set; } | |||||
public string endPoint { get; set; } | |||||
public bool autoLoad { get; set; } | |||||
public bool enableIOLoad { get; set; } | |||||
public bool autoUnload { get; set; } | |||||
public bool enableIOUnload { get; set; } | |||||
public long? loadEquipmentId { get; set; } = null; | |||||
public long? unloadEquipmentId { get; set; } = null; | |||||
public bool? loadInteractive { get; set; } | |||||
public int? loadHeight { get; set; } | |||||
public int? unloadHeight { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,26 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.AGV | |||||
{ | |||||
/// <summary> | |||||
/// 辊筒货位到货位搬运 | |||||
/// </summary> | |||||
internal class AGV_SlotRollerJobData:IJobData | |||||
{ | |||||
public string? containerCode { get; set; } | |||||
public string startIotCode { get; set; } | |||||
public string endSlotCode { get; set; } | |||||
public bool autoLoad { get; set; } | |||||
public bool enableIOLoad { get; set; } | |||||
public bool autoUnload { get; set; } | |||||
public bool enableIOUnload { get; set; } | |||||
public long? loadEquipmentId { get; set; } = null; | |||||
public long? unLoadEquipmentId { get; set; } = null; | |||||
public bool? loadInteractive { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,13 @@ | |||||
<Project Sdk="Microsoft.NET.Sdk"> | |||||
<PropertyGroup> | |||||
<TargetFramework>net6.0</TargetFramework> | |||||
<ImplicitUsings>enable</ImplicitUsings> | |||||
<Nullable>enable</Nullable> | |||||
</PropertyGroup> | |||||
<ItemGroup> | |||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> | |||||
</ItemGroup> | |||||
</Project> |
@@ -0,0 +1,17 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
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; } | |||||
} | |||||
} |
@@ -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 HttpResponseData | |||||
{ | |||||
public string code { get; set; } | |||||
public bool message { get; set; } | |||||
public string robotJobId { get; set; } | |||||
} | |||||
} |
@@ -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 HttpResponseModel | |||||
{ | |||||
public string code { get; set; } | |||||
public string message { get; set; } | |||||
public bool success { get; set; } | |||||
public HttpResponseData data { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,13 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.AGV | |||||
{ | |||||
public interface IJobData | |||||
{ | |||||
} | |||||
} |
@@ -411,7 +411,120 @@ namespace BPASmartClient.MorkF | |||||
{ | { | ||||
stirFryGoods = stirFry.stirFrymessage.stirFryGoods; | stirFryGoods = stirFry.stirFrymessage.stirFryGoods; | ||||
MessageLog.GetInstance.Show("接收到小炒流程信息"); | MessageLog.GetInstance.Show("接收到小炒流程信息"); | ||||
} | |||||
//流程解析 | |||||
foreach (var item in stirFryGoods) | |||||
{ | |||||
MessageLog.GetInstance.ShowEx($"执行菜谱{item.GoodsKey}"); | |||||
// morkF.listStirBom.Add(item.StirFryBomInfo);//添加订单制作流程 | |||||
foreach (var items in item.StirFryBomInfo.StirFryActions) | |||||
{ | |||||
MessageLog.GetInstance.Show($"执行流程{items.Time}"); | |||||
foreach (var pro in items.RobotActions) | |||||
{ | |||||
switch (pro) | |||||
{ | |||||
case StirFryRobotAction.等待: | |||||
MessageLog.GetInstance.Show($"等待"); | |||||
break; | |||||
case StirFryRobotAction.清洗槽取锅: | |||||
MessageLog.GetInstance.Show($"清洗槽取锅"); | |||||
break; | |||||
case StirFryRobotAction.灶放锅: | |||||
MessageLog.GetInstance.Show($"灶放锅"); | |||||
break; | |||||
case StirFryRobotAction.清洗槽放锅: | |||||
MessageLog.GetInstance.Show($"清洗槽放锅"); | |||||
break; | |||||
case StirFryRobotAction.取A料: | |||||
MessageLog.GetInstance.Show($"取A料"); | |||||
break; | |||||
case StirFryRobotAction.取B料: | |||||
MessageLog.GetInstance.Show($"取B料"); | |||||
break; | |||||
case StirFryRobotAction.取C料: | |||||
MessageLog.GetInstance.Show($"取C料"); | |||||
break; | |||||
case StirFryRobotAction.加入A料: | |||||
MessageLog.GetInstance.Show($"加入A料"); | |||||
break; | |||||
case StirFryRobotAction.加入B料: | |||||
MessageLog.GetInstance.Show($"加入B料"); | |||||
break; | |||||
case StirFryRobotAction.加入C料: | |||||
MessageLog.GetInstance.Show($"加入C料"); | |||||
break; | |||||
case StirFryRobotAction.切换快速: | |||||
MessageLog.GetInstance.Show($"切换快速"); | |||||
break; | |||||
case StirFryRobotAction.切换中速: | |||||
MessageLog.GetInstance.Show($"切换中速"); | |||||
break; | |||||
case StirFryRobotAction.丢料盒: | |||||
MessageLog.GetInstance.Show($"丢料盒"); | |||||
break; | |||||
case StirFryRobotAction.倒菜: | |||||
MessageLog.GetInstance.Show($"倒菜"); | |||||
break; | |||||
case StirFryRobotAction.灶取锅: | |||||
MessageLog.GetInstance.Show($"灶取锅"); | |||||
break; | |||||
} | |||||
} | |||||
foreach (var pro in items.PotActions) | |||||
{ | |||||
switch (pro) | |||||
{ | |||||
case StirFryPotAction.NONE: | |||||
break; | |||||
case StirFryPotAction.加热: | |||||
MessageLog.GetInstance.Show($"加热"); | |||||
break; | |||||
case StirFryPotAction.大火t1s: | |||||
MessageLog.GetInstance.Show($"大火1s"); | |||||
break; | |||||
case StirFryPotAction.加油: | |||||
MessageLog.GetInstance.Show($"加油"); | |||||
break; | |||||
case StirFryPotAction.中火t2s: | |||||
MessageLog.GetInstance.Show($"中火2s"); | |||||
break; | |||||
case StirFryPotAction.小火持续: | |||||
MessageLog.GetInstance.Show($"小火持续"); | |||||
break; | |||||
case StirFryPotAction.中火持续: | |||||
MessageLog.GetInstance.Show($"中火持续"); | |||||
break; | |||||
case StirFryPotAction.大火持续: | |||||
MessageLog.GetInstance.Show($"大火持续"); | |||||
break; | |||||
case StirFryPotAction.停止火力: | |||||
MessageLog.GetInstance.Show($"停止火力"); | |||||
break; | |||||
case StirFryPotAction.搅拌臂上位: | |||||
MessageLog.GetInstance.Show($"搅拌臂上位"); | |||||
break; | |||||
case StirFryPotAction.搅拌臂中位: | |||||
MessageLog.GetInstance.Show($"搅拌臂中位"); | |||||
break; | |||||
case StirFryPotAction.搅拌臂下位: | |||||
MessageLog.GetInstance.Show($"搅拌臂下位"); | |||||
break; | |||||
case StirFryPotAction.低速旋转: | |||||
MessageLog.GetInstance.Show($"低速旋转"); | |||||
break; | |||||
case StirFryPotAction.快速旋转: | |||||
MessageLog.GetInstance.Show($"快速旋转"); | |||||
break; | |||||
case StirFryPotAction.停止旋转: | |||||
MessageLog.GetInstance.Show($"停止旋转"); | |||||
break; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
}); | }); | ||||
} | } | ||||
@@ -96,7 +96,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.MorkT_HQ", " | |||||
EndProject | EndProject | ||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DosingSystem", "DosingSystem\DosingSystem.csproj", "{4E0B01AD-CFD0-4BD5-BBE6-AD2A4183B4DB}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DosingSystem", "DosingSystem\DosingSystem.csproj", "{4E0B01AD-CFD0-4BD5-BBE6-AD2A4183B4DB}" | ||||
EndProject | EndProject | ||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BPASmartClient.MorkTJuicer", "BPASmartClient.MorkTJuicer\BPASmartClient.MorkTJuicer.csproj", "{724087A3-E7E7-4494-B844-414FF5CD1D40}" | |||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.MorkTJuicer", "BPASmartClient.MorkTJuicer\BPASmartClient.MorkTJuicer.csproj", "{724087A3-E7E7-4494-B844-414FF5CD1D40}" | |||||
EndProject | |||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BPASmartClient.AGV", "BPASmartClient.AGV\BPASmartClient.AGV.csproj", "{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}" | |||||
EndProject | EndProject | ||||
Global | Global | ||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
@@ -892,6 +894,26 @@ Global | |||||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Release|x64.Build.0 = Release|Any CPU | {724087A3-E7E7-4494-B844-414FF5CD1D40}.Release|x64.Build.0 = Release|Any CPU | ||||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Release|x86.ActiveCfg = Release|Any CPU | {724087A3-E7E7-4494-B844-414FF5CD1D40}.Release|x86.ActiveCfg = Release|Any CPU | ||||
{724087A3-E7E7-4494-B844-414FF5CD1D40}.Release|x86.Build.0 = Release|Any CPU | {724087A3-E7E7-4494-B844-414FF5CD1D40}.Release|x86.Build.0 = Release|Any CPU | ||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Debug|ARM.ActiveCfg = Debug|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Debug|ARM.Build.0 = Debug|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Debug|ARM64.ActiveCfg = Debug|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Debug|ARM64.Build.0 = Debug|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Debug|x64.ActiveCfg = Debug|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Debug|x64.Build.0 = Debug|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Debug|x86.ActiveCfg = Debug|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Debug|x86.Build.0 = Debug|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Release|ARM.ActiveCfg = Release|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Release|ARM.Build.0 = Release|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Release|ARM64.ActiveCfg = Release|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Release|ARM64.Build.0 = Release|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Release|x64.ActiveCfg = Release|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Release|x64.Build.0 = Release|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Release|x86.ActiveCfg = Release|Any CPU | |||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8}.Release|x86.Build.0 = Release|Any CPU | |||||
EndGlobalSection | EndGlobalSection | ||||
GlobalSection(SolutionProperties) = preSolution | GlobalSection(SolutionProperties) = preSolution | ||||
HideSolutionNode = FALSE | HideSolutionNode = FALSE | ||||
@@ -936,6 +958,7 @@ Global | |||||
{00C17D87-A323-4A97-BC21-7039E55614DE} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F} | {00C17D87-A323-4A97-BC21-7039E55614DE} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F} | ||||
{4E0B01AD-CFD0-4BD5-BBE6-AD2A4183B4DB} = {8712125E-14CD-4E1B-A1CE-4BDE03805942} | {4E0B01AD-CFD0-4BD5-BBE6-AD2A4183B4DB} = {8712125E-14CD-4E1B-A1CE-4BDE03805942} | ||||
{724087A3-E7E7-4494-B844-414FF5CD1D40} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F} | {724087A3-E7E7-4494-B844-414FF5CD1D40} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F} | ||||
{507A30E2-246E-4AC9-82F4-BE8FBBC1C5B8} = {3D1D0E04-03FD-480A-8CF8-6E01A2E28625} | |||||
EndGlobalSection | EndGlobalSection | ||||
GlobalSection(ExtensibilityGlobals) = postSolution | GlobalSection(ExtensibilityGlobals) = postSolution | ||||
SolutionGuid = {9AEC9B81-0222-4DE9-B642-D915C29222AC} | SolutionGuid = {9AEC9B81-0222-4DE9-B642-D915C29222AC} | ||||