Commit f42804a9 张东亮

包装仓出库搬运逻辑更新(与服务器通讯判断出库任务是否完成)

1 个父辈 b0593d6e
{
"ExpandedNodes": [
""
"",
"\\AGVControl",
"\\AGVControl\\BLL"
],
"SelectedNode": "\\AGVControl.sln",
"PreviewInSolutionExplorer": false
......
此文件类型无法预览
......@@ -5,7 +5,7 @@
</startup>
<appSettings>
<!--Server address-->
<add key="http.server" value="http://10.85.160.25/myproject/" />
<add key="http.server" value="http://10.85.199.25/myproject/" />
<add key="LocalIP" value="192.168.103.12"/>
<add key="FLEET" value="10.85.199.3"/>
<add key="AutoCharge" value="false"/>
......
......@@ -4,14 +4,89 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AGVControl;
using System.Web.Script.Serialization;
namespace BLL
{
public class AGVManager
{
private static string Addr_getShelfLockInfo = "/rest/api/qisda/device/getShelfLockInfo"; //包装仓获取料架锁定状态地址
/// <summary>
/// 小车从B区域离开前检查出库任务是否完成
/// </summary>
/// <param name="rfid"></param>
/// <returns>true:可以离开</returns>
public static bool LeaveCheck(Agv_Info agv, out int taskCount)
{
taskCount = 0;
try
{
//Common.log.OutInfo("URL:" + Common.webService["URL"]);
string url = ConfigAppSettings.GetValue(Setting_Init.http_server) + "rest/api/qisda/device/getShelfLockInfo?rfid=" + agv.RFID;
Common.log.OutInfo("URL: " + url);
var client = new RestSharp.RestClient(url) { Timeout = -1 };
var request = new RestSharp.RestRequest(RestSharp.Method.GET);
RestSharp.IRestResponse response = client.Execute(request);
string json = response.Content;
Common.log.OutInfo("Return: " + json);
if (string.IsNullOrWhiteSpace(json)) return true; //可以离开
ShelfLockInfo serverResult = JsonHelper.DeserializeJsonToObject<ShelfLockInfo>(json);
if (serverResult == null)
{
Common.log.OutInfo(" 没有收到服务器反馈");
return true;
}
if (serverResult.code != 0) return true;
if (serverResult.data.Count == 0) //该料架出库完成
{
Common.log.OutInfo(agv.Name+" 料架【" + agv.RFID + "】 无剩余出库任务,data.Count="+serverResult.data.Count.ToString());
return true;
}
else //该料架的出库任务未完成
{
// foreach (ShelfLockData item in serverResult.data)
// {
taskCount = serverResult.data[0].taskCount;
Common.log.OutInfo(agv.Name + " [RFID=" + serverResult.data[0].rfid + "] [taskCount=" + serverResult.data[0].taskCount + "]");
// }
return false;
}
//if (!obj.TryGetValue("data", out object value)) return true; //可以离开
//// {"code":0,"msg":"ok","data":["":]}
//if (value.Equals(null))
//{
// return true;
//}
//Dictionary<string, object> dic = (Dictionary<string, object>)value;
//if (dic.TryGetValue("taskCount", out object count))
//{
// if (count.ToString() == "0")
// {
// return true;
// }
// else
// {
// int.TryParse(count.ToString(), out taskCount);
// return false;
// }
//}
//else
//{
// return true;
//}
}
catch (Exception ex)
{
Common.log.OutError(ex);
return true;
}
}
private static string Addr_getShelfLockInfo = "/rest/api/qisda/device/getShelfLockInfo"; //包装仓获取料架锁定状态地址
public static bool GetShelfLockInfo(string rfid, out List<string> shelfLockNodeNames)
{
string msg = "";
......@@ -26,12 +101,12 @@ namespace BLL
string resultStr = HttpHelper.Post(server, "");
Common.log.OutInfo( "料架锁定状态 " + " 【" + server + "】【" + resultStr + "】");
Common.log.OutInfo("料架锁定状态 " + " 【" + server + "】【" + resultStr + "】");
ShelfLockInfo serverResult = JsonHelper.DeserializeJsonToObject<ShelfLockInfo>(resultStr);
if (serverResult == null)
{
msg = " 没有收到服务器反馈";
msg = " 没有收到服务器反馈";
Common.log.OutInfo(msg);
return false;
}
......@@ -46,8 +121,8 @@ namespace BLL
{
shelfLockNodeNames = new List<string>();
foreach (ShelfLockData item in serverResult.data)
{
if(!shelfLockNodeNames.Contains(Common.webService[item.cid]))
{
if (!shelfLockNodeNames.Contains(Common.webService[item.cid]))
{
shelfLockNodeNames.Add(Common.webService[item.cid]);
Common.log.OutInfo("锁定的CID=" + item.cid + ";节点名称=" + Common.webService[item.cid]);
......@@ -59,7 +134,7 @@ namespace BLL
}
catch (Exception ex)
{
Common.log.OutInfo( ex.Message);
Common.log.OutInfo(ex.Message);
}
return false;
}
......@@ -119,6 +194,10 @@ namespace BLL
/// 库位中料盘的锁定库位
/// </summary>
public string lockPos { get; set; }
/// <summary>
/// 料架出库的剩余数量
/// </summary>
public int taskCount { get; set; }
}
}
......@@ -15,7 +15,7 @@ namespace BLL
private int areaC_Index;
private Thread tAgvCall;
private Thread tAgvState;
private List<string> _mark;
public List<string> Marks;
private const int REG_STATUS = 20;
private List<string> shelfLockedNodeNames;
public delegate void AgvChangedEvent(int agvIndex);
......@@ -25,7 +25,7 @@ namespace BLL
public Control()
{
areaC_Index = 0;
_mark = new List<string>();
Marks = new List<string>();
}
public void Start()
......@@ -44,19 +44,19 @@ namespace BLL
public void MarkClear()
{
_mark.Clear();
Marks.Clear();
}
public string MarkRead()
{
return string.Join(" ", _mark);
return string.Join(" ", Marks);
}
public void MarkWrite(string s)
{
string[] arr = s.Split(' ');
_mark.Clear();
_mark.AddRange(arr);
Marks.Clear();
Marks.AddRange(arr);
}
......@@ -80,7 +80,7 @@ namespace BLL
continue;
}
Common.log.OutInfo("AgvCall " + Common.agvInfo[i].Name + " " + Common.agvInfo[i].MissionStatus);
Common.log.OutInfo(Common.agvInfo[i].Name + " " + Common.agvInfo[i].MissionStatus);
switch (Common.agvInfo[i].MissionStatus)
{
case Mission_Status.None: //有空闲车辆
......@@ -172,8 +172,8 @@ namespace BLL
AgvOnline?.Invoke(idx);
AgvChanged?.Invoke(idx);
}
log = Common.agvInfo[idx].Name + " Online";
Common.log.OutInfo(log);
//log = Common.agvInfo[idx].Name + " Online";
// Common.log.OutInfo(log);
//Common.log.OutTextBox(log);
}
else
......@@ -184,7 +184,7 @@ namespace BLL
AgvOnline?.Invoke(idx);
AgvChanged?.Invoke(idx);
}
log = Common.agvInfo[idx].Name + " Offline";
log = Common.agvInfo[idx].Name + " Offline";
Common.log.OutInfo(log);
//Common.log.OutTextBox(log);
}
......@@ -214,7 +214,7 @@ namespace BLL
//获取AGV状态
log = Common.agvInfo[i].Name;
Thread.Sleep(50);
rtn = Common.mir.Get_State(Common.agvInfo[i], out int stateID, out string stateText, out int battery);
rtn = Common.mir.Get_State(Common.agvInfo[i], out int stateID, out string stateText, out int battery,out string mission_text);
if (rtn)
{
if (Common.agvInfo[i].StateID != stateID)
......@@ -228,7 +228,12 @@ namespace BLL
Common.agvInfo[i].Battery = battery;
change = true;
}
log += " " + stateText + " " + battery + "%";
if (Common.agvInfo[i].Mission_text != mission_text)
{
Common.agvInfo[i].Mission_text = mission_text;
change = true;
}
log += " " + stateText +" "+ mission_text+" " + battery + "%";
}
else
{
......@@ -287,15 +292,20 @@ namespace BLL
}
}
/// <summary>
/// 充电
/// </summary>
/// <param name="agv"></param>
/// <returns></returns>
private bool StatusCharge(Agv_Info agv)
{
bool rtn;
string log;
double sp = (DateTime.Now.Ticks - Common.chargeStatus.chargeInterval) / 10000000.0;
//防止两车同时充电卡住的情况
if (Environment.TickCount - Common.chargeStatus.chargeInterval < 60000)
if ( sp< 60)
{
Common.log.OutInfo("两车充电时间间隔小于60s,不能充电。");
Common.log.OutInfo(agv.Name+" 与上一辆车的充电时间间隔为" + sp.ToString() +",小于60s,不能充电。");
return false;
}
......@@ -306,7 +316,7 @@ namespace BLL
{
agv.TaskSend = true;
Common.chargeStatus.charge1 = agv.Name;
Common.chargeStatus.chargeInterval = Environment.TickCount;
Common.chargeStatus.chargeInterval = DateTime.Now.Ticks;
log = string.Format("{0} AutoCharge1", agv.Name);
Common.log.OutInfo(log);
Common.log.OutTextBox(log);
......@@ -330,7 +340,7 @@ namespace BLL
{
agv.TaskSend = true;
Common.chargeStatus.charge2 = agv.Name;
Common.chargeStatus.chargeInterval = Environment.TickCount;
Common.chargeStatus.chargeInterval = DateTime.Now.Ticks;
log = string.Format("{0} AutoCharge2", agv.Name);
Common.log.OutInfo(log);
Common.log.OutTextBox(log);
......@@ -374,7 +384,7 @@ namespace BLL
else
{
//Mark没有被缓存
int n = _mark.FindIndex(t => t == Common.nodeInfo[nodeIdx].Mark);
int n = Marks.FindIndex(t => t == Common.nodeInfo[nodeIdx].Mark);
if (n == -1)
{
//A4没有被占用
......@@ -399,7 +409,7 @@ namespace BLL
agv.TaskSend = true;
//_mark.Add(Common.nodeInfo[nodeIdx].Mark);
MarkAdd(Common.nodeInfo[nodeIdx].Mark);
Common.log.OutString("Mark缓存 " + string.Join(",", _mark.ToArray()));
Common.log.OutString("Mark缓存 " + string.Join(",", Marks.ToArray()));
log = string.Format("{0} Move {1} {2}", agv.Name, agv.Place, Common.nodeInfo[nodeIdx].Action.ToString());
Common.log.OutInfo(log);
......@@ -475,10 +485,10 @@ namespace BLL
}
//测试,临时的
for (int i = 0; i < node.Count; i++)
{
Common.log.OutString("Test " + node[i] + " Name=" + Common.nodeInfo[node[i]].Name + " Mark=" + Common.nodeInfo[node[i]].Mark);
}
//for (int i = 0; i < node.Count; i++)
//{
// Common.log.OutString("Test " + node[i] + " Name=" + Common.nodeInfo[node[i]].Name + " Mark=" + Common.nodeInfo[node[i]].Mark);
//}
if (node.Count == 0)
{
......@@ -503,7 +513,7 @@ namespace BLL
else
{
//在Mark缓存中,按照先后顺序出料,只有第一个出完才能出第二个
int idx = _mark.FindIndex(s => s == Common.nodeInfo[node[i]].Mark);
int idx = Marks.FindIndex(s => s == Common.nodeInfo[node[i]].Mark);
if (idx == 0)
{
nodeIdx = node[i];
......@@ -1264,8 +1274,8 @@ namespace BLL
{
//这个料架可以送走了
Common.log.OutInfo("架子可以送走了");
_mark.Remove(agv.Mark);
Common.log.OutString("清理后Mark=" + string.Join(" ", _mark));
Marks.Remove(agv.Mark);
Common.log.OutString("清理后Mark=" + string.Join(" ", Marks));
string name;
string[] ss = agv.Mark.Split(',');
......@@ -1738,8 +1748,9 @@ namespace BLL
{
try
{
Common.log.OutInfo("URL:" + Common.webService["URL"]);
var client = new RestClient(Common.webService["URL"]) { Timeout = -1 };
string url = ConfigAppSettings.GetValue(Setting_Init.http_server)+"rest/api/qisda/device/emptyStoragePosCount";
Common.log.OutInfo("URL:" + url);
var client = new RestClient(url) { Timeout = -1 };
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
string json = response.Content;
......@@ -1808,7 +1819,7 @@ namespace BLL
else
{
//Mark没有被缓存
int n = _mark.FindIndex(t => t == Common.nodeInfo[nodeIdx].Mark);
int n = Marks.FindIndex(t => t == Common.nodeInfo[nodeIdx].Mark);
if (n == -1)
{
//A4没有被占用
......@@ -1846,7 +1857,7 @@ namespace BLL
agv.TaskSend = true;
//_mark.Add(Common.nodeInfo[nodeIdx].Mark);
MarkAdd(Common.nodeInfo[nodeIdx].Mark);
Common.log.OutString("Mark缓存 " + string.Join(",", _mark.ToArray()));
Common.log.OutString("Mark缓存 " + string.Join(",", Marks.ToArray()));
log = string.Format("{0} Move {1} {2}", agv.Name, agv.Place, Common.nodeInfo[nodeIdx].Action.ToString());
Common.log.OutInfo(log);
......@@ -1913,7 +1924,7 @@ namespace BLL
else
{
//在Mark缓存中,按照先后顺序出料,只有第一个出完才能出第二个
int idx = _mark.FindIndex(s => s == Common.nodeInfo[node[i]].Mark);
int idx = Marks.FindIndex(s => s == Common.nodeInfo[node[i]].Mark);
if (idx == 0)
{
nodeIdx = node[i];
......@@ -1965,10 +1976,28 @@ namespace BLL
}
else
{
string log = "Mark=" + agv.Mark + " 都不等于NeedEnter 或Use为False";
Common.log.OutInfo(log);
//Common.log.OutTextBox(log);
return false;
bool rtn = AGVManager.LeaveCheck(agv,out int taskCount);
Thread.Sleep(3000);
if(!rtn)//出库任务还未完成
{
//MoveStandby(agv);
if (!agv.StandbyTemp)
{
agv.StandbyTemp = true;
string log = agv.Name+ " [Mark=" + agv.Mark + "] 出库任务未完成,[taskCount=" + taskCount.ToString() + "] 移动到StandBy";
Common.log.OutInfo(log);
Common.mir.Add_Mission_Fleet(agv, Common.agvMission["MoveStandbyTemp"]);
}
return true;
}
else
{
string log = agv.Name + " [Mark=" + agv.Mark +"] [taskCount = " + taskCount.ToString() + "] 出库任务完成";
Common.log.OutInfo(log);
//Common.log.OutTextBox(log);
return false;
}
//MoveStandby
}
}
......@@ -2158,29 +2187,29 @@ namespace BLL
{
try
{
int index = _mark.FindIndex(ss => ss == s);
int index = Marks.FindIndex(ss => ss == s);
if (index != -1) return;
string[] arr = s.Split(',');
if (arr[1] != "pack")
{
_mark.Add(s);
Marks.Add(s);
return;
}
string[] tt = arr[0].Split('-');
int n = Convert.ToInt32(tt[1].Substring(0, tt[1].Length - 1));
index = 0;
for (int i = 0; i < _mark.Count; i++)
for (int i = 0; i < Marks.Count; i++)
{
index = i;
string[] t1 = _mark[i].Split(',');
string[] t1 = Marks[i].Split(',');
if (t1[1] != "pack") continue;
string[] t2 = t1[0].Split('-');
int num = Convert.ToInt32(t2[1].Substring(0, t2[1].Length - 1));
if (n < num) break;
}
_mark.Insert(index, s);
Marks.Insert(index, s);
}
catch (Exception ex)
{
......
......@@ -37,10 +37,9 @@ namespace BLL
{
guid = null;
string url = "http://" + info.IP + "/api/v2.0.0/status?whitelist=state_id,state_text";
log.OutInfo("URL: " + url);
string json = HttpGet(url, info.IP, info.Authorization);
log.OutInfo("Return: " + json);
log.OutInfo("URL: " + url+"\n"+"Return: " + json);
if (string.IsNullOrWhiteSpace(json)) return false;
JavaScriptSerializer serializer = new JavaScriptSerializer();
......@@ -78,10 +77,9 @@ namespace BLL
input = null;
output = null;
string url = "http://" + info.IP + "/api/v2.0.0/io_modules/" + info.IOID + "/status";
log.OutInfo("URL: " + url);
string json = HttpGet(url, info.IP, info.Authorization);
log.OutInfo("Return: " + json);
log.OutInfo("URL: " + url + "\n" + "Return: " + json);
if (string.IsNullOrWhiteSpace(json)) return false;
JavaScriptSerializer serializer = new JavaScriptSerializer();
......@@ -122,10 +120,9 @@ namespace BLL
{
regValue = -1;
string url = "http://" + info.IP + "/api/v2.0.0/registers/" + reg + "?whitelist=value";
log.OutInfo("URL: " + url);
string json = HttpGet(url, info.IP, info.Authorization);
log.OutInfo("Return: " + json);
log.OutInfo("URL: " + url + "\n" + "Return: " + json);
if (string.IsNullOrWhiteSpace(json)) return false;
JavaScriptSerializer serializer = new JavaScriptSerializer();
......@@ -158,10 +155,9 @@ namespace BLL
{
string url = "http://" + info.IP + "/api/v2.0.0/registers/" + reg;
string body = "{\"value\": " + regValue + "}";
log.OutInfo(string.Format("URL: {0}; Body: {1}", url, body));
string json = HttpPost(url, info.IP, info.Authorization, body);
log.OutInfo("Return: " + json);
log.OutInfo(string.Format("URL: {0}; Body: {1}", url, body)+"\n"+"Return: " + json);
if (string.IsNullOrWhiteSpace(json)) return false;
JavaScriptSerializer serializer = new JavaScriptSerializer();
......@@ -197,10 +193,9 @@ namespace BLL
string url = "http://" + info.IP + "/api/v2.0.0/mission_queue";
string body = "{\"mission_id\":\"" + mission_id + "\"}";
log.OutInfo(string.Format("URL: {0}; Body: {1}", url, body));
string json = HttpPost(url, info.IP, info.Authorization, body);
log.OutInfo("Return: " + json);
log.OutInfo(string.Format("URL: {0}; Body: {1}", url, body)+"\n"+"Return: " + json);
if (string.IsNullOrWhiteSpace(json)) return false;
JavaScriptSerializer serializer = new JavaScriptSerializer();
......@@ -236,10 +231,9 @@ namespace BLL
string ip = AGVControl.Common.appConfig.AppSettings.Settings["FLEET"].Value;
string url = "http://" + ip + "/api/v2.0.0/mission_scheduler";
string body = "{\"mission_id\":\"" + mission_id + "\",\"robot_id\":" + info.ID + "}";
log.OutInfo(string.Format("URL: {0}; Body: {1}", url, body));
string json = HttpPost(url, info.IP, info.Authorization, body);
log.OutInfo("Return: " + json);
log.OutInfo(string.Format("URL: {0}; Body: {1}", url, body)+"\n"+"Return: " + json);
if (string.IsNullOrWhiteSpace(json)) return false;
JavaScriptSerializer serializer = new JavaScriptSerializer();
......@@ -272,10 +266,9 @@ namespace BLL
mission = null;
string url = "http://" + info.IP + "/api/v2.0.0/missions/search?whitelist=guid,name";
string body = "{\"filters\" :[]}";
log.OutInfo(string.Format("URL: {0}; Body: {1}", url, body));
string json = HttpPost(url, info.IP, info.Authorization, body);
log.OutInfo("Return: " + json);
log.OutInfo(string.Format("URL: {0}; Body: {1}", url, body)+"\n"+"Return: " + json);
if (string.IsNullOrWhiteSpace(json)) return false;
JavaScriptSerializer serializer = new JavaScriptSerializer();
......@@ -311,10 +304,9 @@ namespace BLL
mission = null;
string url = "http://" + info.IP + "/api/v2.0.0/mission_queue/search";
string body = "{\"filters\" : [{\"fieldname\": \"state\", \"operator\": \"IN\", \"value\": [\"Pending\", \"Executing\"]}]}";
log.OutInfo(string.Format("URL: {0}; Body: {1}", url, body));
string json = HttpPost(url, info.IP, info.Authorization, body);
log.OutInfo("Return: " + json);
log.OutInfo(string.Format("URL: {0}; Body: {1}", url, body)+"\n"+"Return: " + json);
if (string.IsNullOrWhiteSpace(json)) return false;
JavaScriptSerializer serializer = new JavaScriptSerializer();
......@@ -357,9 +349,8 @@ namespace BLL
try
{
string url = "http://" + info.IP + "/api/v2.0.0/mission_queue";
log.OutInfo(string.Format("URL: {0}", url));
HttpDel(url, info.IP, info.Authorization);
log.OutInfo("Return DEL");
log.OutInfo(string.Format("URL: {0}", url)+"\n"+"Return DEL");
}
catch (Exception ex)
{
......@@ -375,18 +366,18 @@ namespace BLL
/// <param name="stateText"></param>
/// <param name="battery"></param>
/// <returns></returns>
public bool Get_State(AGVControl.Agv_Info info, out int stateID, out string stateText, out int battery)
public bool Get_State(AGVControl.Agv_Info info, out int stateID, out string stateText, out int battery,out string mission_text)
{
try
{
stateID = -1;
stateText = "";
battery = 0;
string url = "http://" + info.IP + "/api/v2.0.0/status?whitelist=state_id,state_text,battery_percentage";
log.OutInfo("URL: " + url);
mission_text = "";
string url = "http://" + info.IP + "/api/v2.0.0/status?whitelist=state_id,state_text,battery_percentage,mission_text";
string json = HttpGet(url, info.IP, info.Authorization);
log.OutInfo("Return: " + json);
log.OutInfo("URL: " + url+"\n"+"Return: " + json);
if (string.IsNullOrWhiteSpace(json)) return false;
JavaScriptSerializer serializer = new JavaScriptSerializer();
......@@ -395,6 +386,7 @@ namespace BLL
stateID = Convert.ToInt32(dic["state_id"].ToString());
stateText = dic["state_text"].ToString();
mission_text = dic["mission_text"].ToString();
string s = dic["battery_percentage"].ToString();
float f = Convert.ToSingle(s);
battery = Convert.ToInt32(f);
......@@ -405,6 +397,7 @@ namespace BLL
stateID = -1;
stateText = "";
battery = 0;
mission_text = "";
log.OutError(ex);
return false;
}
......@@ -421,10 +414,9 @@ namespace BLL
{
string url = "http://" + info.IP + "/api/v2.0.0/status?whitelist=state_id,state_text";
string body = "{\"state_id\": 3}";
log.OutInfo(string.Format("URL: {0}; Body: {1}", url, body));
string json = HttpPut(url, info.IP, info.Authorization, body);
log.OutInfo("Return: " + json);
log.OutInfo(string.Format("URL: {0}; Body: {1}", url, body)+"\n"+"Return: " + json);
if (string.IsNullOrWhiteSpace(json)) return false;
JavaScriptSerializer serializer = new JavaScriptSerializer();
......@@ -455,10 +447,9 @@ namespace BLL
{
string url = "http://" + info.IP + "/api/v2.0.0/status?whitelist=state_id,state_text";
string body = "{\"state_id\": 4}";
log.OutInfo(string.Format("URL: {0}; Body: {1}", url, body));
string json = HttpPut(url, info.IP, info.Authorization, body);
log.OutInfo("Return: " + json);
log.OutInfo(string.Format("URL: {0}; Body: {1}", url, body)+"\n"+"Return: " + json);
if (string.IsNullOrWhiteSpace(json)) return false;
JavaScriptSerializer serializer = new JavaScriptSerializer();
......@@ -489,10 +480,9 @@ namespace BLL
{
string url = "http://" + info.IP + "/api/v2.0.0/status";
string body = "{\"clear_error\": true}";
log.OutInfo(string.Format("URL: {0}; Body: {1}", url, body));
string json = HttpPut(url, info.IP, info.Authorization, body);
log.OutInfo("Return: " + json);
log.OutInfo(string.Format("URL: {0}; Body: {1}", url, body)+"\n"+"Return: " + json);
if (string.IsNullOrWhiteSpace(json)) return false;
return true;
......@@ -549,6 +539,7 @@ namespace BLL
request.AddHeader("Host", ip);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Accept-Language", "zh_CN");
request.AddHeader("Authorization", authorization);
//int n = 0;
......
......@@ -317,6 +317,10 @@ namespace AGVControl
/// </summary>
public int Battery { set; get; }
/// <summary>
/// 任务文本
/// </summary>
public string Mission_text { set; get; }
/// <summary>
/// 任务的状态
/// </summary>
public Mission_Status MissionStatus { set; get; }
......@@ -378,6 +382,16 @@ namespace AGVControl
return s;
}
public string[] ToMission()
{
//AGV名称,IP,AGV状态,任务状态,地点,后续任务,在线,电量,调用,清除缓存
string[] s = new string[2];
s[0] = Name;
s[1] = Mission_text;
return s;
}
/// <summary>
/// 脱机
/// </summary>
......@@ -417,9 +431,9 @@ namespace AGVControl
/// </summary>
public int chargeMin;
/// <summary>
/// 两车充电间隔时间(ms)
/// 两车充电间隔时间(ms)
/// </summary>
public int chargeInterval;
public long chargeInterval;
private bool _autoCharge;
......
......@@ -54,6 +54,7 @@
this.tabControl1 = new System.Windows.Forms.TabControl();
this.tabPage1 = new System.Windows.Forms.TabPage();
this.tabPage3 = new System.Windows.Forms.TabPage();
this.BtnOpenExcel = new System.Windows.Forms.Button();
this.BtnAddPlace = new System.Windows.Forms.Button();
this.TxtPlace = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
......@@ -79,14 +80,19 @@
this.BtnMissionPause = new System.Windows.Forms.Button();
this.BtnMissionReady = new System.Windows.Forms.Button();
this.LstAgvPlace = new System.Windows.Forms.ListBox();
this.BtnOpenExcel = new System.Windows.Forms.Button();
this.tabPage2 = new System.Windows.Forms.TabPage();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.dgvMission = new System.Windows.Forms.DataGridView();
this.Column20 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column21 = new System.Windows.Forms.DataGridViewTextBoxColumn();
((System.ComponentModel.ISupportInitialize)(this.DgvAgv)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.DgvNode)).BeginInit();
this.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
this.tabPage3.SuspendLayout();
this.tabPage2.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvMission)).BeginInit();
this.SuspendLayout();
//
// DgvAgv
......@@ -112,14 +118,16 @@
this.DgvAgv.Location = new System.Drawing.Point(12, 12);
this.DgvAgv.Name = "DgvAgv";
this.DgvAgv.ReadOnly = true;
this.DgvAgv.RowHeadersWidth = 51;
this.DgvAgv.RowTemplate.Height = 23;
this.DgvAgv.Size = new System.Drawing.Size(868, 120);
this.DgvAgv.Size = new System.Drawing.Size(970, 126);
this.DgvAgv.TabIndex = 0;
this.DgvAgv.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.DgvAgv_CellClick);
//
// Column1
//
this.Column1.HeaderText = "AGV名称";
this.Column1.MinimumWidth = 6;
this.Column1.Name = "Column1";
this.Column1.ReadOnly = true;
this.Column1.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
......@@ -128,20 +136,25 @@
// Column2
//
this.Column2.HeaderText = "IP";
this.Column2.MinimumWidth = 6;
this.Column2.Name = "Column2";
this.Column2.ReadOnly = true;
this.Column2.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
this.Column2.Width = 125;
//
// Column3
//
this.Column3.HeaderText = "AGV状态";
this.Column3.MinimumWidth = 6;
this.Column3.Name = "Column3";
this.Column3.ReadOnly = true;
this.Column3.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
this.Column3.Width = 125;
//
// Column14
//
this.Column14.HeaderText = "任务状态";
this.Column14.MinimumWidth = 6;
this.Column14.Name = "Column14";
this.Column14.ReadOnly = true;
this.Column14.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
......@@ -150,6 +163,7 @@
// Column18
//
this.Column18.HeaderText = "目标地点";
this.Column18.MinimumWidth = 6;
this.Column18.Name = "Column18";
this.Column18.ReadOnly = true;
this.Column18.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
......@@ -158,6 +172,7 @@
// Column4
//
this.Column4.HeaderText = "后续任务";
this.Column4.MinimumWidth = 6;
this.Column4.Name = "Column4";
this.Column4.ReadOnly = true;
this.Column4.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
......@@ -166,6 +181,7 @@
// Column13
//
this.Column13.HeaderText = "在线";
this.Column13.MinimumWidth = 6;
this.Column13.Name = "Column13";
this.Column13.ReadOnly = true;
this.Column13.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
......@@ -174,6 +190,7 @@
// Column19
//
this.Column19.HeaderText = "电量";
this.Column19.MinimumWidth = 6;
this.Column19.Name = "Column19";
this.Column19.ReadOnly = true;
this.Column19.Width = 60;
......@@ -181,6 +198,7 @@
// Column11
//
this.Column11.HeaderText = "调用";
this.Column11.MinimumWidth = 6;
this.Column11.Name = "Column11";
this.Column11.ReadOnly = true;
this.Column11.Width = 60;
......@@ -188,6 +206,7 @@
// Column17
//
this.Column17.HeaderText = "清除缓存";
this.Column17.MinimumWidth = 6;
this.Column17.Name = "Column17";
this.Column17.ReadOnly = true;
this.Column17.Width = 80;
......@@ -217,13 +236,14 @@
this.DgvNode.ReadOnly = true;
this.DgvNode.RowHeadersWidth = 50;
this.DgvNode.RowTemplate.Height = 23;
this.DgvNode.Size = new System.Drawing.Size(848, 485);
this.DgvNode.Size = new System.Drawing.Size(950, 486);
this.DgvNode.TabIndex = 1;
this.DgvNode.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.DgvNode_CellClick);
//
// Column6
//
this.Column6.HeaderText = "地点";
this.Column6.MinimumWidth = 6;
this.Column6.Name = "Column6";
this.Column6.ReadOnly = true;
this.Column6.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
......@@ -232,41 +252,52 @@
// Column7
//
this.Column7.HeaderText = "动作";
this.Column7.MinimumWidth = 6;
this.Column7.Name = "Column7";
this.Column7.ReadOnly = true;
this.Column7.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
this.Column7.Width = 125;
//
// Column12
//
this.Column12.HeaderText = "优先级";
this.Column12.MinimumWidth = 6;
this.Column12.Name = "Column12";
this.Column12.ReadOnly = true;
this.Column12.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
this.Column12.Width = 125;
//
// Column8
//
this.Column8.HeaderText = "标志";
this.Column8.MinimumWidth = 6;
this.Column8.Name = "Column8";
this.Column8.ReadOnly = true;
this.Column8.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
this.Column8.Width = 125;
//
// Column9
//
this.Column9.HeaderText = "RFID";
this.Column9.MinimumWidth = 6;
this.Column9.Name = "Column9";
this.Column9.ReadOnly = true;
this.Column9.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
this.Column9.Width = 125;
//
// Column10
//
this.Column10.HeaderText = "AGV名称";
this.Column10.MinimumWidth = 6;
this.Column10.Name = "Column10";
this.Column10.ReadOnly = true;
this.Column10.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
this.Column10.Width = 125;
//
// Column5
//
this.Column5.HeaderText = "在线";
this.Column5.MinimumWidth = 6;
this.Column5.Name = "Column5";
this.Column5.ReadOnly = true;
this.Column5.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
......@@ -275,6 +306,7 @@
// Column16
//
this.Column16.HeaderText = "调用";
this.Column16.MinimumWidth = 6;
this.Column16.Name = "Column16";
this.Column16.ReadOnly = true;
this.Column16.Width = 60;
......@@ -282,6 +314,7 @@
// Column15
//
this.Column15.HeaderText = "清除AGV";
this.Column15.MinimumWidth = 6;
this.Column15.Name = "Column15";
this.Column15.ReadOnly = true;
this.Column15.Width = 80;
......@@ -291,11 +324,11 @@
this.TxtLog.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.TxtLog.Location = new System.Drawing.Point(6, 6);
this.TxtLog.Location = new System.Drawing.Point(3, 3);
this.TxtLog.Multiline = true;
this.TxtLog.Name = "TxtLog";
this.TxtLog.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.TxtLog.Size = new System.Drawing.Size(860, 451);
this.TxtLog.Size = new System.Drawing.Size(329, 486);
this.TxtLog.TabIndex = 4;
//
// tabControl1
......@@ -306,19 +339,19 @@
this.tabControl1.Controls.Add(this.tabPage1);
this.tabControl1.Controls.Add(this.tabPage3);
this.tabControl1.Controls.Add(this.tabPage2);
this.tabControl1.Location = new System.Drawing.Point(12, 138);
this.tabControl1.Location = new System.Drawing.Point(12, 144);
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
this.tabControl1.Size = new System.Drawing.Size(868, 523);
this.tabControl1.Size = new System.Drawing.Size(970, 527);
this.tabControl1.TabIndex = 5;
//
// tabPage1
//
this.tabPage1.Controls.Add(this.DgvNode);
this.tabPage1.Location = new System.Drawing.Point(4, 22);
this.tabPage1.Location = new System.Drawing.Point(4, 25);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
this.tabPage1.Size = new System.Drawing.Size(860, 497);
this.tabPage1.Size = new System.Drawing.Size(962, 498);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = "节点";
this.tabPage1.UseVisualStyleBackColor = true;
......@@ -351,15 +384,26 @@
this.tabPage3.Controls.Add(this.BtnMissionPause);
this.tabPage3.Controls.Add(this.BtnMissionReady);
this.tabPage3.Controls.Add(this.LstAgvPlace);
this.tabPage3.Location = new System.Drawing.Point(4, 22);
this.tabPage3.Location = new System.Drawing.Point(4, 25);
this.tabPage3.Name = "tabPage3";
this.tabPage3.Padding = new System.Windows.Forms.Padding(3);
this.tabPage3.Size = new System.Drawing.Size(872, 463);
this.tabPage3.Size = new System.Drawing.Size(962, 498);
this.tabPage3.TabIndex = 2;
this.tabPage3.Text = "任务";
this.tabPage3.UseVisualStyleBackColor = true;
this.tabPage3.Click += new System.EventHandler(this.tabPage3_Click);
//
// BtnOpenExcel
//
this.BtnOpenExcel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.BtnOpenExcel.Location = new System.Drawing.Point(162, 462);
this.BtnOpenExcel.Name = "BtnOpenExcel";
this.BtnOpenExcel.Size = new System.Drawing.Size(96, 30);
this.BtnOpenExcel.TabIndex = 26;
this.BtnOpenExcel.Text = "AGV点位分布";
this.BtnOpenExcel.UseVisualStyleBackColor = true;
this.BtnOpenExcel.Click += new System.EventHandler(this.BtnOpenExcel_Click);
//
// BtnAddPlace
//
this.BtnAddPlace.Location = new System.Drawing.Point(162, 285);
......@@ -374,7 +418,7 @@
//
this.TxtPlace.Location = new System.Drawing.Point(162, 258);
this.TxtPlace.Name = "TxtPlace";
this.TxtPlace.Size = new System.Drawing.Size(96, 21);
this.TxtPlace.Size = new System.Drawing.Size(96, 25);
this.TxtPlace.TabIndex = 24;
//
// label3
......@@ -382,7 +426,7 @@
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(388, 66);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(125, 12);
this.label3.Size = new System.Drawing.Size(157, 15);
this.label3.TabIndex = 23;
this.label3.Text = "节点标志使用空格分隔";
//
......@@ -431,7 +475,7 @@
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(592, 120);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(47, 12);
this.label2.Size = new System.Drawing.Size(60, 15);
this.label2.TabIndex = 18;
this.label2.Text = "充电桩2";
//
......@@ -440,7 +484,7 @@
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(490, 120);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(47, 12);
this.label1.Size = new System.Drawing.Size(60, 15);
this.label1.TabIndex = 17;
this.label1.Text = "充电桩1";
//
......@@ -468,7 +512,7 @@
//
this.TxtCharge2.Location = new System.Drawing.Point(589, 135);
this.TxtCharge2.Name = "TxtCharge2";
this.TxtCharge2.Size = new System.Drawing.Size(96, 21);
this.TxtCharge2.Size = new System.Drawing.Size(96, 25);
this.TxtCharge2.TabIndex = 14;
//
// BtnWriteCharge1
......@@ -495,7 +539,7 @@
//
this.TxtCharge1.Location = new System.Drawing.Point(487, 135);
this.TxtCharge1.Name = "TxtCharge1";
this.TxtCharge1.Size = new System.Drawing.Size(96, 21);
this.TxtCharge1.Size = new System.Drawing.Size(96, 25);
this.TxtCharge1.TabIndex = 11;
//
// ChkAutoCharge
......@@ -503,7 +547,7 @@
this.ChkAutoCharge.AutoSize = true;
this.ChkAutoCharge.Location = new System.Drawing.Point(385, 135);
this.ChkAutoCharge.Name = "ChkAutoCharge";
this.ChkAutoCharge.Size = new System.Drawing.Size(72, 16);
this.ChkAutoCharge.Size = new System.Drawing.Size(89, 19);
this.ChkAutoCharge.TabIndex = 10;
this.ChkAutoCharge.Text = "自动充电";
this.ChkAutoCharge.UseVisualStyleBackColor = true;
......@@ -533,7 +577,7 @@
//
this.TxtMark.Location = new System.Drawing.Point(390, 6);
this.TxtMark.Name = "TxtMark";
this.TxtMark.Size = new System.Drawing.Size(300, 21);
this.TxtMark.Size = new System.Drawing.Size(300, 25);
this.TxtMark.TabIndex = 6;
//
// ChkAutoRun
......@@ -543,7 +587,7 @@
this.ChkAutoRun.CheckState = System.Windows.Forms.CheckState.Checked;
this.ChkAutoRun.Location = new System.Drawing.Point(385, 258);
this.ChkAutoRun.Name = "ChkAutoRun";
this.ChkAutoRun.Size = new System.Drawing.Size(84, 16);
this.ChkAutoRun.Size = new System.Drawing.Size(104, 19);
this.ChkAutoRun.TabIndex = 5;
this.ChkAutoRun.Text = "开机自启动";
this.ChkAutoRun.UseVisualStyleBackColor = true;
......@@ -595,38 +639,71 @@
| System.Windows.Forms.AnchorStyles.Left)));
this.LstAgvPlace.FormattingEnabled = true;
this.LstAgvPlace.IntegralHeight = false;
this.LstAgvPlace.ItemHeight = 12;
this.LstAgvPlace.ItemHeight = 15;
this.LstAgvPlace.Location = new System.Drawing.Point(6, 6);
this.LstAgvPlace.Name = "LstAgvPlace";
this.LstAgvPlace.Size = new System.Drawing.Size(150, 451);
this.LstAgvPlace.Size = new System.Drawing.Size(150, 486);
this.LstAgvPlace.TabIndex = 0;
//
// BtnOpenExcel
//
this.BtnOpenExcel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.BtnOpenExcel.Location = new System.Drawing.Point(162, 427);
this.BtnOpenExcel.Name = "BtnOpenExcel";
this.BtnOpenExcel.Size = new System.Drawing.Size(96, 30);
this.BtnOpenExcel.TabIndex = 26;
this.BtnOpenExcel.Text = "AGV点位分布";
this.BtnOpenExcel.UseVisualStyleBackColor = true;
this.BtnOpenExcel.Click += new System.EventHandler(this.BtnOpenExcel_Click);
//
// tabPage2
//
this.tabPage2.Controls.Add(this.TxtLog);
this.tabPage2.Location = new System.Drawing.Point(4, 22);
this.tabPage2.Controls.Add(this.tableLayoutPanel1);
this.tabPage2.Location = new System.Drawing.Point(4, 25);
this.tabPage2.Name = "tabPage2";
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
this.tabPage2.Size = new System.Drawing.Size(872, 463);
this.tabPage2.Size = new System.Drawing.Size(962, 498);
this.tabPage2.TabIndex = 3;
this.tabPage2.Text = "日志";
this.tabPage2.UseVisualStyleBackColor = true;
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35.06064F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 64.93936F));
this.tableLayoutPanel1.Controls.Add(this.TxtLog, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.dgvMission, 1, 0);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 3);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 1;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(956, 492);
this.tableLayoutPanel1.TabIndex = 5;
//
// dgvMission
//
this.dgvMission.AllowUserToAddRows = false;
this.dgvMission.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvMission.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Column20,
this.Column21});
this.dgvMission.Dock = System.Windows.Forms.DockStyle.Top;
this.dgvMission.Location = new System.Drawing.Point(338, 3);
this.dgvMission.Name = "dgvMission";
this.dgvMission.RowHeadersVisible = false;
this.dgvMission.RowHeadersWidth = 51;
this.dgvMission.RowTemplate.Height = 27;
this.dgvMission.Size = new System.Drawing.Size(615, 186);
this.dgvMission.TabIndex = 5;
//
// Column20
//
this.Column20.HeaderText = "AGV名称";
this.Column20.MinimumWidth = 6;
this.Column20.Name = "Column20";
//
// Column21
//
this.Column21.HeaderText = "任务";
this.Column21.MinimumWidth = 6;
this.Column21.Name = "Column21";
this.Column21.Width = 450;
//
// FrmMain
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(892, 673);
this.ClientSize = new System.Drawing.Size(994, 683);
this.Controls.Add(this.tabControl1);
this.Controls.Add(this.DgvAgv);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
......@@ -642,7 +719,9 @@
this.tabPage3.ResumeLayout(false);
this.tabPage3.PerformLayout();
this.tabPage2.ResumeLayout(false);
this.tabPage2.PerformLayout();
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvMission)).EndInit();
this.ResumeLayout(false);
}
......@@ -700,6 +779,10 @@
private System.Windows.Forms.TextBox TxtPlace;
private System.Windows.Forms.Button BtnOpenExcel;
private System.Windows.Forms.TabPage tabPage2;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.DataGridView dgvMission;
private System.Windows.Forms.DataGridViewTextBoxColumn Column20;
private System.Windows.Forms.DataGridViewTextBoxColumn Column21;
}
}
......@@ -29,6 +29,7 @@ namespace AGVControl
for (int i = 0; i < Common.agvInfo.Count; i++)
{
n = DgvAgv.Rows.Add(Common.agvInfo[i].ToRow());
dgvMission.Rows.Add(Common.agvInfo[i].ToMission());
DgvAgv.Rows[n].HeaderCell.Value = (n + 1).ToString();
if (!Common.agvInfo[i].IsCon)
DgvAgv.Rows[n].DefaultCellStyle.ForeColor = Color.Red;
......@@ -49,7 +50,32 @@ namespace AGVControl
private void Server_NodeChanged(int nodeIndex)
{
Invoke(new Action(() => { DgvNode.Rows[nodeIndex].SetValues(Common.nodeInfo[nodeIndex].ToRow()); }));
Invoke(new Action(() =>
{
List<string> markLst = new List<string>();
foreach (var mark in Common.control.Marks)
{
int count = 0;
foreach (var node in Common.nodeInfo)
{
if (mark.Equals(node.Mark))
count++;
}
if(count ==0)//mark存在标记,但节点任务没有,删除该mark
{
markLst.Add(mark);
}
}
if(markLst.Count!=0)
{
for (int i = 0; i < markLst.Count; i++)
{
Common.control.Marks.Remove(markLst[i]);
}
}
DgvNode.Rows[nodeIndex].SetValues(Common.nodeInfo[nodeIndex].ToRow());
}));
}
private void Server_NodeOnline(int nodeIndex)
......@@ -59,7 +85,11 @@ namespace AGVControl
private void Control_AgvChanged(int agvIndex)
{
Invoke(new Action(() => { DgvAgv.Rows[agvIndex].SetValues(Common.agvInfo[agvIndex].ToRow()); }));
Invoke(new Action(() =>
{
DgvAgv.Rows[agvIndex].SetValues(Common.agvInfo[agvIndex].ToRow());
dgvMission.Rows[agvIndex].SetValues(Common.agvInfo[agvIndex].ToMission());
}));
}
private void Control_AgvOnline(int agvIndex)
......@@ -191,9 +221,7 @@ namespace AGVControl
//添加Init任务
Common.mir.Add_Mission_Fleet(Common.agvInfo[idx], Common.agvMission["Init"]);
Common.mir.State_Ready(Common.agvInfo[idx]);
}
}
}
}
......
......@@ -174,6 +174,12 @@
<metadata name="Column15.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column20.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column21.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
......
......@@ -5,7 +5,7 @@
</startup>
<appSettings>
<!--Server address-->
<add key="http.server" value="http://10.85.160.25/myproject/" />
<add key="http.server" value="http://10.85.199.25/myproject/" />
<add key="LocalIP" value="192.168.103.12"/>
<add key="FLEET" value="10.85.199.3"/>
<add key="AutoCharge" value="false"/>
......
......@@ -29,12 +29,12 @@ MoveC5,34ec2f1f-2ae8-11ea-a6cf-94c691a734f1
MoveC6,52f37677-2f96-11ea-9ee4-94c691a734f1
MoveC7,bcd0e389-2ab7-11ea-a6cf-94c691a734f1
MoveC8,8a48301d-2624-11ea-a30e-94c691a73861
MoveD1,
MoveD2,
MoveD1,931f7c6c-a97d-11ea-b91f-94c691a7387d
MoveD2,ae09ca1e-a97f-11ea-b91f-94c691a7387d
Enter,2eadcb87-239a-11ea-8343-94c691a73861
Leave,80943220-239a-11ea-8343-94c691a73861
MoveStandby,4eb9641a-3439-11ea-984a-94c691a734f1
MoveStandbyTemp,25a2aea4-9e5f-11ea-b91f-94c691a7387d
Init,cd51e039-34eb-11ea-b4fe-94c691a734f1
AutoCharge1,9e1b33c0-2886-11ea-a0d6-94c691a734f1
AutoCharge2,d756f63d-2886-11ea-a0d6-94c691a734f1
\ No newline at end of file
AutoCharge2,d756f63d-2886-11ea-a0d6-94c691a734f1
URL,http://10.85.160.25/myproject/rest/api/qisda/device/emptyStoragePosCount
packing-19,B1
packing-20,B2
packing-21,B3
packing-22,B4
packing-24,B5
packing-23,B6
\ No newline at end of file
packing-23,B6
......@@ -76,3 +76,18 @@ C:\Users\ASA\Desktop\张东亮\AGVControl-包装仓入库-未测试\AGVControl\A
C:\Users\ASA\Desktop\张东亮\AGVControl-包装仓入库-未测试\AGVControl\AGVControl\obj\Debug\AGVControl.csproj.CopyComplete
C:\Users\ASA\Desktop\张东亮\AGVControl-包装仓入库-未测试\AGVControl\AGVControl\obj\Debug\AGVControl.exe
C:\Users\ASA\Desktop\张东亮\AGVControl-包装仓入库-未测试\AGVControl\AGVControl\obj\Debug\AGVControl.pdb
C:\ZDL\Gitee\AGVControl\AGVControl\bin\Debug\AGVControl.exe.config
C:\ZDL\Gitee\AGVControl\AGVControl\bin\Debug\AGVControl.exe
C:\ZDL\Gitee\AGVControl\AGVControl\bin\Debug\AGVControl.pdb
C:\ZDL\Gitee\AGVControl\AGVControl\bin\Debug\Newtonsoft.Json.dll
C:\ZDL\Gitee\AGVControl\AGVControl\bin\Debug\RestSharp.dll
C:\ZDL\Gitee\AGVControl\AGVControl\bin\Debug\RestSharp.xml
C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\Interop.IWshRuntimeLibrary.dll
C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.csproj.ResolveComReference.cache
C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.FrmMain.resources
C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.Properties.Resources.resources
C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.csproj.GenerateResource.cache
C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.csproj.CopyComplete
C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.exe
C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.pdb
C:\ZDL\Gitee\AGVControl\AGVControl\obj\Debug\AGVControl.csprojAssemblyReference.cache
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!