diff --git a/Hawkeye.VisionBuilder.UI.Sources.Emulation/EmulationSettings.cs b/Hawkeye.VisionBuilder.UI.Sources.Emulation/EmulationSettings.cs index f25c55c..cfca289 100644 --- a/Hawkeye.VisionBuilder.UI.Sources.Emulation/EmulationSettings.cs +++ b/Hawkeye.VisionBuilder.UI.Sources.Emulation/EmulationSettings.cs @@ -14,7 +14,7 @@ public class EmulationSettings : ISettings public int CycleDelay { get; set; } = 1; public int PerImageDelay { get; set; } = 5000; - public bool SingleRun { get; set; } = false; + public bool SingleRun { get; set; } = true; public string EmulationPath { get; set; } public void RegisterSettings(InspectronSettings settings) diff --git a/Hawkeye.VisionBuilder.UI.Sources.IDS/IDSImageSourceSettings.cs b/Hawkeye.VisionBuilder.UI.Sources.IDS/IDSImageSourceSettings.cs index 9626c2a..2877f40 100644 --- a/Hawkeye.VisionBuilder.UI.Sources.IDS/IDSImageSourceSettings.cs +++ b/Hawkeye.VisionBuilder.UI.Sources.IDS/IDSImageSourceSettings.cs @@ -32,7 +32,7 @@ public class IDSImageSourceSettings:ISettings StringBuilder sb = new StringBuilder(); foreach (var camera in cameraList) { - sb.AppendLine($"Camera ID: {camera.CameraID}, Name: {camera.SerialNumber}"); + sb.Append($"{camera.CameraID}[{camera.SerialNumber}]"); } return sb.ToString(); diff --git a/Hawkeye.VisionBuilder/Features/ImagePreview/ImagePreviewPanel.cs b/Hawkeye.VisionBuilder/Features/ImagePreview/ImagePreviewPanel.cs index 47e65f1..224dfcc 100644 --- a/Hawkeye.VisionBuilder/Features/ImagePreview/ImagePreviewPanel.cs +++ b/Hawkeye.VisionBuilder/Features/ImagePreview/ImagePreviewPanel.cs @@ -46,9 +46,14 @@ namespace Hawkeye.VisionBuilder.Features.ImagePreview imagePreviewControl.GraphicsElements.Add(element); } - private void btnFit_Click(object sender, EventArgs e) + public void Fit() { imagePreviewControl.FitToScreen(); } + + private void btnFit_Click(object sender, EventArgs e) + { + Fit(); + } } } diff --git a/Hawkeye.VisionBuilder/Features/ImagesStrip/ImageStripPanel.Designer.cs b/Hawkeye.VisionBuilder/Features/ImagesStrip/ImageStripPanel.Designer.cs index 826389f..b8c6027 100644 --- a/Hawkeye.VisionBuilder/Features/ImagesStrip/ImageStripPanel.Designer.cs +++ b/Hawkeye.VisionBuilder/Features/ImagesStrip/ImageStripPanel.Designer.cs @@ -143,7 +143,9 @@ // // ckbExecuteWorkflow // + ckbExecuteWorkflow.Checked = true; ckbExecuteWorkflow.CheckOnClick = true; + ckbExecuteWorkflow.CheckState = CheckState.Checked; ckbExecuteWorkflow.DisplayStyle = ToolStripItemDisplayStyle.Text; ckbExecuteWorkflow.Image = (Image)resources.GetObject("ckbExecuteWorkflow.Image"); ckbExecuteWorkflow.ImageTransparentColor = Color.Magenta; diff --git a/Hawkeye.VisionBuilder/Features/ImagesStrip/ImageStripPanel.resx b/Hawkeye.VisionBuilder/Features/ImagesStrip/ImageStripPanel.resx index 89db3fd..3a72e89 100644 --- a/Hawkeye.VisionBuilder/Features/ImagesStrip/ImageStripPanel.resx +++ b/Hawkeye.VisionBuilder/Features/ImagesStrip/ImageStripPanel.resx @@ -1,7 +1,7 @@  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/VisionBuilder.UI.Windows.Duo/Inspectron icon-512.ico b/VisionBuilder.UI.Windows.Duo/Inspectron icon-512.ico new file mode 100644 index 0000000..19e6370 Binary files /dev/null and b/VisionBuilder.UI.Windows.Duo/Inspectron icon-512.ico differ diff --git a/VisionBuilder.UI.Windows.Duo/Program.cs b/VisionBuilder.UI.Windows.Duo/Program.cs new file mode 100644 index 0000000..140ee33 --- /dev/null +++ b/VisionBuilder.UI.Windows.Duo/Program.cs @@ -0,0 +1,105 @@ +using Inspectron.Settings; +using Lindt.Colorballs.Duo.Utils; +using Ninject; +using Ninject.Extensions.ChildKernel; +using VisionBuilder.UI.Common; +using VisionBuilder.UI.Common.Processing; +using VisionBuilder.UI.Common.ViewModel; +using VisionBuilder.UI.IOCommander; +using VisionBuilder.UI.Recipes.HawkeyeRecipe; +using VisionBuilder.UI.Ringbuffer; +using VisionBuilder.UI.Statistics; +using VisionBuilder.UI.Windows; +using VisionBuilder.UI.Windows.Duo; + +internal static class Program +{ + private const string CAMERA1 = "Camera 1"; + private const string CAMERA2 = "Camera 2"; + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + // To customize application configuration such as set high DPI settings or default font, + // see https://aka.ms/applicationconfiguration. + ApplicationConfiguration.Initialize(); + // In your application startup code + MaterialSkin.MaterialSkinManager.ConfigureForInspectron(); + + InspectronSettings settings = new InspectronSettings("..\\Data\\Config"); + + var mainKernel = VisionBuilder.UI.Common.VisionBuilder.CreateMainKernel(settings); + + mainKernel.UsePlugins(); + + + mainKernel + .UseConsole() + .UseIOCommander([CAMERA1,CAMERA2]) + .UseIOCommanderWindowsDebug() + .UseIOCommanderVirtualInput() + .UseWindowsServices() + .RegisterGlobalPlugins() + ; + + mainKernel.Get().StartLoading("Camera initialization"); + + + // CAMERAS // + ChildKernel kernelCamera1 = new ChildKernel(mainKernel); + ChildKernel kernelCamera2 = new ChildKernel(mainKernel); + + // MODULES // + kernelCamera1 + .RegisterCamera(CAMERA1) + .UseStatistics(CAMERA1) + .UseRingbuffer(CAMERA1) + .UseHawkeyeRecipes(CAMERA1) + .UseCameraIOCommander(CAMERA1) + .RegisterCameraPlugins(CAMERA1) + ; + + kernelCamera2 + .RegisterCamera(CAMERA2) + .UseStatistics(CAMERA2) + .UseRingbuffer(CAMERA2) + .UseHawkeyeRecipes(CAMERA2) + .UseCameraIOCommander(CAMERA2) + .RegisterCameraPlugins(CAMERA2) + ; + + // LOAD SETTINGS // + mainKernel.RegisterSettings(); + kernelCamera1.RegisterSettings(); + kernelCamera2.RegisterSettings(); + settings.LoadSettings(); + + // Create camera and bind it + // Must be done after settings are loaded + kernelCamera1.UseCamera(); + kernelCamera2.UseCamera(); + + // initialize modules + mainKernel.InitializeModules(); + kernelCamera1.InitializeModules(); + kernelCamera2.InitializeModules(); + + mainKernel.Get().StopLoading("Camera initialization"); + + + + var mainWindowVm = mainKernel.Get(); + mainWindowVm.SingleCameraVms = [ + kernelCamera1.Get(), + kernelCamera2.Get() + ]; + + var form = mainKernel.Get(); + + settings.LoadSettings(); + + Application.Run(form); + } +} \ No newline at end of file diff --git a/VisionBuilder.UI.Windows.Duo/VisionBuilder.UI.Windows.Duo.csproj b/VisionBuilder.UI.Windows.Duo/VisionBuilder.UI.Windows.Duo.csproj new file mode 100644 index 0000000..103ace6 --- /dev/null +++ b/VisionBuilder.UI.Windows.Duo/VisionBuilder.UI.Windows.Duo.csproj @@ -0,0 +1,43 @@ + + + + Exe + true + net8.0-windows + enable + enable + Inspectron icon-512.ico + false + 2.0.8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/VisionBuilder.UI.Windows.Test/VisionBuilder.UI.Windows.Uno.csproj b/VisionBuilder.UI.Windows.Test/VisionBuilder.UI.Windows.Uno.csproj index c8125d6..1b1a5ad 100644 --- a/VisionBuilder.UI.Windows.Test/VisionBuilder.UI.Windows.Uno.csproj +++ b/VisionBuilder.UI.Windows.Test/VisionBuilder.UI.Windows.Uno.csproj @@ -8,7 +8,7 @@ enable Inspectron icon-512.ico false - 1.0.7 + 2.0.8 diff --git a/VisionBuilder.UI.Windows/Dialogs/ImagePreview.Designer.cs b/VisionBuilder.UI.Windows/Dialogs/ImagePreview.Designer.cs index 8328f3d..e688de9 100644 --- a/VisionBuilder.UI.Windows/Dialogs/ImagePreview.Designer.cs +++ b/VisionBuilder.UI.Windows/Dialogs/ImagePreview.Designer.cs @@ -129,11 +129,10 @@ namespace Inspectron.HawkEye.View lblErrName.BackColor = Color.White; lblErrName.Location = new Point(16, 32); lblErrName.Name = "lblErrName"; - lblErrName.Size = new Size(836, 16); + lblErrName.Size = new Size(1536, 16); lblErrName.TabIndex = 6; lblErrName.Text = "label1"; - lblErrName.TextAlign = ContentAlignment.MiddleLeft; - lblErrName.Visible = false; + lblErrName.TextAlign = ContentAlignment.MiddleCenter; // // ImagePreview // diff --git a/VisionBuilder.UI.Windows/Dialogs/ImagePreview.cs b/VisionBuilder.UI.Windows/Dialogs/ImagePreview.cs index 9d84a23..db55f5d 100644 --- a/VisionBuilder.UI.Windows/Dialogs/ImagePreview.cs +++ b/VisionBuilder.UI.Windows/Dialogs/ImagePreview.cs @@ -22,6 +22,7 @@ namespace Inspectron.HawkEye.View btnPrev.Enabled = _previewVm.IsPreviousImageEnabled; btnNext.Enabled = _previewVm.IsNextImageEnabled; pictureBox1.Image = _previewVm.ImageAnalysis?.ToBitmap(); + lblErrName.Text = _previewVm.ImageName; } private void PreviewVmOnPropertyChanged(object? sender, PropertyChangedEventArgs e) diff --git a/VisionBuilder.UI.sln b/VisionBuilder.UI.sln index 9f6299f..a800607 100644 --- a/VisionBuilder.UI.sln +++ b/VisionBuilder.UI.sln @@ -98,6 +98,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackstrasseBarcodeReader", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CandyboxPlugin", "Plugins\CandyboxPlugin\CandyboxPlugin.csproj", "{31C47198-DEC2-4073-A0C2-220549502CD1}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisionBuilder.UI.Windows.Duo", "VisionBuilder.UI.Windows.Duo\VisionBuilder.UI.Windows.Duo.csproj", "{AD3BC36E-8FC9-4A13-AD6B-606325AFF291}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -242,6 +244,10 @@ Global {31C47198-DEC2-4073-A0C2-220549502CD1}.Debug|Any CPU.Build.0 = Debug|Any CPU {31C47198-DEC2-4073-A0C2-220549502CD1}.Release|Any CPU.ActiveCfg = Release|Any CPU {31C47198-DEC2-4073-A0C2-220549502CD1}.Release|Any CPU.Build.0 = Release|Any CPU + {AD3BC36E-8FC9-4A13-AD6B-606325AFF291}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AD3BC36E-8FC9-4A13-AD6B-606325AFF291}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AD3BC36E-8FC9-4A13-AD6B-606325AFF291}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AD3BC36E-8FC9-4A13-AD6B-606325AFF291}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -277,6 +283,7 @@ Global {19E9B1A2-FBC6-2668-EDDF-1B3A6828184A} = {583A77DF-A293-4F3E-AB96-7310BC495822} {B20D7E75-1C19-632D-21D2-2663B0329C5E} = {583A77DF-A293-4F3E-AB96-7310BC495822} {31C47198-DEC2-4073-A0C2-220549502CD1} = {583A77DF-A293-4F3E-AB96-7310BC495822} + {AD3BC36E-8FC9-4A13-AD6B-606325AFF291} = {F3414823-B70E-435E-B4EA-80ABF4371449} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {3CE42AE5-D79F-4E97-A246-AA8FD228B677}