Initial commit
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
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";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user