Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
顾剑亮
/
Camera
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
图表
网络
创建新的问题
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit f42804a9
由
张东亮
编写于
2020-06-11 15:47:08 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
包装仓出库搬运逻辑更新(与服务器通讯判断出库任务是否完成)
1 个父辈
b0593d6e
隐藏空白字符变更
内嵌
并排
正在显示
26 个修改的文件
包含
374 行增加
和
128 行删除
.vs/AGVControl/v16/.suo
.vs/VSWorkspaceState.json
.vs/slnx.sqlite
AGVControl/App.config
AGVControl/BLL/AGVManager.cs
AGVControl/BLL/Control.cs
AGVControl/BLL/MiR_API.cs
AGVControl/Common.cs
AGVControl/FrmMain.Designer.cs
AGVControl/FrmMain.cs
AGVControl/FrmMain.resx
AGVControl/bin/Debug/AGVControl.exe
AGVControl/bin/Debug/AGVControl.exe.config
AGVControl/bin/Debug/AGVControl.pdb
AGVControl/bin/Debug/Config/AgvMission.csv
AGVControl/bin/Debug/Config/Web.csv
AGVControl/obj/Debug/AGVControl.csproj.FileListAbsolute.txt
AGVControl/obj/Debug/AGVControl.csproj.GenerateResource.cache
AGVControl/obj/Debug/AGVControl.csprojAssemblyReference.cache
AGVControl/obj/Debug/AGVControl.exe
AGVControl/obj/Debug/AGVControl.pdb
AGVControl/obj/Debug/Interop.IWshRuntimeLibrary.dll
AgvClient/obj/Debug/AgvClient.csprojAssemblyReference.cache
AgvClientTest/obj/Debug/AgvClientTest.csprojAssemblyReference.cache
AssemblyLine(old)/obj/Debug/AssemblyLine(old).csprojAssemblyReference.cache
DoubleLine(old)/obj/Debug/DoubleLine(old).csprojAssemblyReference.cache
.vs/AGVControl/v16/.suo
查看文件 @
f42804a
此文件类型无法预览
.vs/VSWorkspaceState.json
查看文件 @
f42804a
{
"ExpandedNodes"
:
[
""
""
,
"
\\
AGVControl"
,
"
\\
AGVControl
\\
BLL"
],
"SelectedNode"
:
"
\\
AGVControl.sln"
,
"PreviewInSolutionExplorer"
:
false
...
...
.vs/slnx.sqlite
查看文件 @
f42804a
此文件类型无法预览
AGVControl/App.config
查看文件 @
f42804a
...
...
@@ -5,7 +5,7 @@
</
startup
>
<
appSettings
>
<!--
Server
address
-->
<
add
key
=
"http.server"
value
=
"http://10.85.1
60
.25/myproject/"
/>
<
add
key
=
"http.server"
value
=
"http://10.85.1
99
.25/myproject/"
/>
<
add
key
=
"LocalIP"
value
=
"192.168.103.12"
/>
<
add
key
=
"FLEET"
value
=
"10.85.199.3"
/>
<
add
key
=
"AutoCharge"
value
=
"false"
/>
...
...
AGVControl/BLL/AGVManager.cs
查看文件 @
f42804a
...
...
@@ -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
;
}
}
}
AGVControl/BLL/Control.cs
查看文件 @
f42804a
...
...
@@ -15,7 +15,7 @@ namespace BLL
private
int
areaC_Index
;
private
Thread
tAgvCall
;
private
Thread
tAgvState
;
p
rivate
List
<
string
>
_mark
;
p
ublic
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
<
6000
0
)
if
(
sp
<
6
0
)
{
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
)
{
...
...
AGVControl/BLL/MiR_API.cs
查看文件 @
f42804a
...
...
@@ -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;
...
...
AGVControl/Common.cs
查看文件 @
f42804a
...
...
@@ -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
;
...
...
AGVControl/FrmMain.Designer.cs
查看文件 @
f42804a
...
...
@@ -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
,
1
38
);
this
.
tabControl1
.
Location
=
new
System
.
Drawing
.
Point
(
12
,
1
44
);
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
,
2
2
);
this
.
tabPage1
.
Location
=
new
System
.
Drawing
.
Point
(
4
,
2
5
);
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
,
2
2
);
this
.
tabPage3
.
Location
=
new
System
.
Drawing
.
Point
(
4
,
2
5
);
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
,
2
1
);
this
.
TxtPlace
.
Size
=
new
System
.
Drawing
.
Size
(
96
,
2
5
);
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
(
1
25
,
12
);
this
.
label3
.
Size
=
new
System
.
Drawing
.
Size
(
1
57
,
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
,
2
1
);
this
.
TxtCharge2
.
Size
=
new
System
.
Drawing
.
Size
(
96
,
2
5
);
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
,
2
1
);
this
.
TxtCharge1
.
Size
=
new
System
.
Drawing
.
Size
(
96
,
2
5
);
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
,
2
1
);
this
.
TxtMark
.
Size
=
new
System
.
Drawing
.
Size
(
300
,
2
5
);
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
=
1
2
;
this
.
LstAgvPlace
.
ItemHeight
=
1
5
;
this
.
LstAgvPlace
.
Location
=
new
System
.
Drawing
.
Point
(
6
,
6
);
this
.
LstAgvPlace
.
Name
=
"LstAgvPlace"
;
this
.
LstAgvPlace
.
Size
=
new
System
.
Drawing
.
Size
(
150
,
4
51
);
this
.
LstAgvPlace
.
Size
=
new
System
.
Drawing
.
Size
(
150
,
4
86
);
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
,
2
2
);
this
.
tabPage2
.
Controls
.
Add
(
this
.
tableLayoutPanel1
);
this
.
tabPage2
.
Location
=
new
System
.
Drawing
.
Point
(
4
,
2
5
);
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
,
67
3
);
this
.
ClientSize
=
new
System
.
Drawing
.
Size
(
994
,
68
3
);
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
;
}
}
AGVControl/FrmMain.cs
查看文件 @
f42804a
...
...
@@ -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
]);
}
}
}
}
...
...
AGVControl/FrmMain.resx
查看文件 @
f42804a
...
...
@@ -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>
...
...
AGVControl/bin/Debug/AGVControl.exe
查看文件 @
f42804a
此文件类型无法预览
AGVControl/bin/Debug/AGVControl.exe.config
查看文件 @
f42804a
...
...
@@ -5,7 +5,7 @@
</
startup
>
<
appSettings
>
<!--
Server
address
-->
<
add
key
=
"http.server"
value
=
"http://10.85.1
60
.25/myproject/"
/>
<
add
key
=
"http.server"
value
=
"http://10.85.1
99
.25/myproject/"
/>
<
add
key
=
"LocalIP"
value
=
"192.168.103.12"
/>
<
add
key
=
"FLEET"
value
=
"10.85.199.3"
/>
<
add
key
=
"AutoCharge"
value
=
"false"
/>
...
...
AGVControl/bin/Debug/AGVControl.pdb
查看文件 @
f42804a
此文件类型无法预览
AGVControl/bin/Debug/Config/AgvMission.csv
查看文件 @
f42804a
...
...
@@ -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
AGVControl/bin/Debug/Config/Web.csv
查看文件 @
f42804a
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
AGVControl/obj/Debug/AGVControl.csproj.FileListAbsolute.txt
查看文件 @
f42804a
...
...
@@ -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
AGVControl/obj/Debug/AGVControl.csproj.GenerateResource.cache
查看文件 @
f42804a
此文件类型无法预览
AGVControl/obj/Debug/AGVControl.csprojAssemblyReference.cache
查看文件 @
f42804a
此文件类型无法预览
AGVControl/obj/Debug/AGVControl.exe
查看文件 @
f42804a
此文件类型无法预览
AGVControl/obj/Debug/AGVControl.pdb
查看文件 @
f42804a
此文件类型无法预览
AGVControl/obj/Debug/Interop.IWshRuntimeLibrary.dll
查看文件 @
f42804a
此文件类型无法预览
AgvClient/obj/Debug/AgvClient.csprojAssemblyReference.cache
查看文件 @
f42804a
此文件类型无法预览
AgvClientTest/obj/Debug/AgvClientTest.csprojAssemblyReference.cache
查看文件 @
f42804a
此文件类型无法预览
AssemblyLine(old)/obj/Debug/AssemblyLine(old).csprojAssemblyReference.cache
查看文件 @
f42804a
此文件类型无法预览
DoubleLine(old)/obj/Debug/DoubleLine(old).csprojAssemblyReference.cache
查看文件 @
f42804a
此文件类型无法预览
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论