Commit a29760e4 顾剑亮

删除优先级

1 个父辈 bf3a978e
正在显示 38 个修改的文件 包含 231 行增加894 行删除
......@@ -25,7 +25,7 @@
<appSettings>
<add key="ITS" value="http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/VMIGetBoxDestInfo?boxRFID=" />
<add key="WebService" value="http://127.0.0.1/Webservice/AGVService/"/>
<add key="FLEET" value="10.85.199.3"/>
<add key="FLEET" value="10.85.199.3"/>
<!--<add key="LocalIP" value="192.168.103.12"/>
<add key="AutoCharge" value="false"/>
<add key="ChargeWait" value="1"/>
......@@ -42,18 +42,35 @@
<add key="E4" value="false"/>
<add key="E5" value="false"/>
<add key="E6" value="false"/>
<add key="E7" value="false"/>
<add key="E8" value="false"/>
<add key="E9" value="false"/>
<add key="E10" value="false"/>
<add key="E11" value="false"/>
<add key="E12" value="false"/>
<add key="E13" value="false"/>
<add key="E14" value="false"/>
<add key="E15" value="false"/>
<add key="E16" value="false"/>
<add key="E21" value="false"/>
<add key="E22" value="false"/>
<!--产线任务状态-->
<add key="nodesMission" value=""/>
<add key="nodesLevel" value=""/>
<add key="G1" value="false"/>
<add key="G2" value="false"/>
<add key="G3" value="false"/>
<add key="G4" value="false"/>
<add key="G5" value="false"/>
<add key="G6" value="false"/>
<add key="G7" value="false"/>
<add key="G8" value="false"/>
<add key="G9" value="false"/>
<add key="G10" value="false"/>
<add key="G11" value="false"/>
<add key="G12" value="false"/>
<add key="G13" value="false"/>
<add key="G14" value="false"/>
<add key="G15" value="false"/>
<add key="G16" value="false"/>
<add key="G21" value="false"/>
<add key="G22" value="false"/>
</appSettings>
</configuration>
\ No newline at end of file
......@@ -240,7 +240,7 @@ namespace BLL
buff[idx++] = (byte)node.RFID[0];
buff[idx++] = Convert.ToByte(node.RFID.Substring(1));
buff[idx++] = (byte)node.Action;
buff[idx++] = (byte)node.Level;
buff[idx++] = 0;
idx += 4; //预留
buff[idx] = 0xDA;
return buff;
......@@ -260,11 +260,11 @@ namespace BLL
string rfid = (char)buff[idx] + buff[idx + 1].ToString();
idx += 2;
ClientAction action = (ClientAction)buff[idx++];
ClientLevel level = (ClientLevel)buff[idx++];
idx += 1;
idx += 4; //预留
if (buff[idx] != 0xDA) return null;
ClientNode node = new ClientNode(name, rfid, action, level);
ClientNode node = new ClientNode(name, rfid, action);
return node;
}
......@@ -284,11 +284,9 @@ namespace BLL
}
if (Common.nodeInfo[idx].Action != node.Action ||
Common.nodeInfo[idx].Level != node.Level ||
Common.nodeInfo[idx].RFID != node.RFID)
{
Common.nodeInfo[idx].Action = node.Action;
Common.nodeInfo[idx].Level = node.Level;
Common.nodeInfo[idx].RFID = node.RFID;
Common.log.Info(node.Name + "更新 " + node.ToText());
NodeChanged?.Invoke(idx);
......
......@@ -19,8 +19,9 @@ namespace AGVControl
/// 小车信息
/// </summary>
public static List<Agv_Info> agvInfo;
public static Dictionary<string,ClientLevel> linePlace;
public static List<string> linePlace;
public static BLL.AgvServer server;
public static BLL.Control control;
public static BLL.MiR_API mir;
......@@ -35,51 +36,39 @@ namespace AGVControl
public static void ReadLinePlace()
{
string s1 = Common.appConfig.AppSettings.Settings["nodesLevel"].Value;
string s2 = Common.appConfig.AppSettings.Settings["nodesMission"].Value;
if (s1.Equals("") || s2.Equals(""))
return;
string[] nodesLevel=s1.Split(',');
string[] nodesMission = s2.Split(',');
if(nodesLevel.Length.Equals(nodesMission.Length) && nodesMission.Length.Equals(0).Equals(false))
{
log.Info("程序上一次关闭时有任务未完成:");
log.Info("节点名称:"+s2+"\n 紧急等级:"+s1);
for (int i = 0; i < nodesMission.Length; i++)
{
linePlace.Add(nodesMission[i], (ClientLevel)Enum.Parse(typeof(ClientLevel), nodesLevel[i]));
}
}
string[] s = System.IO.File.ReadAllLines(CONFIG_PATH + "LinePlace.txt");
linePlace = new List<string>();
linePlace.AddRange(s);
}
public static void AddLinePlace(string nodeName)
{
int idx = Common.nodeInfo.FindIndex(s => s.Name == nodeName);
if(idx>-1)
{
if(Common.linePlace.ContainsKey(nodeName))
{
log.Info("AddLinePlace 节点" + nodeName + "已存在任务队列,无需重复添加");
return;
}
Common.linePlace.Add(nodeName,Common.nodeInfo[idx].Level);
Common.appConfig.AppSettings.Settings["nodesLevel"].Value = string.Join(",",linePlace.Values);
Common.appConfig.AppSettings.Settings["nodesMission"].Value =string.Join(",",linePlace.Keys);
Common.appConfig.Save();
}
else
{
log.Error("AddLinePlace 失败 节点"+ nodeName+"不存在");
}
}
public static void RemoveLinePlace(string nodeName)
{
Common.linePlace.Remove(nodeName);
Common.appConfig.AppSettings.Settings["nodesLevel"].Value = string.Join(",", linePlace.Values);
Common.appConfig.AppSettings.Settings["nodesMission"].Value = string.Join(",", linePlace.Keys);
Common.appConfig.Save();
}
//public static void AddLinePlace(string nodeName)
//{
// int idx = Common.nodeInfo.FindIndex(s => s.Name == nodeName);
// if(idx>-1)
// {
// if(Common.linePlace.ContainsKey(nodeName))
// {
// log.Info("AddLinePlace 节点" + nodeName + "已存在任务队列,无需重复添加");
// return;
// }
// Common.linePlace.Add(nodeName,Common.nodeInfo[idx].Level);
// Common.appConfig.AppSettings.Settings["nodesLevel"].Value = string.Join(",",linePlace.Values);
// Common.appConfig.AppSettings.Settings["nodesMission"].Value =string.Join(",",linePlace.Keys);
// Common.appConfig.Save();
// }
// else
// {
// log.Error("AddLinePlace 失败 节点"+ nodeName+"不存在");
// }
//}
//public static void RemoveLinePlace(string nodeName)
//{
// Common.linePlace.Remove(nodeName);
// Common.appConfig.AppSettings.Settings["nodesLevel"].Value = string.Join(",", linePlace.Values);
// Common.appConfig.AppSettings.Settings["nodesMission"].Value = string.Join(",", linePlace.Keys);
// Common.appConfig.Save();
//}
public static void CheckAGVMissionState()
{
......@@ -162,6 +151,10 @@ namespace AGVControl
/// </summary>
public string Name { set; get; }
/// <summary>
/// IP地址
/// </summary>
public string IP { set; get; }
/// <summary>
/// RFID
/// </summary>
public string RFID
......@@ -183,10 +176,6 @@ namespace AGVControl
/// </summary>
public ClientAction Action { set; get; }
/// <summary>
/// 优先级
/// </summary>
public ClientLevel Level { set; get; }
/// <summary>
/// 小车名称
/// </summary>
public string AgvName { set; get; }
......@@ -203,13 +192,14 @@ namespace AGVControl
/// 客户端节点
/// </summary>
/// <param name="name"></param>
/// <param name="ip"></param>
/// <param name="isUse"></param>
public ClientNode(string name, bool isUse)
public ClientNode(string name, string ip, bool isUse)
{
Name = name;
IP = ip;
RFID = rfid;
Action = ClientAction.None;
Level = ClientLevel.Low;
AgvName = "";
Online = false;
IsUse = isUse;
......@@ -222,12 +212,11 @@ namespace AGVControl
/// <param name="rfid"></param>
/// <param name="action"></param>
/// <param name="level"></param>
public ClientNode(string name, string rfid = "", ClientAction action = ClientAction.None, ClientLevel level = ClientLevel.Low)
public ClientNode(string name, string rfid = "", ClientAction action = ClientAction.None)
{
Name = name;
RFID = rfid;
Action = action;
Level = level;
AgvName = "";
Online = false;
IsUse = false;
......@@ -239,19 +228,19 @@ namespace AGVControl
/// <returns></returns>
public string ToText()
{
string s = string.Format("Name={0}, Action={1}, Level={2}, RFID={3}", Name, Action, Level, RFID);
string s = string.Format("Name={0}, Action={1}, RFID={2}", Name, Action, RFID);
return s;
}
public string[] ToRow()
{
//节点,动作,优先级,RFID,AGV名称,在线,调用,清除AGV
//节点,IP,动作,RFID,AGV名称,在线,调用,清除AGV
string[] s = new string[8];
s[0] = Name;
s[1] = IP;
if (Online)
{
s[1] = Action.ToString();
s[2] = Level.ToString();
s[2] = Action.ToString();
s[3] = RFID;
s[4] = AgvName;
}
......@@ -268,7 +257,6 @@ namespace AGVControl
{
RFID = "00";
Action = ClientAction.None;
Level = ClientLevel.Low;
AgvName = "";
Online = false;
}
......@@ -484,25 +472,6 @@ namespace AGVControl
}
/// <summary>
/// 客户端的优先级
/// </summary>
public enum ClientLevel : byte
{
/// <summary>
/// 低
/// </summary>
Low = 0,
/// <summary>
/// 中等
/// </summary>
Middle = 1,
/// <summary>
/// 高
/// </summary>
High = 2
}
/// <summary>
/// 地点状态
/// </summary>
public enum PlaceState
......
......@@ -187,7 +187,7 @@ namespace BLL
rtn = FindA6Leave(out string nextNode);
if (rtn)
{
rtn = Common.mir.Add_Mission(agv, Common.agvMission["MoveA6"]);
rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["MoveA6"]);
if (rtn)
{
agv.NextPlace = nextNode;
......@@ -208,30 +208,30 @@ namespace BLL
return;
}
ClientLevel clientLevel = Common.linePlace.Values.Max<ClientLevel>();
//出空料架
foreach (var item in Common.linePlace)
{
if (!clientLevel.Equals(item.Value))
continue;
string name = item.Key;
index = Common.nodeInfo.FindIndex(s => s.Name.Equals(name) && s.Action == ClientAction.NeedLeave && s.IsUse);
if (index > -1)
{
rtn = Common.mir.Add_Mission(agv, Common.agvMission["Move" + name]);
if (rtn)
{
Common.nodeInfo[index].AgvName = Common.agvInfo[idx].Name;
Common.linePlace.Remove(name);
}
agv.TaskSend = rtn ? "Move" + name : "";
}
Common.log.Info(string.Format("[{0}-{1}] 出空料架.", name, item.Value));
if (Common.linePlace.Count.Equals(0).Equals(false))
Common.log.Info("剩余需要出空料架的节点:" + string.Join(",", Common.linePlace.Keys.ToArray())
+ ";对应紧急程度:" + string.Join(",", Common.linePlace.Values.ToArray()));
if (rtn) break;
}
//ClientLevel clientLevel = Common.linePlace.Values.Max<ClientLevel>();
////出空料架
//foreach (var item in Common.linePlace)
//{
// if (!clientLevel.Equals(item.Value))
// continue;
// string name = item.Key;
// index = Common.nodeInfo.FindIndex(s => s.Name.Equals(name) && s.Action == ClientAction.NeedLeave && s.IsUse);
// if (index > -1)
// {
// rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Move" + name]);
// if (rtn)
// {
// Common.nodeInfo[index].AgvName = Common.agvInfo[idx].Name;
// Common.linePlace.Remove(name);
// }
// agv.TaskSend = rtn ? "Move" + name : "";
// }
// Common.log.Info(string.Format("[{0}-{1}] 出空料架.", name, item.Value));
// if (Common.linePlace.Count.Equals(0).Equals(false))
// Common.log.Info("剩余需要出空料架的节点:" + string.Join(",", Common.linePlace.Keys.ToArray())
// + ";对应紧急程度:" + string.Join(",", Common.linePlace.Values.ToArray()));
// if (rtn) break;
//}
......@@ -241,7 +241,7 @@ namespace BLL
// index = Common.nodeInfo.FindIndex(s => s.Name.Equals(name) && s.Action == ClientAction.NeedLeave && s.IsUse);
// if (index > -1)
// {
// rtn = Common.mir.Add_Mission(agv, Common.agvMission["Move" + name]);
// rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Move" + name]);
// if (rtn)
// {
// Common.nodeInfo[index].AgvName = Common.agvInfo[idx].Name;
......@@ -277,7 +277,7 @@ namespace BLL
if (node.Action == ClientAction.MayEnter)
{
if (agv.TaskSend == "Leave") return;
rtn = Common.mir.Add_Mission(agv, Common.agvMission["Leave"]);
rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Leave"]);
agv.TaskSend = rtn ? "Leave" : "";
if (rtn)
Common.log.Info(string.Format("{0}到达{1},可以进入料架", agv.Name, agv.Place));
......@@ -293,7 +293,7 @@ namespace BLL
if (node.Action == ClientAction.MayEnter)
{
if (agv.TaskSend == "Leave") return;
rtn = Common.mir.Add_Mission(agv, Common.agvMission["Leave"]);
rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Leave"]);
agv.TaskSend = rtn ? "Leave" : "";
if (rtn)
Common.log.Info(string.Format("{0}到达{1},可以进入料架", agv.Name, agv.Place));
......@@ -301,7 +301,7 @@ namespace BLL
else if (node.Action == ClientAction.MayLeave)
{
if (agv.TaskSend == "Leave") return;
rtn = Common.mir.Add_Mission(agv, Common.agvMission["Leave"]);
rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Leave"]);
agv.TaskSend = rtn ? "Leave" : "";
if (rtn)
Common.log.Info(string.Format("{0}到达{1},可以出去料架", agv.Name, agv.Place));
......@@ -339,7 +339,7 @@ namespace BLL
if (node.Action == ClientAction.MayEnter)
{
if (agv.TaskSend == "Leave") return;
rtn = Common.mir.Add_Mission(agv, Common.agvMission["Leave"]);
rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Leave"]);
agv.TaskSend = rtn ? "Leave" : "";
if (rtn)
Common.log.Info(string.Format("{0}到达{1},可以进入料架", agv.Name, agv.Place));
......@@ -347,7 +347,7 @@ namespace BLL
else if (node.Action == ClientAction.MayLeave)
{
if (agv.TaskSend == "Leave") return;
rtn = Common.mir.Add_Mission(agv, Common.agvMission["Leave"]);
rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Leave"]);
agv.TaskSend = rtn ? "Leave" : "";
if (rtn)
Common.log.Info(string.Format("{0}到达{1},可以出去料架", agv.Name, agv.Place));
......@@ -396,7 +396,7 @@ namespace BLL
if (node.Action == ClientAction.FinishLeave)
{
string nextPlace = agv.NextPlace;
rtn = Common.mir.Add_Mission(agv, Common.agvMission["Move" + nextPlace]);
rtn = Common.mir.Add_Mission_Fleet(agv, Common.agvMission["Move" + nextPlace]);
if (rtn)
{
agv.NextPlace = "";
......
......@@ -49,14 +49,10 @@ namespace BLL
//加到任务
int idx = AGVControl.Common.nodeInfo.FindIndex(s => s.Name == value);
if(idx>-1)
{
AGVControl.Common.linePlace.Add(value, AGVControl.Common.nodeInfo[idx].Level);
}
if (idx > -1)
AGVControl.Common.linePlace.Add(value);
else
{
AGVControl.Common.log.Error("CreateEmptyRecycleTask " + value + "不存在");
}
}
else
{
......
......@@ -237,41 +237,41 @@ namespace AGVControl
private void btnAddlinePlace_Click(object sender, EventArgs e)
{
if (TxtPlace.Text == "")
{
MessageBox.Show("请输入节点名");
return;
}
Common.AddLinePlace(TxtPlace.Text.ToUpper());
dgvLinePlace.Rows.Clear();
foreach (var item in Common.linePlace)
{
dgvLinePlace.Rows.Add(item.Key, item.Value);
}
//if (TxtPlace.Text == "")
//{
// MessageBox.Show("请输入节点名");
// return;
//}
//Common.AddLinePlace(TxtPlace.Text.ToUpper());
//dgvLinePlace.Rows.Clear();
//foreach (var item in Common.linePlace)
//{
// dgvLinePlace.Rows.Add(item.Key, item.Value);
//}
}
private void btnDeletelinePlace_Click(object sender, EventArgs e)
{
if (TxtPlace.Text == "")
{
MessageBox.Show("请输入节点名");
return;
}
Common.RemoveLinePlace(TxtPlace.Text.ToUpper());
dgvLinePlace.Rows.Clear();
foreach (var item in Common.linePlace)
{
dgvLinePlace.Rows.Add(item.Key, item.Value);
}
//if (TxtPlace.Text == "")
//{
// MessageBox.Show("请输入节点名");
// return;
//}
//Common.RemoveLinePlace(TxtPlace.Text.ToUpper());
//dgvLinePlace.Rows.Clear();
//foreach (var item in Common.linePlace)
//{
// dgvLinePlace.Rows.Add(item.Key, item.Value);
//}
}
private void btnReadlinePlace_Click(object sender, EventArgs e)
{
dgvLinePlace.Rows.Clear();
foreach (var item in Common.linePlace)
{
dgvLinePlace.Rows.Add(item.Key, item.Value);
}
//dgvLinePlace.Rows.Clear();
//foreach (var item in Common.linePlace)
//{
// dgvLinePlace.Rows.Add(item.Key, item.Value);
//}
}
}
}
......@@ -150,10 +150,10 @@
<metadata name="Column6.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column7.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="Column12.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column12.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="Column7.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column9.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
......
......@@ -42,9 +42,8 @@ namespace AGVControl
Common.log = log4net.LogManager.GetLogger("AgvServer");
Common.log.Info("=====程序开始=====");
ReadConfig();
Common.linePlace =new Dictionary<string, ClientLevel>();
Common.ReadLinePlace();
Common.mir = new MiR_API();
Common.control = new BLL.Control();
//软件开启时检查小车当前的任务状态
......@@ -93,38 +92,24 @@ namespace AGVControl
Common.agvMission.Add(temp[0], temp[1]);
}
Common.nodeInfo = new List<ClientNode>();
Common.nodeInfo.Add(new ClientNode("A5", "", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["A5"].Value)));
Common.nodeInfo.Add(new ClientNode("A6", "", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["A6"].Value)));
Common.agvProductionLine = new Dictionary<string, string>();
path = Common.CONFIG_PATH + "AgvProductionLine.csv";
line = System.IO.File.ReadAllLines(path);
for (int i = 0; i < line.Length; i++)
{
temp = line[i].Split(',');
if (temp.Length != 2) continue;
if (temp.Length != 3) continue;
Common.agvProductionLine.Add(temp[0], temp[1]);
bool isUse = Convert.ToBoolean(Common.appConfig.AppSettings.Settings[temp[1]].Value);
Common.nodeInfo.Add(new ClientNode(temp[1], temp[2], isUse));
}
Common.itsHttp = Common.appConfig.AppSettings.Settings["ITS"].Value;
Common.nodeInfo = new List<ClientNode>
{
new ClientNode("A5", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["A5"].Value)),
new ClientNode("A6", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["A6"].Value)),
new ClientNode("E1", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["E1"].Value)),
new ClientNode("E2", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["E2"].Value)),
new ClientNode("E3", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["E3"].Value)),
new ClientNode("E4", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["E4"].Value)),
new ClientNode("E5", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["E5"].Value)),
new ClientNode("E6", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["E6"].Value)),
new ClientNode("E8", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["E8"].Value)),
new ClientNode("E9", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["E9"].Value)),
new ClientNode("E10", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["E10"].Value)),
new ClientNode("E11", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["E11"].Value)),
new ClientNode("E12", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["E12"].Value)),
new ClientNode("E14", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["E14"].Value)),
new ClientNode("E15", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["E15"].Value)),
new ClientNode("E16", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["E16"].Value)),
new ClientNode("E21", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["E21"].Value)),
new ClientNode("E22", Convert.ToBoolean(Common.appConfig.AppSettings.Settings["E22"].Value))
};
}
......
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
......@@ -23,32 +23,54 @@
</root>
</log4net>
<appSettings>
<add key="ITS" value="http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/VMIGetBoxDestInfo?boxRFID=" />
<add key="WebService" value="http://127.0.0.1/Webservice/AGVService/" />
<add key="FLEET" value="10.85.199.3" />
<add key="MiR_R1763" value="False" />
<add key="MiR_R1764" value="false" />
<add key="MiR_R1767" value="false" />
<add key="MiR_R1768" value="false" />
<add key="A5" value="True" />
<add key="A6" value="True" />
<add key="E1" value="False" />
<add key="E2" value="false" />
<add key="E3" value="false" />
<add key="E4" value="false" />
<add key="E5" value="false" />
<add key="E6" value="false" />
<add key="E8" value="false" />
<add key="E9" value="false" />
<add key="E10" value="false" />
<add key="E11" value="false" />
<add key="E12" value="false" />
<add key="E14" value="false" />
<add key="E15" value="false" />
<add key="E16" value="false" />
<add key="E21" value="false" />
<add key="E22" value="false" />
<add key="nodesMission" value="" />
<add key="nodesLevel" value="" />
</appSettings>
<add key="ITS" value="http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/VMIGetBoxDestInfo?boxRFID=" />
<add key="WebService" value="http://127.0.0.1/Webservice/AGVService/"/>
<add key="FLEET" value="10.85.199.3"/>
<!--<add key="LocalIP" value="192.168.103.12"/>
<add key="AutoCharge" value="false"/>
<add key="ChargeWait" value="1"/>
<add key="ChargeThreshold" value="20,70"/>-->
<add key="MiR_R1763" value="false"/>
<add key="MiR_R1764" value="false"/>
<add key="MiR_R1767" value="false"/>
<add key="MiR_R1768" value="false"/>
<add key="A5" value="false"/>
<add key="A6" value="false"/>
<add key="E1" value="false"/>
<add key="E2" value="false"/>
<add key="E3" value="false"/>
<add key="E4" value="false"/>
<add key="E5" value="false"/>
<add key="E6" value="false"/>
<add key="E7" value="false"/>
<add key="E8" value="false"/>
<add key="E9" value="false"/>
<add key="E10" value="false"/>
<add key="E11" value="false"/>
<add key="E12" value="false"/>
<add key="E13" value="false"/>
<add key="E14" value="false"/>
<add key="E15" value="false"/>
<add key="E16" value="false"/>
<add key="E21" value="false"/>
<add key="E22" value="false"/>
<add key="G1" value="false"/>
<add key="G2" value="false"/>
<add key="G3" value="false"/>
<add key="G4" value="false"/>
<add key="G5" value="false"/>
<add key="G6" value="false"/>
<add key="G7" value="false"/>
<add key="G8" value="false"/>
<add key="G9" value="false"/>
<add key="G10" value="false"/>
<add key="G11" value="false"/>
<add key="G12" value="false"/>
<add key="G13" value="false"/>
<add key="G14" value="false"/>
<add key="G15" value="false"/>
<add key="G16" value="false"/>
<add key="G21" value="false"/>
<add key="G22" value="false"/>
</appSettings>
</configuration>
\ No newline at end of file
7,MiR_R1763,192.168.12.20,Basic ZGlzdHJpYnV0b3I6NjJmMmYwZjFlZmYxMGQzMTUyYzk1ZjZmMDU5NjU3NmU0ODJiYjhlNDQ4MDY0MzNmNGNmOTI5NzkyODM0YjAxNA==
8,MiR_R1764,10.85.199.56,Basic ZGlzdHJpYnV0b3I6NjJmMmYwZjFlZmYxMGQzMTUyYzk1ZjZmMDU5NjU3NmU0ODJiYjhlNDQ4MDY0MzNmNGNmOTI5NzkyODM0YjAxNA==
9,MiR_R1767,10.85.199.57,Basic ZGlzdHJpYnV0b3I6NjJmMmYwZjFlZmYxMGQzMTUyYzk1ZjZmMDU5NjU3NmU0ODJiYjhlNDQ4MDY0MzNmNGNmOTI5NzkyODM0YjAxNA==
10,MiR_R1768,10.85.199.58,Basic ZGlzdHJpYnV0b3I6NjJmMmYwZjFlZmYxMGQzMTUyYzk1ZjZmMDU5NjU3NmU0ODJiYjhlNDQ4MDY0MzNmNGNmOTI5NzkyODM0YjAxNA==
7,MiR_R1763,10.85.199.71,Basic ZGlzdHJpYnV0b3I6NjJmMmYwZjFlZmYxMGQzMTUyYzk1ZjZmMDU5NjU3NmU0ODJiYjhlNDQ4MDY0MzNmNGNmOTI5NzkyODM0YjAxNA==
8,MiR_R1764,10.85.199.72,Basic ZGlzdHJpYnV0b3I6NjJmMmYwZjFlZmYxMGQzMTUyYzk1ZjZmMDU5NjU3NmU0ODJiYjhlNDQ4MDY0MzNmNGNmOTI5NzkyODM0YjAxNA==
9,MiR_R1767,10.85.199.73,Basic ZGlzdHJpYnV0b3I6NjJmMmYwZjFlZmYxMGQzMTUyYzk1ZjZmMDU5NjU3NmU0ODJiYjhlNDQ4MDY0MzNmNGNmOTI5NzkyODM0YjAxNA==
10,MiR_R1768,10.85.199.74,Basic ZGlzdHJpYnV0b3I6NjJmMmYwZjFlZmYxMGQzMTUyYzk1ZjZmMDU5NjU3NmU0ODJiYjhlNDQ4MDY0MzNmNGNmOTI5NzkyODM0YjAxNA==
\ No newline at end of file
D1,E1
D2,E2
D3,E3
D4,E4
D5,E5
D6,E6
D7,E7
D8,E8
D9,E9
D10,E10
D11,E11
D12,E12
D13,E13
D14,E14
D15,E15
D16,E16
FeederIn,E21
FeederOut,E22
\ No newline at end of file
D1,E1,192.168.0.1
D2,E2,192.168.0.2
D3,E3,192.168.0.3
D4,E4,192.168.0.4
D5,E5,192.168.0.5
D6,E6,192.168.0.6
D7,E7,192.168.0.7
D8,E8,192.168.0.8
D9,E9,192.168.0.9
D10,E10,192.168.0.10
D11,E11,192.168.0.11
D12,E12,192.168.0.12
D13,E13,192.168.0.13
D14,E14,192.168.0.14
D15,E15,192.168.0.15
D16,E16,192.168.0.16
FeederIn,E21,192.168.0.17
FeederOut,E22,192.168.0.18
C1,G1,192.168.0.19
C2,G2,192.168.0.20
C3,G3,192.168.0.21
C4,G4,192.168.0.22
C5,G5,192.168.0.23
C6,G6,192.168.0.24
C7,G7,192.168.0.25
C8,G8,192.168.0.26
C9,G9,192.168.0.27
C10,G10,192.168.0.28
C11,G11,192.168.0.29
C12,G12,192.168.0.30
C13,G13,192.168.0.31
C14,G14,192.168.0.32
C15,G15,192.168.0.33
C16,G16,192.168.0.34
\ No newline at end of file
......@@ -20,7 +20,6 @@ D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AGVControl-ProductionLine\obj\Debug\AGVControl-ProductionLine.csproj.CopyComplete
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AGVControl-ProductionLine\obj\Debug\AGVControl-ProductionLine.exe
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AGVControl-ProductionLine\obj\Debug\AGVControl-ProductionLine.pdb
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AGVControl-ProductionLine\obj\Debug\AGVControl-ProductionLine.csprojAssemblyReference.cache
C:\ZDL\Gitee\AGVControl-Qisda-ProductionLine\AGVControl-ProductionLine\bin\Debug\AGVControl-ProductionLine.exe.config
C:\ZDL\Gitee\AGVControl-Qisda-ProductionLine\AGVControl-ProductionLine\bin\Debug\AGVControl-ProductionLine.exe
C:\ZDL\Gitee\AGVControl-Qisda-ProductionLine\AGVControl-ProductionLine\bin\Debug\AGVControl-ProductionLine.pdb
......
此文件类型无法预览
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{9208965E-3C78-408A-AFDB-466881033768}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>AgvServer_DL</RootNamespace>
<AssemblyName>AgvServer_DL</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Debug\AgvServer_DL.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="log4net">
<HintPath>..\..\..\DLL\log4net.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="AgvServer.cs" />
<Compile Include="Common.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Net.Sockets;
using System.Threading;
namespace Asa
{
/// <summary>
/// 公共参数
/// </summary>
public static class Common
{
/// <summary>
/// 节点信息
/// </summary>
public static List<ClientNode> nodeInfo;
/// <summary>
/// 小车信息
/// </summary>
public static List<AgvInfo> agvInfo;
}
/// <summary>
/// 客户端
/// </summary>
public class Client
{
/// <summary>
/// 循环
/// </summary>
public bool Loop;
/// <summary>
/// IP地址
/// </summary>
public string IP;
/// <summary>
/// 是否连接
/// </summary>
public bool IsConn;
/// <summary>
/// 节点名称
/// </summary>
public List<string> nodeName;
/// <summary>
/// 套接字
/// </summary>
public Socket Socket;
/// <summary>
/// 接收数据线程
/// </summary>
public Thread ListenNet;
}
/// <summary>
/// 客户端的节点
/// </summary>
public class ClientNode
{
private string rfid = "00";
/// <summary>
/// 节点名称
/// </summary>
public string Name { set; get; }
/// <summary>
/// RFID
/// </summary>
public string RFID
{
set
{
if (value.Length < 2)
rfid = value.PadLeft(2, '0');
else
rfid = value;
}
get
{
return rfid;
}
}
/// <summary>
/// 动作
/// </summary>
public ClientAction Action { set; get; }
/// <summary>
/// 优先级
/// </summary>
public ClientLevel Level { set; get; }
/// <summary>
/// 小车名称
/// </summary>
public string AgvName { set; get; }
/// <summary>
/// 在线
/// </summary>
public bool Online { set; get; }
/// <summary>
/// 是否可用
/// </summary>
public bool IsUse { set; get; }
/// <summary>
/// 客户端节点
/// </summary>
/// <param name="name"></param>
/// <param name="isUse"></param>
public ClientNode(string name, bool isUse)
{
Name = name;
RFID = rfid;
Action = ClientAction.None;
Level = ClientLevel.Low;
AgvName = "";
Online = false;
IsUse = isUse;
}
/// <summary>
/// 客户端节点
/// </summary>
/// <param name="name"></param>
/// <param name="rfid"></param>
/// <param name="action"></param>
/// <param name="level"></param>
public ClientNode(string name, string rfid = "", ClientAction action = ClientAction.None, ClientLevel level = ClientLevel.Low)
{
Name = name;
RFID = rfid;
Action = action;
Level = level;
AgvName = "";
Online = false;
IsUse = false;
}
/// <summary>
/// 所有属性的文本形式
/// </summary>
/// <returns></returns>
public string ToText()
{
string s = string.Format("Name={0}, Action={1}, Level={2}", Name, Action, Level);
return s;
}
/// <summary>
/// 脱机
/// </summary>
public void Offline()
{
RFID = "00";
Action = ClientAction.None;
Level = ClientLevel.Low;
AgvName = "";
Online = false;
}
}
public class AgvInfo
{
/// <summary>
/// 小车名称
/// </summary>
public string Name { set; get; }
/// <summary>
/// 小车在FLEET中的ID号
/// </summary>
public string ID { set; get; }
/// <summary>
/// IP地址
/// </summary>
public string IP { set; get; }
/// <summary>
/// 授权码
/// </summary>
public string Authorization { set; get; }
/// <summary>
/// 当前架子的RFID
/// </summary>
public string RFID { set; get; }
/// <summary>
/// 是否在线
/// </summary>
public bool IsCon { set; get; }
/// <summary>
/// 是否可用
/// </summary>
public bool IsUse { set; get; }
/// <summary>
/// 地点
/// </summary>
public string Place { set; get; }
/// <summary>
/// 小车的状态id
/// </summary>
public int StateID { set; get; }
/// <summary>
/// 小车的状态
/// </summary>
public string StateText { set; get; }
/// <summary>
/// 电量百分比
/// </summary>
public int Battery { set; get; }
/// <summary>
/// 任务文本
/// </summary>
public string Mission_text { set; get; }
/// <summary>
/// 任务的状态
/// </summary>
//public Mission_Status MissionStatus { set; get; }
/// <summary>
/// 下一个任务
/// </summary>
public string NextMission { set; get; }
/// <summary>
/// 关门,用于执行一次
/// </summary>
public bool CloseDoor { set; get; }
/// <summary>
/// 任务发送,用于已调用API,但还没有修改状态
/// </summary>
public bool TaskSend { set; get; }
/// <summary>
/// 闲置等待时间,用于充电
/// </summary>
public int WaitTime { set; get; }
/// <summary>
/// 临时待机位,用于执行一次
/// </summary>
public bool StandbyTemp { set; get; }
public AgvInfo(string id, string name, string ip, string authorization, string ioId, bool isUse)
{
ID = id;
Name = name;
IP = ip;
Authorization = authorization;
RFID = "";
IsCon = false;
IsUse = isUse;
Place = "";
StateText = "";
WaitTime = 0;
}
public string[] ToRow()
{
//AGV名称,IP,AGV状态,任务状态,地点,后续任务,在线,电量,调用,清除缓存
string[] s = new string[10];
s[0] = Name;
s[1] = IP;
if (IsCon)
{
s[2] = StateText;
//s[3] = string.Format("{0}({1})", MissionStatus.ToString(), (int)MissionStatus);
s[4] = Place;
s[5] = NextMission;
}
s[6] = IsCon.ToString();
s[7] = Battery + "%";
s[8] = IsUse.ToString();
s[9] = "Clear";
return s;
}
public string[] ToMission()
{
//AGV名称,IP,AGV状态,任务状态,地点,后续任务,在线,电量,调用,清除缓存
string[] s = new string[2];
s[0] = Name;
s[1] = Mission_text;
return s;
}
/// <summary>
/// 脱机
/// </summary>
public void Offline()
{
IsCon = false;
//Mark = "";
//RFID = "";
//Place = "";
//StateID = -1;
//StateText = "";
//MissionStatus = Mission_Status.None;
//MissionQueue = "";
}
}
/// <summary>
/// 客户端的动作
/// </summary>
public enum ClientAction : byte
{
/// <summary>
/// 没有动作
/// </summary>
None = 0,
/// <summary>
/// 需要7寸D料架
/// </summary>
NeedD = 1,
/// <summary>
/// 需要大尺寸C料架
/// </summary>
NeedC = 2,
/// <summary>
/// 需要进入料架
/// </summary>
NeedEnter = 3,
/// <summary>
/// 需要出去料架
/// </summary>
NeedLeave = 4,
/// <summary>
/// 需要进入离开料架
/// </summary>
NeedEnterLeave = 5,
/// <summary>
/// 准备进入,服务器发送
/// </summary>
ReadyEnter = 6,
/// <summary>
/// 可以进入料架
/// </summary>
MayEnter = 7,
/// <summary>
/// 完成进入料架
/// </summary>
FinishEnter = 8,
/// <summary>
/// 准备离开,服务器发送
/// </summary>
ReadyLeave = 9,
/// <summary>
/// 可以出去料架
/// </summary>
MayLeave = 10,
/// <summary>
/// 完成出去料架
/// </summary>
FinishLeave = 11,
}
/// <summary>
/// 客户端的优先级
/// </summary>
public enum ClientLevel : byte
{
/// <summary>
/// 低
/// </summary>
Low = 0,
/// <summary>
/// 中等
/// </summary>
Middle = 1,
/// <summary>
/// 高
/// </summary>
High = 2
}
}
\ No newline at end of file
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("AgvServer_DL")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("AgvServer_DL")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("9208965e-3c78-408a-afdb-466881033768")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
<?xml version="1.0"?>
<doc>
<assembly>
<name>AgvServer_DL</name>
</assembly>
<members>
<member name="T:Asa.AgvServer">
<summary>
AGV服务端
</summary>
</member>
<member name="M:Asa.AgvServer.#ctor(System.String)">
<summary>
AGV服务端
</summary>
<param name="logName"></param>
</member>
<member name="M:Asa.AgvServer.Start">
<summary>
开启服务
</summary>
</member>
<member name="M:Asa.AgvServer.Stop">
<summary>
停止服务
</summary>
</member>
<member name="M:Asa.AgvServer.ListenClient">
<summary>
监听客户端
</summary>
</member>
<member name="M:Asa.AgvServer.ListenNet(System.Object)">
<summary>
客户端数据接收
</summary>
<param name="obj">索引</param>
</member>
<member name="M:Asa.AgvServer.Encode(Asa.AgvServer.ClientNode)">
<summary>
编码
</summary>
<param name="node"></param>
<returns></returns>
</member>
<member name="M:Asa.AgvServer.Decode(System.Byte[])">
<summary>
解码
</summary>
<param name="buff"></param>
<returns></returns>
</member>
<member name="M:Asa.AgvServer.HexBuff(System.Byte[])">
<summary>
16进制
</summary>
<param name="buff"></param>
<returns></returns>
</member>
<member name="T:Asa.AgvServer.ClientNode">
<summary>
客户端的节点
</summary>
</member>
<member name="P:Asa.AgvServer.ClientNode.Name">
<summary>
节点名称
</summary>
</member>
<member name="P:Asa.AgvServer.ClientNode.RFID">
<summary>
RFID
</summary>
</member>
<member name="P:Asa.AgvServer.ClientNode.Action">
<summary>
动作
</summary>
</member>
<member name="P:Asa.AgvServer.ClientNode.Level">
<summary>
优先级
</summary>
</member>
<member name="M:Asa.AgvServer.ClientNode.#ctor(System.String,System.String,Asa.AgvServer.ClientAction,Asa.AgvServer.ClientLevel)">
<summary>
客户端节点
</summary>
<param name="name"></param>
<param name="rfid"></param>
<param name="action"></param>
<param name="level"></param>
</member>
<member name="M:Asa.AgvServer.ClientNode.ToText">
<summary>
所有属性的文本形式
</summary>
<returns></returns>
</member>
<member name="T:Asa.AgvServer.ClientAction">
<summary>
客户端的动作
</summary>
</member>
<member name="F:Asa.AgvServer.ClientAction.None">
<summary>
没有动作
</summary>
</member>
<member name="F:Asa.AgvServer.ClientAction.NeedD">
<summary>
需要7寸D料架
</summary>
</member>
<member name="F:Asa.AgvServer.ClientAction.NeedC">
<summary>
需要大尺寸C料架
</summary>
</member>
<member name="F:Asa.AgvServer.ClientAction.NeedEnter">
<summary>
需要进入料架
</summary>
</member>
<member name="F:Asa.AgvServer.ClientAction.NeedLeave">
<summary>
需要出去料架
</summary>
</member>
<member name="F:Asa.AgvServer.ClientAction.NeedEnterLeave">
<summary>
需要进入离开料架
</summary>
</member>
<member name="F:Asa.AgvServer.ClientAction.ReadyEnter">
<summary>
准备进入,服务器发送
</summary>
</member>
<member name="F:Asa.AgvServer.ClientAction.MayEnter">
<summary>
可以进入料架
</summary>
</member>
<member name="F:Asa.AgvServer.ClientAction.FinishEnter">
<summary>
完成进入料架
</summary>
</member>
<member name="F:Asa.AgvServer.ClientAction.ReadyLeave">
<summary>
准备离开,服务器发送
</summary>
</member>
<member name="F:Asa.AgvServer.ClientAction.MayLeave">
<summary>
可以出去料架
</summary>
</member>
<member name="F:Asa.AgvServer.ClientAction.FinishLeave">
<summary>
完成出去料架
</summary>
</member>
<member name="T:Asa.AgvServer.ClientLevel">
<summary>
客户端的优先级
</summary>
</member>
<member name="F:Asa.AgvServer.ClientLevel.Low">
<summary>
</summary>
</member>
<member name="F:Asa.AgvServer.ClientLevel.Middle">
<summary>
中等
</summary>
</member>
<member name="F:Asa.AgvServer.ClientLevel.High">
<summary>
</summary>
</member>
</members>
</doc>
此文件类型无法预览
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AgvServer_DL\bin\Debug\AgvServer_DL.xml
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AgvServer_DL\bin\Debug\AgvServer_DL.dll
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AgvServer_DL\bin\Debug\AgvServer_DL.pdb
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AgvServer_DL\obj\Debug\AgvServer.csproj.CoreCompileInputs.cache
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AgvServer_DL\obj\Debug\AgvServer_DL.dll
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AgvServer_DL\obj\Debug\AgvServer_DL.pdb
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AgvServer\bin\Debug\AgvServer_DL.xml
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AgvServer\bin\Debug\AgvServer_DL.dll
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AgvServer\bin\Debug\AgvServer_DL.pdb
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AgvServer\bin\Debug\log4net.dll
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AgvServer\obj\Debug\AgvServer.csproj.CoreCompileInputs.cache
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AgvServer\obj\Debug\AgvServer.csproj.CopyComplete
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AgvServer\obj\Debug\AgvServer_DL.dll
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AgvServer\obj\Debug\AgvServer_DL.pdb
D:\OneDrive - 上海挚锦科技有限公司\SMD\AGVControl-Qisda-ProductionLine\AgvServer\obj\Debug\AgvServer.csprojAssemblyReference.cache
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!