using Furion.InstantMessaging;
|
using Microsoft.AspNetCore.SignalR;
|
|
namespace WCS.Application;
|
|
/// <summary>
|
/// 任务日志集线器
|
/// </summary>
|
[MapHub("/hubs/Plc")]
|
public class PlcHub : Hub<IPlcHub>
|
{
|
private readonly IHubContext<PlcHub, IPlcHub> _plcHubContext;
|
|
public PlcHub(IHubContext<PlcHub, IPlcHub> plcHubContext)
|
{
|
_plcHubContext = plcHubContext;
|
}
|
/// <summary>
|
/// 下发PLC连接状态
|
/// </summary>
|
/// <param name="context"></param>
|
/// <returns></returns>
|
public async Task PublicPlcConn(WcsPlc context)
|
{
|
await _plcHubContext.Clients.All.PublicPlcConn(context);
|
}
|
|
/// <summary>
|
/// 下发工位状态
|
/// </summary>
|
/// <param name="context"></param>
|
/// <returns></returns>
|
//public async Task PublicStationStatus(List<WcsDevice> context)
|
//{
|
// await _plcHubContext.Clients.All.PublicStationStatus(context);
|
//}
|
|
/// <summary>
|
/// 下发服务状态
|
/// </summary>
|
public async Task UpdateService(PLCServiceModel context)
|
{
|
//运行状态
|
if (context.BoRunningState.HasValue)
|
{
|
PLCTaskAction.boRunningState = context.BoRunningState.Value;
|
if (context.BoRunningState.Value)
|
PLCTaskAction.Init();
|
else
|
PLCTaskAction.Stop();
|
}
|
//脱机模式
|
if (context.BoOffline.HasValue)
|
PLCTaskAction.boOffline = context.BoOffline.Value;
|
//自刷新
|
if (context.BoRefresh.HasValue)
|
PLCTaskAction.boRefresh = context.BoRefresh.Value;
|
await _plcHubContext.Clients.All.UpdateService(new PLCServiceModel() { BoRunningState = PLCTaskAction.boRunningState, BoRefresh = PLCTaskAction.boRefresh, BoOffline = PLCTaskAction.boOffline });
|
}
|
}
|
public class PLCServiceModel
|
{
|
public bool? BoRunningState { get; set; }
|
|
|
public bool? BoOffline { get; set; }
|
|
|
public bool? BoRefresh { get; set; }
|
}
|