85 lines
3.4 KiB
C#
85 lines
3.4 KiB
C#
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.SignalR;
|
|
using RobotNet10.RobotApp.Client.Shared.Plc;
|
|
using RobotNet10.RobotApp.Interfaces;
|
|
|
|
namespace RobotNet10.RobotApp.Hubs;
|
|
|
|
/// <summary>
|
|
/// SignalR Hub cho PlcController
|
|
/// Cung cấp real-time updates về trạng thái PLC (read-only)
|
|
/// </summary>
|
|
[Authorize]
|
|
public class PlcControllerHub(IPlcController plcController) : Hub
|
|
{
|
|
/// <summary>
|
|
/// Lấy trạng thái hiện tại của PlcController
|
|
/// </summary>
|
|
public Task<PlcControllerStatusDto> GetStatus()
|
|
{
|
|
return Task.FromResult(new PlcControllerStatusDto
|
|
{
|
|
IsReady = plcController.IsReady,
|
|
|
|
// Operating mode
|
|
PeripheralMode = plcController.PeripheralMode.ToString(),
|
|
SafetySpeed = plcController.SafetySpeed.ToString(),
|
|
|
|
// Safety sensors
|
|
Emergency = plcController.Emergency,
|
|
Bumper = plcController.Bumper,
|
|
LidarFrontProtectField = plcController.LidarFrontProtectField,
|
|
LidarBackProtectField = plcController.LidarBackProtectField,
|
|
LidarFrontTimProtectField = plcController.LidarFrontTimProtectField,
|
|
|
|
// Lift state
|
|
LiftedUp = plcController.LiftedUp,
|
|
LiftedDown = plcController.LiftedDown,
|
|
LiftHome = plcController.LiftHome,
|
|
|
|
// Motor state
|
|
LeftMotorReady = plcController.LeftMotorReady,
|
|
RightMotorReady = plcController.RightMotorReady,
|
|
LiftMotorReady = plcController.LiftMotorReady,
|
|
|
|
// Button state
|
|
ButtonStart = plcController.ButtonStart,
|
|
ButtonStop = plcController.ButtonStop,
|
|
ButtonReset = plcController.ButtonReset,
|
|
|
|
// Other state
|
|
HasLoad = plcController.HasLoad,
|
|
EnabledCharger = plcController.EnabledCharger,
|
|
Charging = plcController.Charging,
|
|
MutedBase = plcController.MutedBase,
|
|
MutedLoad = plcController.MutedLoad,
|
|
|
|
// Determine current stop state
|
|
StopState = GetStopState(),
|
|
|
|
// Write state - các giá trị đã được ghi xuống PLC
|
|
CurrentSystemState = plcController.CurrentSystemState.ToString(),
|
|
CurrentOperationState = plcController.CurrentOperationState.ToString(),
|
|
CurrentRFMode = plcController.CurrentRFMode.ToString(),
|
|
SetHorizontalLoadValue = plcController.SetHorizontalLoadValue,
|
|
SetMutedBaseValue = plcController.SetMutedBaseValue,
|
|
SetMutedLoadValue = plcController.SetMutedLoadValue,
|
|
SetEnableChargerValue = plcController.SetEnableChargerValue,
|
|
SetHasLoadValue = plcController.SetHasLoadValue,
|
|
SetRFEStopValue = plcController.SetRFEStopValue,
|
|
SetBatteryLowValue = plcController.SetBatteryLowValue,
|
|
SetLightOnValue = plcController.SetLightOnValue
|
|
});
|
|
}
|
|
|
|
private string GetStopState()
|
|
{
|
|
if (plcController.Emergency) return "EMC";
|
|
if (plcController.Bumper) return "Bumper";
|
|
if (!plcController.LidarFrontProtectField) return "FrontProtective";
|
|
if (!plcController.LidarBackProtectField) return "BackProtective";
|
|
if (plcController.LidarFrontTimProtectField) return "TimProtective";
|
|
return "None";
|
|
}
|
|
}
|