using Aurora; using Aurora.Api; using AuroraLaserScanner; using Hermes; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using WeldingCommon; using static ILSOS_CCW_H52A.Device.PLCControllerCCWH52A; namespace ILSOS_CCW_H52A.Device { public class ScannerCCWH52A : Scanner { // ----------------------------- // Simulation state // ----------------------------- private PLCControllerCCWH52A _plc; public ScannerCCWH52A(string deviceId) : base(deviceId) { } protected override int DoActivate(IDeviceConfig config) { var ret = base.DoActivate(config); if (ret == E1.OK && IsSimul) { if (_plc == null) { _plc = Application.Current.AuroraEnv().DeviceManager[CommonDeviceIds.PLCDevice] as PLCControllerCCWH52A; return E2.ABORTED; } // 값의 동기화가 필요해서 추가 함 if (!_plc.IsConnected && !_plc.IsSimul) return E2.ABORTED; var core = _scannerObj as ScannerSimul; core.PLCReadBit = _plc.ReadBit; core.PLCReadWord = _plc.ReadWord; core.PLCReadDWord = _plc.ReadDWord; core.PLCGetAbsDeg = _plc.GetSimAbsDeg; //_plc.ResetSimulator(); core.ResetSim(); core.TrySyncAbsAngleToPlcNow(); SetMonitoringService((_scannerObj as ScannerSimul).EquipmentSimulator, 1); } return ret; } protected override int DoDeactivate() { var ret = base.DoDeactivate(); if (ret == E1.OK && IsSimul){ var core = _scannerObj as ScannerSimul; StopMonitoringService(); } return ret; } } }