Commit 5d31128f 张东亮

1

1 个父辈 11b0ca13
...@@ -38,12 +38,6 @@ ...@@ -38,12 +38,6 @@
<ApplicationIcon>icon.ico</ApplicationIcon> <ApplicationIcon>icon.ico</ApplicationIcon>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Agv">
<HintPath>dll\Agv.dll</HintPath>
</Reference>
<Reference Include="Agv.Server">
<HintPath>dll\Agv.Server.dll</HintPath>
</Reference>
<Reference Include="log4net, Version=2.0.12.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL"> <Reference Include="log4net, Version=2.0.12.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.2.0.12\lib\net45\log4net.dll</HintPath> <HintPath>..\packages\log4net.2.0.12\lib\net45\log4net.dll</HintPath>
</Reference> </Reference>
...@@ -128,6 +122,14 @@ ...@@ -128,6 +122,14 @@
<Content Include="icon.ico" /> <Content Include="icon.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\AGV-Com\Agv\Agv.csproj">
<Project>{a2ef9efc-51c5-4bf6-965f-3a06beadd632}</Project>
<Name>Agv</Name>
</ProjectReference>
<ProjectReference Include="..\..\AGV-Com\Server\Server.csproj">
<Project>{f539cef2-cbd5-4abf-afd2-56c848ded0c0}</Project>
<Name>Server</Name>
</ProjectReference>
<ProjectReference Include="..\AGV_UI\AGV_UI.csproj"> <ProjectReference Include="..\AGV_UI\AGV_UI.csproj">
<Project>{c6d2fc09-46f7-4ec5-a877-15ea06342e4f}</Project> <Project>{c6d2fc09-46f7-4ec5-a877-15ea06342e4f}</Project>
<Name>AGV_UI</Name> <Name>AGV_UI</Name>
......
...@@ -471,6 +471,7 @@ ...@@ -471,6 +471,7 @@
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "AGV调度系统"; this.Text = "AGV调度系统";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmMain_FormClosing); this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmMain_FormClosing);
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FrmMain_FormClosed);
this.Load += new System.EventHandler(this.FrmMain_Load); this.Load += new System.EventHandler(this.FrmMain_Load);
this.tableLayoutPanel3.ResumeLayout(false); this.tableLayoutPanel3.ResumeLayout(false);
this.tabControl1.ResumeLayout(false); this.tabControl1.ResumeLayout(false);
......
...@@ -5,6 +5,9 @@ using System.Windows.Forms; ...@@ -5,6 +5,9 @@ using System.Windows.Forms;
using Common; using Common;
using DeviceLibrary; using DeviceLibrary;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Concurrent;
using System.Threading;
namespace AGVControl namespace AGVControl
{ {
public partial class FrmMain : Form public partial class FrmMain : Form
...@@ -82,7 +85,7 @@ namespace AGVControl ...@@ -82,7 +85,7 @@ namespace AGVControl
if (agvManual[status.AGVName].IsDisposed) if (agvManual[status.AGVName].IsDisposed)
{ {
Agv_Info agv = Context.agvInfo.Find(s => s.Name.Equals(status.AGVName)); Agv_Info agv = Context.agvInfo.Find(s => s.Name.Equals(status.AGVName));
if(agv !=null) if (agv != null)
{ {
agvManual[status.AGVName] = new Manual(agv); agvManual[status.AGVName] = new Manual(agv);
agvManual[status.AGVName].Show(); agvManual[status.AGVName].Show();
...@@ -158,9 +161,16 @@ namespace AGVControl ...@@ -158,9 +161,16 @@ namespace AGVControl
} }
)); ));
} }
static object nodeChangeLock = new object();
ConcurrentQueue<Agv.Node> nodeUpdate = new System.Collections.Concurrent.ConcurrentQueue<Agv.Node>();
private void Server_NodeChanged(Agv.Node clientNode) private void Server_NodeChanged(Agv.Node clientNode)
{ {
if (Monitor.TryEnter(nodeChangeLock, 300))
{
try
{
this.Invoke(new Action(() =>
{
int idx = DeviceLibrary.Context.nodeInfo.FindIndex(s => s.Name.Equals(clientNode.Name)); int idx = DeviceLibrary.Context.nodeInfo.FindIndex(s => s.Name.Equals(clientNode.Name));
if (idx > -1) if (idx > -1)
{ {
...@@ -168,6 +178,19 @@ namespace AGVControl ...@@ -168,6 +178,19 @@ namespace AGVControl
DeviceLibrary.Context.nodeInfo[idx].Shelf = clientNode.Shelf; DeviceLibrary.Context.nodeInfo[idx].Shelf = clientNode.Shelf;
DeviceLibrary.Context.nodeInfo[idx].RFID = clientNode.RFID; DeviceLibrary.Context.nodeInfo[idx].RFID = clientNode.RFID;
DgvNode.Rows[idx].SetValues(DeviceLibrary.Context.nodeInfo[idx].LineName, DeviceLibrary.Context.nodeInfo[idx].Action, DeviceLibrary.Context.nodeInfo[idx].Shelf, DeviceLibrary.Context.nodeInfo[idx].RFID, DeviceLibrary.Context.nodeInfo[idx].Online, DeviceLibrary.Context.nodeInfo[idx].IsUse); DgvNode.Rows[idx].SetValues(DeviceLibrary.Context.nodeInfo[idx].LineName, DeviceLibrary.Context.nodeInfo[idx].Action, DeviceLibrary.Context.nodeInfo[idx].Shelf, DeviceLibrary.Context.nodeInfo[idx].RFID, DeviceLibrary.Context.nodeInfo[idx].Online, DeviceLibrary.Context.nodeInfo[idx].IsUse);
LogUtil.info("Event Updated:" + clientNode.ToText());
}
}));
}
finally
{
Monitor.Exit(nodeChangeLock);
}
}
else
{
nodeUpdate.Enqueue(clientNode);
LogUtil.info("node Enqueue:" + clientNode.ToText());
} }
} }
...@@ -182,12 +205,6 @@ namespace AGVControl ...@@ -182,12 +205,6 @@ namespace AGVControl
{ {
DeviceLibrary.Context.WriteIni(item.Name, SettingString.RFID, item.RFID); DeviceLibrary.Context.WriteIni(item.Name, SettingString.RFID, item.RFID);
} }
//showTimer.Enabled = false;
showTimer.Stop();
// CommonVar.control.AgvChanged -= Control_AgvChanged;
DeviceLibrary.Context.server.NodeChanged -= Server_NodeChanged;
DeviceLibrary.Context.server.NodeOnline -= Server_NodeOnline;
} }
private void DgvNode_CellClick(object sender, DataGridViewCellEventArgs e) private void DgvNode_CellClick(object sender, DataGridViewCellEventArgs e)
...@@ -273,7 +290,27 @@ namespace AGVControl ...@@ -273,7 +290,27 @@ namespace AGVControl
} }
})); }));
Application.DoEvents(); if (nodeUpdate.Count > 0)
{
if (nodeUpdate.TryDequeue(out Agv.Node clientNode))
{
this.Invoke(new Action(() =>
{
int idx = DeviceLibrary.Context.nodeInfo.FindIndex(s => s.Name.Equals(clientNode.Name));
LogUtil.info("UpdateNodeQueue trigger【" + idx + "】:" + clientNode.ToText());
if (idx > -1)
{
DeviceLibrary.Context.nodeInfo[idx].Action = clientNode.Action;
DeviceLibrary.Context.nodeInfo[idx].Shelf = clientNode.Shelf;
DeviceLibrary.Context.nodeInfo[idx].RFID = clientNode.RFID;
DgvNode.Rows[idx].SetValues(DeviceLibrary.Context.nodeInfo[idx].LineName, DeviceLibrary.Context.nodeInfo[idx].Action, DeviceLibrary.Context.nodeInfo[idx].Shelf, DeviceLibrary.Context.nodeInfo[idx].RFID, DeviceLibrary.Context.nodeInfo[idx].Online, DeviceLibrary.Context.nodeInfo[idx].IsUse);
LogUtil.info("UpdateNodeQueue Updated:" + clientNode.ToText());
}
}));
}
}
InShhow = false; InShhow = false;
} }
/// <summary> /// <summary>
...@@ -326,5 +363,14 @@ namespace AGVControl ...@@ -326,5 +363,14 @@ namespace AGVControl
if (tabControl1.SelectedIndex == 1) if (tabControl1.SelectedIndex == 1)
LogUtil.logBox = richTextBox1; LogUtil.logBox = richTextBox1;
} }
private void FrmMain_FormClosed(object sender, FormClosedEventArgs e)
{
//showTimer.Enabled = false;
showTimer.Stop();
// CommonVar.control.AgvChanged -= Control_AgvChanged;
DeviceLibrary.Context.server.NodeChanged -= Server_NodeChanged;
DeviceLibrary.Context.server.NodeOnline -= Server_NodeOnline;
}
} }
} }
...@@ -50,6 +50,7 @@ namespace AGVControl ...@@ -50,6 +50,7 @@ namespace AGVControl
{ {
MiR_API.Del_Mission(Agv); MiR_API.Del_Mission(Agv);
//添加Init任务 //添加Init任务
LogUtil.info(string.Format("{0} 运行模式改变:自动-》手动", Agv.Name));
Agv.AssignTask(SettingString.Init); Agv.AssignTask(SettingString.Init);
} }
...@@ -64,8 +65,9 @@ namespace AGVControl ...@@ -64,8 +65,9 @@ namespace AGVControl
// LogUtil.error(string.Format("{0} 车上有负载,无法开启自动模式,请先清空小车负载!", Agv.Name)); // LogUtil.error(string.Format("{0} 车上有负载,无法开启自动模式,请先清空小车负载!", Agv.Name));
// return; // return;
//} //}
if (MessageBox.Show(this, "是否继续上一次的任务?\r\n" + Agv.Msg, "提示", MessageBoxButtons.YesNo).Equals(DialogResult.No)) // if (MessageBox.Show(this, "是否继续上一次的任务?\r\n" + Agv.Msg, "提示", MessageBoxButtons.YesNo).Equals(DialogResult.No))
{ {
LogUtil.info(string.Format("{0} 运行模式改变:手动-》自动【不继续上一次任务:{1}】", Agv.Name, Agv.Msg));
Agv.CurJob = null; Agv.CurJob = null;
if (Agv.Place.Equals(SettingString.Standby) || Agv.Place.Equals(SettingString.AutoCharge)) if (Agv.Place.Equals(SettingString.Standby) || Agv.Place.Equals(SettingString.AutoCharge))
Agv.Place = ""; Agv.Place = "";
...@@ -73,17 +75,17 @@ namespace AGVControl ...@@ -73,17 +75,17 @@ namespace AGVControl
{ {
MiR_API.Del_Mission(Agv); MiR_API.Del_Mission(Agv);
} }
Agv.RFID = ""; Agv.RFID = "";
} }
else //else
{ //{
if (Agv.IsCon) // if (Agv.IsCon)
{ // {
Agv.Resend(); // Agv.Resend();
} // LogUtil.info(string.Format("{0} 运行模式改变:手动-》自动【继续上一次任务:{1}】", Agv.Name, Agv.Msg));
// }
} //}
} }
Agv.IsUse = chkBxAuto.Checked; Agv.IsUse = chkBxAuto.Checked;
......
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
</layout> </layout>
</appender> </appender>
<logger name="Agv"> <logger name="Agv">
<level value="Info"/> <level value="info"/>
<appender-ref ref="Agv"/> <appender-ref ref="Agv"/>
</logger> </logger>
<logger name="MiR_API"> <logger name="MiR_API">
......
文件属性发生变化
文件属性发生变化
文件属性发生变化
文件属性发生变化
文件属性发生变化
文件属性发生变化
文件属性发生变化
文件属性发生变化
...@@ -12,6 +12,16 @@ ...@@ -12,6 +12,16 @@
设备1出口,MoveD2,c3d71c15-8cca-11eb-952c-94c6911e764d 设备1出口,MoveD2,c3d71c15-8cca-11eb-952c-94c6911e764d
设备2入口,MoveD3,61c2ea2a-8cca-11eb-952c-94c6911e764d 设备2入口,MoveD3,61c2ea2a-8cca-11eb-952c-94c6911e764d
设备2出口,MoveD4,3820bb99-8ccb-11eb-952c-94c6911e764d 设备2出口,MoveD4,3820bb99-8ccb-11eb-952c-94c6911e764d
备料区,MoveFeeder,a3250851-b3c6-11eb-86a7-94c6911e764d
产线1,MoveMP1,13e34f3b-8d3b-11eb-bd58-94c6911e764d 产线1,MoveMP1,13e34f3b-8d3b-11eb-bd58-94c6911e764d
产线2,MoveMP2,13e34f3b-8d3b-11eb-bd58-94c6911e764d 产线2,MoveMP2,13e34f3b-8d3b-11eb-bd58-94c6911e764d
Feeder,MoveFeeder,13e34f3b-8d3b-11eb-bd58-94c6911e764d
\ No newline at end of file \ No newline at end of file
产线3,MoveMP3,13e34f3b-8d3b-11eb-bd58-94c6911e764d
产线4,MoveMP4,13e34f3b-8d3b-11eb-bd58-94c6911e764d
产线5,MoveMP5,13e34f3b-8d3b-11eb-bd58-94c6911e764d
产线6,MoveMP6,13e34f3b-8d3b-11eb-bd58-94c6911e764d
产线7,MoveMP7,13e34f3b-8d3b-11eb-bd58-94c6911e764d
产线8,MoveMP8,13e34f3b-8d3b-11eb-bd58-94c6911e764d
产线9,MoveMP9,13e34f3b-8d3b-11eb-bd58-94c6911e764d
产线10,MoveMP10,13e34f3b-8d3b-11eb-bd58-94c6911e764d
产线11,MoveMP11,13e34f3b-8d3b-11eb-bd58-94c6911e764d
产线12,MoveMP12,13e34f3b-8d3b-11eb-bd58-94c6911e764d
\ No newline at end of file \ No newline at end of file
节点名,别名,线名 节点名,别名,线名
A1,A1,空料串线出口-A1
A2,A2,空料串线入口-A2 A2,A2,空料串线入口-A2
A3,A3,上料线入口-A3 A1,A1,空料串线出口-A1
A4,A4,上料线出口-A4 A4,A4,上料线入口-A4
D1,D1,设备1入口-D1 A3,A3,上料线出口-A3
D2,D2,设备1出口-D2 D1,D1,小料仓入口-D1
D3,D3,设备2入口-D3 D2,D2,小料仓出口-D2
D4,D4,设备3入口-D4 D3,D3,混合仓入口-D3
D4,D4,混合仓出口-D4
Feeder,Feeder,Feeder Feeder,Feeder,Feeder
MP1,MP1,产线1 MP1,MP1,产线1
MP2,MP2,产线2 MP2,MP2,产线2
...@@ -16,3 +16,7 @@ MP5,MP5,产线5 ...@@ -16,3 +16,7 @@ MP5,MP5,产线5
MP6,MP6,产线6 MP6,MP6,产线6
MP7,MP7,产线7 MP7,MP7,产线7
MP8,MP8,产线8 MP8,MP8,产线8
MP9,MP9,产线9
MP10,MP10,产线10
MP11,MP11,产线11
MP12,MP12,产线12
文件属性发生变化
...@@ -31,12 +31,6 @@ ...@@ -31,12 +31,6 @@
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Agv">
<HintPath>..\AGVDispatch\dll\Agv.dll</HintPath>
</Reference>
<Reference Include="Agv.Server">
<HintPath>..\AGVDispatch\dll\Agv.Server.dll</HintPath>
</Reference>
<Reference Include="log4net, Version=2.0.12.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL"> <Reference Include="log4net, Version=2.0.12.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.2.0.12\lib\net45\log4net.dll</HintPath> <HintPath>..\packages\log4net.2.0.12\lib\net45\log4net.dll</HintPath>
</Reference> </Reference>
...@@ -82,6 +76,14 @@ ...@@ -82,6 +76,14 @@
<Compile Include="Standby.cs" /> <Compile Include="Standby.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\AGV-Com\Agv\Agv.csproj">
<Project>{a2ef9efc-51c5-4bf6-965f-3a06beadd632}</Project>
<Name>Agv</Name>
</ProjectReference>
<ProjectReference Include="..\..\AGV-Com\Server\Server.csproj">
<Project>{f539cef2-cbd5-4abf-afd2-56c848ded0c0}</Project>
<Name>Server</Name>
</ProjectReference>
<ProjectReference Include="..\AGV_UI\AGV_UI.csproj"> <ProjectReference Include="..\AGV_UI\AGV_UI.csproj">
<Project>{c6d2fc09-46f7-4ec5-a877-15ea06342e4f}</Project> <Project>{c6d2fc09-46f7-4ec5-a877-15ea06342e4f}</Project>
<Name>AGV_UI</Name> <Name>AGV_UI</Name>
......
文件属性发生变化
文件属性发生变化
...@@ -184,7 +184,7 @@ namespace DeviceLibrary ...@@ -184,7 +184,7 @@ namespace DeviceLibrary
} }
if (BoxOutJobType.CheckFullTask(RFID,out string tarname)) if (BoxOutJobType.CheckFullTask(RFID,out string tarname))
{ {
runInfo = RFID+"料架进入小车完成,去"+tarname; runInfo = RFID+"料架进入小车完成";
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
RequestManager.AgvRemoveRfid(RFID); RequestManager.AgvRemoveRfid(RFID);
......
...@@ -288,6 +288,12 @@ namespace DeviceLibrary ...@@ -288,6 +288,12 @@ namespace DeviceLibrary
RecycleStation = SettingString.D3; RecycleStation = SettingString.D3;
return true; return true;
} }
res = JobType.FindNeedEnterMission(agv, SettingString.A4, true);
if (res)
{
RecycleStation = SettingString.A4;
return true;
}
res = JobType.FindNeedEnterMission(agv, SettingString.A2, true); res = JobType.FindNeedEnterMission(agv, SettingString.A2, true);
if (res) if (res)
{ {
......
...@@ -71,17 +71,45 @@ namespace DeviceLibrary ...@@ -71,17 +71,45 @@ namespace DeviceLibrary
CurTaskState = Context.GetTakJobState(agv); CurTaskState = Context.GetTakJobState(agv);
if (curJobStep.IsStep(EXECUTE_STEP.P1_NONE)) if (curJobStep.IsStep(EXECUTE_STEP.P1_NONE))
{ {
curJobStep.ToNextStep(EXECUTE_STEP.P2_WAIT_REACH_FEEDER);
curJobStep.ToNextStep(EXECUTE_STEP.P2_WAIT_REACH_LINE); runInfo = "收到送满料任务,向" + "Feeder" + "运行";
runInfo = "收到任务,向线体" + TargetPlace + "运行";
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
Context.MoveToNode(agv, TargetPlace); Context.MoveToNode(agv, "Feeder");
UpdateJobTaskInfo(agv); UpdateJobTaskInfo(agv);
} }
else if (curJobStep.IsStep(EXECUTE_STEP.P2_WAIT_REACH_FEEDER))
{
CurTaskState = Context.GetTakJobState(agv);
if (Context.CheckTaskMoveFinished(agv, "Feeder", CurTaskState))
{
curJobStep.ToNextStep(EXECUTE_STEP.P2_WAIT_OPERATION_ON_FEEDER);
runInfo = "到达" + "Feeder" + ",等待挑拣首套料";
msg += runInfo;
curJobStep.Msg = msg;
}
}
else if (curJobStep.IsStep(EXECUTE_STEP.P2_WAIT_OPERATION_ON_FEEDER))
{
MiR_API.Get_IO_Status(agv, out bool[] input, out bool[] output);
System.Threading.Thread.Sleep(500);
if ((input != null && input[0]))
{
curJobStep.ToNextStep(EXECUTE_STEP.P2_WAIT_REACH_LINE);
runInfo = "料架上的首套料在" + TargetPlace + "挑拣完成";//,向线体"+TargetPlace+"运行
msg += runInfo;
curJobStep.Msg = msg;
//Context.MoveToNode(agv, TargetPlace);
//UpdateJobTaskInfo(agv);
RequestManager.AgvRemoveRfid(RFID);
return new RecycleEmptyShelf(TargetPlace, "", true);
}
}
else if (curJobStep.IsStep(EXECUTE_STEP.P2_WAIT_REACH_LINE)) else if (curJobStep.IsStep(EXECUTE_STEP.P2_WAIT_REACH_LINE))
{ {
CurTaskState = Context.GetTakJobState(agv);
if (Context.CheckTaskMoveFinished(agv, TargetPlace, CurTaskState)) if (Context.CheckTaskMoveFinished(agv, TargetPlace, CurTaskState))
{ {
curJobStep.ToNextStep(EXECUTE_STEP.P3_WAIT_MANNUAL_OPERATION); curJobStep.ToNextStep(EXECUTE_STEP.P3_WAIT_MANNUAL_OPERATION);
...@@ -120,6 +148,14 @@ namespace DeviceLibrary ...@@ -120,6 +148,14 @@ namespace DeviceLibrary
/// </summary> /// </summary>
P1_NONE, P1_NONE,
/// <summary> /// <summary>
/// 先到Feeder
/// </summary>
P2_WAIT_REACH_FEEDER,
/// <summary>
/// 等待feeder人员操作
/// </summary>
P2_WAIT_OPERATION_ON_FEEDER,
/// <summary>
/// 等待到达线体 /// 等待到达线体
/// </summary> /// </summary>
P2_WAIT_REACH_LINE, P2_WAIT_REACH_LINE,
......
...@@ -94,6 +94,7 @@ namespace DeviceLibrary ...@@ -94,6 +94,7 @@ namespace DeviceLibrary
} }
else if (curJobStep.IsStep(EXECUTE_STEP.P2_WAIT_REACH_STATION)) else if (curJobStep.IsStep(EXECUTE_STEP.P2_WAIT_REACH_STATION))
{ {
CurTaskState = Context.GetTakJobState(agv);
if (Context.CheckTaskMoveFinished(agv, TargetPlace, CurTaskState)) if (Context.CheckTaskMoveFinished(agv, TargetPlace, CurTaskState))
{ {
curJobStep.ToNextStep(EXECUTE_STEP.P3_WAIT_STATION_RESPONSE); curJobStep.ToNextStep(EXECUTE_STEP.P3_WAIT_STATION_RESPONSE);
...@@ -125,6 +126,7 @@ namespace DeviceLibrary ...@@ -125,6 +126,7 @@ namespace DeviceLibrary
} }
else if (curJobStep.IsStep(EXECUTE_STEP.P4_WAIT_SHELF_IN_STATION)) else if (curJobStep.IsStep(EXECUTE_STEP.P4_WAIT_SHELF_IN_STATION))
{ {
CurTaskState = Context.GetTakJobState(agv);
if (Context.CheckEnterOrLeaveFinished(agv, SettingString.Leave, CurTaskState)) if (Context.CheckEnterOrLeaveFinished(agv, SettingString.Leave, CurTaskState))
{ {
//Context.server.CloseDoor(TargetPlace); //Context.server.CloseDoor(TargetPlace);
......
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16 # Visual Studio Version 17
VisualStudioVersion = 16.0.30104.148 VisualStudioVersion = 17.2.32616.157
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AGVDispatch", "AGVDispatch\AGVDispatch.csproj", "{E1C3207D-C67D-4B46-A9DB-D182F2074CCB}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AGVDispatch", "AGVDispatch\AGVDispatch.csproj", "{E1C3207D-C67D-4B46-A9DB-D182F2074CCB}"
EndProject EndProject
...@@ -11,6 +11,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "Common\Common.csp ...@@ -11,6 +11,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "Common\Common.csp
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AGV_UI", "AGV_UI\AGV_UI.csproj", "{C6D2FC09-46F7-4EC5-A877-15EA06342E4F}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AGV_UI", "AGV_UI\AGV_UI.csproj", "{C6D2FC09-46F7-4EC5-A877-15EA06342E4F}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Agv", "..\AGV-Com\Agv\Agv.csproj", "{A2EF9EFC-51C5-4BF6-965F-3A06BEADD632}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server", "..\AGV-Com\Server\Server.csproj", "{F539CEF2-CBD5-4ABF-AFD2-56C848DED0C0}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
...@@ -33,6 +37,14 @@ Global ...@@ -33,6 +37,14 @@ Global
{C6D2FC09-46F7-4EC5-A877-15EA06342E4F}.Debug|Any CPU.Build.0 = Debug|Any CPU {C6D2FC09-46F7-4EC5-A877-15EA06342E4F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C6D2FC09-46F7-4EC5-A877-15EA06342E4F}.Release|Any CPU.ActiveCfg = Release|Any CPU {C6D2FC09-46F7-4EC5-A877-15EA06342E4F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C6D2FC09-46F7-4EC5-A877-15EA06342E4F}.Release|Any CPU.Build.0 = Release|Any CPU {C6D2FC09-46F7-4EC5-A877-15EA06342E4F}.Release|Any CPU.Build.0 = Release|Any CPU
{A2EF9EFC-51C5-4BF6-965F-3A06BEADD632}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A2EF9EFC-51C5-4BF6-965F-3A06BEADD632}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A2EF9EFC-51C5-4BF6-965F-3A06BEADD632}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A2EF9EFC-51C5-4BF6-965F-3A06BEADD632}.Release|Any CPU.Build.0 = Release|Any CPU
{F539CEF2-CBD5-4ABF-AFD2-56C848DED0C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F539CEF2-CBD5-4ABF-AFD2-56C848DED0C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F539CEF2-CBD5-4ABF-AFD2-56C848DED0C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F539CEF2-CBD5-4ABF-AFD2-56C848DED0C0}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!