mirror of
https://gitee.com/langsisi_admin/serein-flow
synced 2026-04-16 04:46:34 +08:00
将FlowTrigger触发器整合成接口的形式方便替换
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ using Serein.Library;
|
||||
namespace Net462DllTest.Trigger
|
||||
{
|
||||
[AutoRegister]
|
||||
public class PrakingDevice : FlowTrigger<ParkingCommand>
|
||||
public class PrakingDevice : TaskFlowTrigger<ParkingCommand>
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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))
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -119,7 +119,7 @@ namespace Net462DllTest.ViewModel
|
||||
});
|
||||
CommandGetParkingSpace = new RelayCommand((p) =>
|
||||
{
|
||||
viewManagement.Trigger(SelectedSignal, SpcaeNumber);
|
||||
_ = viewManagement.InvokeTriggerAsync(SelectedSignal, SpcaeNumber);
|
||||
});
|
||||
CommandCloseForm = new RelayCommand((p) =>
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -80,7 +80,7 @@ namespace Net462DllTest.Web
|
||||
socketServer?.Stop(); // 关闭 Web 服务
|
||||
});
|
||||
MyPlc.Close();
|
||||
MyPlc.CancelAllTasks();
|
||||
MyPlc.CancelAllTrigger();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
Reference in New Issue
Block a user