Files
test_demo/MX-PD-盘古 - new/PanGu.DieBonderApp/MainShell/Hardware/SubstrateLoadDeviceService.cs
Shi.Ji e31d3560bb 添加 MX-PD-盘古 项目文件
将 MX-PD-盘古 - new 目录下的所有文件添加到主仓库
2026-05-18 11:43:09 +08:00

137 lines
6.1 KiB
C#

using System;
using System.Threading;
using System.Threading.Tasks;
namespace MainShell.Hardware
{
public interface ISubstrateLoadDeviceService
{
bool IsSubstrateAtLoadPosition();
bool IsSubstrateLoadHomeChecked();
bool IsSubstrateLoadVacuumOk();
bool TrySetSubstrateLoadTrackMotor(bool isRunning);
Task<bool> WaitSubstrateAtLoadPositionAsync(TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken));
Task<bool> WaitSubstrateLoadHomeCheckedAsync(TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken));
Task<bool> WaitSubstrateLoadVacuumOkAsync(TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken));
bool TryExtendClamp();
bool TryRetractClamp();
bool TryExtendStopper();
bool TryRetractStopper();
bool TryPressDown();
bool TryReleasePress();
Task<bool> TryExtendClampAndWaitAsync(TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken));
Task<bool> TryRetractClampAndWaitAsync(TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken));
Task<bool> TryExtendStopperAndWaitAsync(TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken));
Task<bool> TryRetractStopperAndWaitAsync(TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken));
Task<bool> TryPressDownAndWaitAsync(TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken));
Task<bool> TryReleasePressAndWaitAsync(TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken));
}
public class SubstrateLoadDeviceService : ISubstrateLoadDeviceService
{
private readonly IDeviceIoMonitorService _ioMonitorService;
private readonly IDeviceCylinderService _cylinderService;
public SubstrateLoadDeviceService(IDeviceIoMonitorService ioMonitorService, IDeviceCylinderService cylinderService)
{
_ioMonitorService = ioMonitorService;
_cylinderService = cylinderService;
}
public bool IsSubstrateAtLoadPosition()
{
return _ioMonitorService.IsPointOn(DeviceIoNames.SubstrateLoad.SensorIn);
}
public bool IsSubstrateLoadHomeChecked()
{
return _ioMonitorService.IsPointOn(DeviceIoNames.SubstrateLoad.HomeChecked);
}
public bool IsSubstrateLoadVacuumOk()
{
return _ioMonitorService.IsPointOn(DeviceIoNames.SubstrateLoad.VacuumOk);
}
public bool TrySetSubstrateLoadTrackMotor(bool isRunning)
{
return _ioMonitorService.TrySetOutputState(DeviceIoIds.SubstrateLoad.TrackMotorRun, isRunning);
}
public Task<bool> WaitSubstrateAtLoadPositionAsync(TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken))
{
return _ioMonitorService.WaitForPointStateAsync(DeviceIoNames.SubstrateLoad.SensorIn, true, timeout, cancellationToken);
}
public Task<bool> WaitSubstrateLoadHomeCheckedAsync(TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken))
{
return _ioMonitorService.WaitForPointStateAsync(DeviceIoNames.SubstrateLoad.HomeChecked, true, timeout, cancellationToken);
}
public Task<bool> WaitSubstrateLoadVacuumOkAsync(TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken))
{
return _ioMonitorService.WaitForPointStateAsync(DeviceIoNames.SubstrateLoad.VacuumOk, true, timeout, cancellationToken);
}
public bool TryExtendClamp()
{
return _cylinderService.TryExtend(DeviceCylinderNames.Clamp);
}
public bool TryRetractClamp()
{
return _cylinderService.TryRetract(DeviceCylinderNames.Clamp);
}
public bool TryExtendStopper()
{
return _cylinderService.TryExtend(DeviceCylinderNames.Stopper);
}
public bool TryRetractStopper()
{
return _cylinderService.TryRetract(DeviceCylinderNames.Stopper);
}
public bool TryPressDown()
{
return _cylinderService.TryExtend(DeviceCylinderNames.Press);
}
public bool TryReleasePress()
{
return _cylinderService.TryRetract(DeviceCylinderNames.Press);
}
public Task<bool> TryExtendClampAndWaitAsync(TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken))
{
return _cylinderService.TryExtendAndWaitAsync(DeviceCylinderNames.Clamp, timeout, cancellationToken);
}
public Task<bool> TryRetractClampAndWaitAsync(TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken))
{
return _cylinderService.TryRetractAndWaitAsync(DeviceCylinderNames.Clamp, timeout, cancellationToken);
}
public Task<bool> TryExtendStopperAndWaitAsync(TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken))
{
return _cylinderService.TryExtendAndWaitAsync(DeviceCylinderNames.Stopper, timeout, cancellationToken);
}
public Task<bool> TryRetractStopperAndWaitAsync(TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken))
{
return _cylinderService.TryRetractAndWaitAsync(DeviceCylinderNames.Stopper, timeout, cancellationToken);
}
public Task<bool> TryPressDownAndWaitAsync(TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken))
{
return _cylinderService.TryExtendAndWaitAsync(DeviceCylinderNames.Press, timeout, cancellationToken);
}
public Task<bool> TryReleasePressAndWaitAsync(TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken))
{
return _cylinderService.TryRetractAndWaitAsync(DeviceCylinderNames.Press, timeout, cancellationToken);
}
}
}