67 lines
2.0 KiB
C#

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;
}
}
}