"refactor:Improve-map-loading-and-use-canvas-nodes"
This commit is contained in:
@@ -60,11 +60,15 @@ namespace Project
|
||||
|
||||
//if (chg_run && PUB.AGV.system1.agv_run) PUB.Speak("이동을 시작 합니다");
|
||||
VAR.BOOL[eVarBool.AGVDIR_BACK] = PUB.AGV.data.Direction == 'B';
|
||||
var syncDir = PUB.AGV.data.Direction == 'B' ? AgvDirection.Backward : AgvDirection.Forward;
|
||||
|
||||
// [Sync] Update VirtualAGV Direction
|
||||
var syncDir = PUB.AGV.data.Direction == 'B' ? AgvDirection.Backward : AgvDirection.Forward;
|
||||
if (PUB._virtualAGV.CurrentDirection != syncDir)
|
||||
PUB.UpdateAGVDirection(syncDir);
|
||||
if (PUB._virtualAGV != null)
|
||||
{
|
||||
if (PUB._virtualAGV.CurrentDirection != syncDir)
|
||||
PUB.UpdateAGVDirection(syncDir);
|
||||
}
|
||||
|
||||
|
||||
// [Sync] Update VirtualAGV State
|
||||
AGVState syncState = AGVState.Idle;
|
||||
@@ -72,7 +76,7 @@ namespace Project
|
||||
else if (PUB.AGV.system1.Battery_charging) syncState = AGVState.Charging;
|
||||
else if (PUB.AGV.system1.agv_run) syncState = AGVState.Moving;
|
||||
|
||||
if (PUB._virtualAGV.GetCurrentState() != syncState)
|
||||
if (PUB._virtualAGV != null && PUB._virtualAGV.GetCurrentState() != syncState)
|
||||
PUB.UpdateAGVState(syncState);
|
||||
|
||||
if (VAR.BOOL[eVarBool.AGV_ERROR] != (agv_err > 0))
|
||||
@@ -156,9 +160,9 @@ namespace Project
|
||||
case arDev.Narumi.DataType.TAG:
|
||||
{
|
||||
//자동 실행 중이다.
|
||||
PUB.log.Add($"AGV 태그수신 : {PUB.AGV.data.TagNo}");
|
||||
PUB.Result.LastTAG = PUB.AGV.data.TagNo.ToString();
|
||||
|
||||
|
||||
PUB.Result.LastTAG = PUB.AGV.data.TagNo.ToString("0000");
|
||||
PUB.log.Add($"AGV 태그수신 : {PUB.AGV.data.TagNo} LastTag:{PUB.Result.LastTAG}");
|
||||
//POT/NOT 보면 일단 바로 멈추게한다
|
||||
if (PUB.Result.CurrentPos == ePosition.POT || PUB.Result.CurrentPos == ePosition.NOT)
|
||||
{
|
||||
@@ -168,7 +172,7 @@ namespace Project
|
||||
}
|
||||
|
||||
//virtual agv setting
|
||||
var CurrentNode = PUB._mapNodes.FirstOrDefault(t => t.RfidId.Equals(PUB.Result.LastTAG, StringComparison.OrdinalIgnoreCase));
|
||||
var CurrentNode = PUB._mapCanvas.Nodes.FirstOrDefault(t => t.RfidId.Equals(PUB.Result.LastTAG, StringComparison.OrdinalIgnoreCase));
|
||||
if (CurrentNode == null)
|
||||
{
|
||||
//없는 노드는 자동으로 추가한다
|
||||
@@ -184,10 +188,10 @@ namespace Project
|
||||
};
|
||||
|
||||
// 맵 노드 리스트에 추가
|
||||
PUB._mapNodes.Add(newNode);
|
||||
PUB._mapCanvas.Nodes.Add(newNode);
|
||||
|
||||
// 캔버스에 노드 반영 (재설정)
|
||||
PUB._mapCanvas.Nodes = PUB._mapNodes;
|
||||
PUB._mapCanvas.Nodes = PUB._mapCanvas.Nodes;
|
||||
|
||||
// 로그 기록
|
||||
PUB.log.AddI($"RFID:{PUB.Result.LastTAG} 노드를 자동 추가했습니다 (NodeId: {newNodeId})");
|
||||
@@ -217,7 +221,7 @@ namespace Project
|
||||
}
|
||||
|
||||
//이 후 상황을 예측한다
|
||||
if (PUB._mapCanvas != null)
|
||||
if (PUB._mapCanvas != null && PUB._virtualAGV != null)
|
||||
{
|
||||
var nextAction = PUB._virtualAGV.Predict();
|
||||
var message = $"[다음 행동 예측]\n\n" +
|
||||
|
||||
Reference in New Issue
Block a user