将FlowTrigger触发器整合成接口的形式方便替换

This commit is contained in:
fengjiayi
2024-12-23 23:19:10 +08:00
parent 0f9c9b9988
commit 5941f75313
29 changed files with 403 additions and 164 deletions

View File

@@ -28,16 +28,16 @@ namespace Net462DllTest.LogicControl
[NodeAction(NodeType.Flipflop, "等待车位调取命令")]
public async Task<IFlipflopContext<string>> GetPparkingSpace(ParkingCommand parkingCommand = ParkingCommand.GetPparkingSpace)
{
var spaceNum = await PrakingDevice.CreateTaskAsync<string>(parkingCommand);
await Console.Out.WriteLineAsync("收到命令:调取车位,车位号" + spaceNum);
return new FlipflopContext<string>(FlipflopStateType.Succeed, spaceNum);
var result = await PrakingDevice.WaitTriggerAsync<string>(parkingCommand);
await Console.Out.WriteLineAsync("收到命令:调取车位,车位号" + result.Value);
return new FlipflopContext<string>(FlipflopStateType.Succeed, result.Value);
}
[NodeAction(NodeType.Action, "调取指定车位")]
public void Storage(string spaceNum = "101")
public async Task Storage(string spaceNum = "101")
{
if (PrakingDevice.Trigger(ParkingCommand.GetPparkingSpace, spaceNum))
if (await PrakingDevice.InvokeTriggerAsync(ParkingCommand.GetPparkingSpace, spaceNum))
{
Console.WriteLine("发送命令成功:调取车位" + spaceNum);

View File

@@ -38,7 +38,7 @@ namespace Net462DllTest.LogicControl
public void Exit(IDynamicContext context)
{
MyPlc.Close();
MyPlc.CancelAllTasks();
MyPlc.CancelAllTrigger();
}
#endregion
@@ -50,7 +50,7 @@ namespace Net462DllTest.LogicControl
{
try
{
var triggerData = await MyPlc.CreateTaskAsync<object>(varName);
var triggerData = await MyPlc.WaitTriggerAsync<object>(varName);
await Console.Out.WriteLineAsync($"PLC变量触发器[{varName}]传递数据:{triggerData}");
return new FlipflopContext<object>(FlipflopStateType.Succeed, triggerData);
}

View File

@@ -31,15 +31,14 @@ namespace Net462DllTest.LogicControl
[NodeAction(NodeType.Flipflop, "等待视图命令")]
public async Task<IFlipflopContext<int>> WaitTask(CommandSignal command)
{
(var type, var result) = await ViewManagement.CreateTaskWithTimeoutAsync(command, TimeSpan.FromHours(10), 0);
if (type == TriggerType.Overtime)
var result = await ViewManagement.WaitTriggerWithTimeoutAsync<int>(command, TimeSpan.FromHours(10));
if (result.Type == TriggerDescription.Overtime)
{
return new FlipflopContext<int>(FlipflopStateType.Cancel, result);
return new FlipflopContext<int>(FlipflopStateType.Cancel, result.Value);
}
else
{
return new FlipflopContext<int>(FlipflopStateType.Succeed, result);
return new FlipflopContext<int>(FlipflopStateType.Succeed, result.Value);
}
}

View File

@@ -4,7 +4,7 @@ using Serein.Library;
namespace Net462DllTest.Trigger
{
[AutoRegister]
public class PrakingDevice : FlowTrigger<ParkingCommand>
public class PrakingDevice : TaskFlowTrigger<ParkingCommand>
{
}

View File

@@ -19,7 +19,7 @@ namespace Net462DllTest.Trigger
[AutoRegister]
public class SiemensPlcDevice : FlowTrigger<PlcVarName>
public class SiemensPlcDevice : TaskFlowTrigger<PlcVarName>
{
public SiemensClient Client { get; set; }
public SiemensVersion Version { get; set; }
@@ -197,7 +197,7 @@ namespace Net462DllTest.Trigger
if (isNotification)
{
Console.WriteLine($"VarName: {signal}\t\tOld Data: {oldData}\tNew Data: {newData}");
Trigger(signal, newData);
await InvokeTriggerAsync(signal, newData);
}
@@ -238,7 +238,7 @@ namespace Net462DllTest.Trigger
{
return VarInfoDict[plcVarEnum];
}
var plcValue = EnumHelper.GetBoundValue<PlcVarName, PlcVarInfoAttribute, PlcVarInfo>(plcVarEnum, attr => attr.Info)
var plcValue = EnumHelper.GetAttributeValue<PlcVarName, PlcVarInfoAttribute, PlcVarInfo>(plcVarEnum, attr => attr.Info)
?? throw new Exception($"获取变量异常:{plcVarEnum}没有标记PlcValueAttribute");
if (string.IsNullOrEmpty(plcValue.Address))
{

View File

@@ -16,7 +16,7 @@ namespace Net462DllTest.Trigger
/// 视图管理
/// </summary>
[AutoRegister]
public class ViewManagement : FlowTrigger<CommandSignal>
public class ViewManagement : TaskFlowTrigger<CommandSignal>
{
private readonly UIContextOperation uiContextOperation;
public ViewManagement(UIContextOperation uiContextOperation)

View File

@@ -119,7 +119,7 @@ namespace Net462DllTest.ViewModel
});
CommandGetParkingSpace = new RelayCommand((p) =>
{
viewManagement.Trigger(SelectedSignal, SpcaeNumber);
_ = viewManagement.InvokeTriggerAsync(SelectedSignal, SpcaeNumber);
});
CommandCloseForm = new RelayCommand((p) =>
{

View File

@@ -38,7 +38,7 @@ namespace Net462DllTest.Web
if (EnumHelper.TryConvertEnum<PlcVarName>(var, out var signal))
{
SereinEnv.WriteLine(InfoType.INFO, $"外部触发 {signal} 信号,信号内容 {value} ");
plcDevice.Trigger(signal, value);// 通过 Web Api 模拟外部输入信号
_ = plcDevice.InvokeTriggerAsync(signal, value);// 通过 Web Api 模拟外部输入信号
return new { state = "succeed" };
}
else
@@ -63,7 +63,7 @@ namespace Net462DllTest.Web
if (EnumHelper.TryConvertEnum<CommandSignal>(command, out var signal))
{
SereinEnv.WriteLine(InfoType.INFO, $"外部触发 {signal} 信号,信号内容 {value} ");
viewManagement.Trigger(signal, value);// 通过 Web Api 模拟外部输入信号
_ = viewManagement.InvokeTriggerAsync(signal, value);// 通过 Web Api 模拟外部输入信号
return new { state = "succeed" };
}
else

View File

@@ -80,7 +80,7 @@ namespace Net462DllTest.Web
socketServer?.Stop(); // 关闭 Web 服务
});
MyPlc.Close();
MyPlc.CancelAllTasks();
MyPlc.CancelAllTrigger();
}
#endregion