将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);
}
}