recipe name filter
This commit is contained in:
56
Plugins/Siemens/B24SiemensPlugin/SiemensCameraModule.cs
Normal file
56
Plugins/Siemens/B24SiemensPlugin/SiemensCameraModule.cs
Normal file
@@ -0,0 +1,56 @@
|
||||
using VisionBuilder.UI.Common;
|
||||
using VisionBuilder.UI.Common.RecipeProcessing;
|
||||
|
||||
namespace B24SiemensPlugin;
|
||||
|
||||
public class SiemensCameraModule: IVisionBuilderModule
|
||||
{
|
||||
private readonly SingleCameraVM _singleCameraVm;
|
||||
private readonly B24SiemensSettings _settings;
|
||||
|
||||
private SiemensServer _server;
|
||||
|
||||
public SiemensCameraModule(SingleCameraVM singleCameraVm,B24SiemensSettings settings)
|
||||
{
|
||||
_singleCameraVm = singleCameraVm;
|
||||
_settings = settings;
|
||||
}
|
||||
|
||||
public void InitializeModule()
|
||||
{
|
||||
_server = new SiemensServer();
|
||||
_server.OnPLCPacket += _server_OnPLCPacket;
|
||||
_server.Start();
|
||||
}
|
||||
string? GetMapping(int material)
|
||||
{
|
||||
var mapping = _settings.RecipeMappings.FirstOrDefault(x => x.MaterialNumber == material);
|
||||
if (mapping == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return mapping.RecipeName;
|
||||
}
|
||||
private PLCPacket _server_OnPLCPacket(PLCPacket packet)
|
||||
{
|
||||
packet.KameraStart= _singleCameraVm.IsRunning;
|
||||
var recipe = GetMapping(packet.Materialnummer);
|
||||
var selectedRecipe = _singleCameraVm.SelectedRecipe;
|
||||
if (recipe != null && recipe != selectedRecipe?.RecipeName)
|
||||
{
|
||||
var vm = _singleCameraVm.GetRecipeSelectionVm();
|
||||
vm.SelectedRecipe = vm.Recipes.FirstOrDefault(r => r.RecipeName == recipe);
|
||||
if (vm.SelectedRecipe != null)
|
||||
{
|
||||
_singleCameraVm.SynchronizationContext!.Post((_) =>
|
||||
{
|
||||
_singleCameraVm.ProcessRecipeSelectionVm(vm);
|
||||
}, null);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return packet;
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user