136 lines
5.0 KiB
C#
136 lines
5.0 KiB
C#
using SampleProject.Config;
|
|
using System;
|
|
using UnityEngine;
|
|
using UVC.Core;
|
|
using UVC.Data;
|
|
using UVC.Data.Core;
|
|
using UVC.Locale;
|
|
using UVC.Util;
|
|
|
|
namespace SampleProject
|
|
{
|
|
[DefaultExecutionOrder(100)]
|
|
public class AppMain : SingletonApp<AppMain>
|
|
{
|
|
|
|
public Action Initialized;
|
|
|
|
|
|
/// <summary>
|
|
/// 초기 화 메서드입니다.
|
|
/// Awake 메서드에서 호출되며, MonoBehaviour가 생성될 때 한 번만 실행됩니다.
|
|
/// </summary>
|
|
protected override void Init()
|
|
{
|
|
SettupConfig();
|
|
SetNetworkConfig();
|
|
if (Initialized != null)
|
|
{
|
|
Initialized.Invoke();
|
|
}
|
|
}
|
|
|
|
void Start()
|
|
{
|
|
//Tester.RunAllTests();
|
|
}
|
|
|
|
private void SettupConfig()
|
|
{
|
|
if (AppConfig.LoadConfig())
|
|
{
|
|
Application.targetFrameRate = AppConfig.Config.TargetFrameRate;
|
|
|
|
//기본 언어 설정
|
|
bool success = LocalizationManager.Instance.LoadDefaultLocalizationData(AppConfig.Config.Language);
|
|
Debug.Log($"LocalizationManager: LoadDefaultLocalizationData success: {success}");
|
|
if (!Application.isEditor && Application.platform == RuntimePlatform.WindowsPlayer)
|
|
{
|
|
//창 설정
|
|
if (AppConfig.Config.Window != null)
|
|
{
|
|
WindowTools.Instance.Init(AppConfig.Config.Window);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SetNetworkConfig()
|
|
{
|
|
|
|
URLList.Add("baseinfo", "http://localhost:8888/baseinfo");
|
|
|
|
var agvDataMask = new DataMask();
|
|
agvDataMask.ObjectName = "AGV"; // AGV 객체의 이름을 설정합니다.
|
|
agvDataMask.ObjectIdKey = "VHL_NAME"; // AGV의 고유 식별자로 사용할 키를 설정합니다.
|
|
agvDataMask["VHL_NAME"] = "";
|
|
agvDataMask["AGV_IDX"] = "";
|
|
agvDataMask["B_INSTALL"] = "";
|
|
agvDataMask["NODE_ID"] = "";
|
|
agvDataMask["REAL_ID"] = "";
|
|
agvDataMask["VHL_STATE"] = "";
|
|
agvDataMask["BAY_LIST"] = "";
|
|
agvDataMask["X"] = 0;
|
|
agvDataMask["Y"] = 0;
|
|
agvDataMask["DEGREE"] = 0.0;
|
|
agvDataMask["MODE"] = "";
|
|
agvDataMask["BATT"] = "";
|
|
agvDataMask["SUB_GOAL"] = "";
|
|
agvDataMask["FINAL_GOAL"] = "";
|
|
agvDataMask["JOB_ID"] = "";
|
|
agvDataMask["TIMESTAMP"] = DateTime.Now;
|
|
|
|
DataMapperValidator.Add("AGV", new DataMapperValidator(
|
|
new DataMapper(agvDataMask)
|
|
));
|
|
|
|
// 데이터 마스크(DataMask) 정의:
|
|
// 수신할 데이터의 구조를 미리 정의합니다. 여기서 정의된 키(Key)들을 기준으로 데이터를 파싱합니다.
|
|
var alarmDataMask = new DataMask();
|
|
alarmDataMask.ObjectName = "Alarm"; // Alarm 객체의 이름을 설정합니다.
|
|
alarmDataMask.ObjectIdKey = "ID"; // Alarm의 고유 식별자로 사용할 키를 설정합니다.
|
|
alarmDataMask["ID"] = "";
|
|
alarmDataMask["ALARM_TYPE"] = "";
|
|
alarmDataMask["LEVEL"] = "";
|
|
alarmDataMask["LOGISTIC"] = "";
|
|
alarmDataMask["STATE"] = "";
|
|
alarmDataMask["MESSAGE"] = "";
|
|
alarmDataMask["CODE"] = "";
|
|
alarmDataMask["ICON"] = "";
|
|
alarmDataMask["MACHINENAME"] = "";
|
|
alarmDataMask["SHOPNAME"] = "";
|
|
alarmDataMask["TRANSPORT_EQP_NAME"] = "";
|
|
alarmDataMask["TRANSPORT_UNIT_NAME"] = "";
|
|
alarmDataMask["TRANSPORT_EQP_ID"] = "";
|
|
alarmDataMask["TRANSPORT_UNIT_ID"] = "";
|
|
alarmDataMask["CLEAR_TIME"] = DateTime.Now;
|
|
alarmDataMask["SET_TIME"] = DateTime.Now;
|
|
alarmDataMask["UPDATE_TIME"] = DateTime.Now;
|
|
alarmDataMask["TIMESTAMP"] = DateTime.Now;
|
|
|
|
// 데이터 유효성 검사기(DataValidator) 설정:
|
|
// 수신된 데이터가 유효한지 검사하는 규칙을 추가합니다.
|
|
// 여기서는 "MACHINENAME" 필드가 null이 아닌지 확인합니다.
|
|
DataValidator alarmValidator = new DataValidator();
|
|
alarmValidator.AddValidator("MACHINENAME", value => value != null);
|
|
|
|
DataMapperValidator.Add("ALARM", new DataMapperValidator(
|
|
new DataMapper(alarmDataMask),
|
|
alarmValidator
|
|
));
|
|
|
|
DataRepository.Instance.MqttReceiver.SetDomainPort("localhost", 1883);
|
|
DataRepository.Instance.MqttReceiver.AddTopic("AGV");
|
|
DataRepository.Instance.MqttReceiver.AddTopic("ALARM");
|
|
|
|
|
|
//10초 후 정지
|
|
//UniTask.Delay(TimeSpan.FromSeconds(10)).ContinueWith(() =>
|
|
//{
|
|
// DataRepository.Instance.MqttReceiver.Stop();
|
|
//});
|
|
}
|
|
|
|
}
|
|
}
|