DataArray, DataObject pool 적용. 버그 수정. AGV 움직임 튀는 거 수정 필요
This commit is contained in:
@@ -100,6 +100,8 @@ namespace UVC.Factory.Component
|
||||
await InitializePoolAsync();
|
||||
//데이터를 어떤 형식으로 받을지 정의합니다.
|
||||
var dataMask = new DataMask();
|
||||
dataMask.ObjectName = "AGV"; // AGV 객체의 이름을 설정합니다.
|
||||
dataMask.ObjectIdKey = "VHL_NAME"; // AGV의 고유 식별자로 사용할 키를 설정합니다.
|
||||
dataMask["VHL_NAME"] = "";
|
||||
dataMask["AGV_IDX"] = "";
|
||||
dataMask["B_INSTALL"] = "";
|
||||
@@ -123,11 +125,12 @@ namespace UVC.Factory.Component
|
||||
// 데이터가 업데이트되면 OnUpdateData 메서드를 호출하여 처리합니다.
|
||||
|
||||
DataValidator validator = new DataValidator();
|
||||
validator.AddValidator("JOB_ID", value => value != null);
|
||||
//validator.AddValidator("JOB_ID", value => value != null);
|
||||
validator.AddValidator("VHL_NAME", value => value != null && value!.ToString() == "HFF09CNA8016");
|
||||
|
||||
var pipelineInfo = new MQTTPipeLineInfo("AGV")
|
||||
.setDataMapper(new DataMapper(dataMask))
|
||||
.setValidator(validator)
|
||||
//.setValidator(validator)
|
||||
.setHandler(OnUpdateData);
|
||||
|
||||
// 생성한 파이프라인 정보를 전역 MQTT 파이프라인에 추가합니다.
|
||||
@@ -157,18 +160,23 @@ namespace UVC.Factory.Component
|
||||
/// </summary>
|
||||
/// <param name="data">수신된 데이터 객체 (DataArray 형태)</param>
|
||||
public void OnUpdateData(IDataObject? data)
|
||||
{
|
||||
{
|
||||
if (data == null || agvPool == null) return;
|
||||
|
||||
DataArray? arr = data as DataArray;
|
||||
if (arr == null || arr.Count == 0) return;
|
||||
if (arr == null) return;
|
||||
if (arr.Count == 0)
|
||||
{
|
||||
arr.ReturnToPool();
|
||||
return;
|
||||
}
|
||||
|
||||
// 데이터 배열에서 추가, 제거, 수정된 항목 리스트를 가져옵니다.
|
||||
var AddedItems = arr.AddedItems;
|
||||
var RemovedItems = arr.RemovedItems;
|
||||
var ModifiedList = arr.ModifiedList;
|
||||
|
||||
//Debug.Log($"AGVManager received data: Added={AddedItems.Count}, Removed={RemovedItems.Count}, Modified={ModifiedList.Count}");
|
||||
Debug.Log($"AGVManager received data: Added={AddedItems.Count}, Removed={RemovedItems.Count}, Modified={ModifiedList.Count}");
|
||||
|
||||
// 새로 추가된 AGV 처리
|
||||
foreach (var item in AddedItems.ToList())
|
||||
@@ -186,7 +194,7 @@ namespace UVC.Factory.Component
|
||||
"",
|
||||
item.GetString("MODE")
|
||||
);
|
||||
agv.UpdateData(item);
|
||||
agv.UpdateData(item.Clone());
|
||||
}
|
||||
|
||||
// 제거된 AGV 처리
|
||||
@@ -208,10 +216,11 @@ namespace UVC.Factory.Component
|
||||
AGV? agv = agvPool.FindActiveItem(vhlName);
|
||||
if (agv != null)
|
||||
{
|
||||
agv.UpdateData(item);
|
||||
agv.UpdateData(item.Clone());
|
||||
}
|
||||
}
|
||||
|
||||
arr.ReturnToPool();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user