From 97ac18eac6e5e0712f08da8a07cceaa4a2dc7571 Mon Sep 17 00:00:00 2001
From: meelstorm <8780022+TesAnti@users.noreply.github.com>
Date: Mon, 13 Oct 2025 14:59:28 +0200
Subject: [PATCH] 2.0.8
---
.../EmulationSettings.cs | 2 +-
.../IDSImageSourceSettings.cs | 2 +-
.../ImagePreview/ImagePreviewPanel.cs | 7 +-
.../ImagesStrip/ImageStripPanel.Designer.cs | 2 +
.../Features/ImagesStrip/ImageStripPanel.resx | 4 +-
Hawkeye.VisionBuilder/MainWindow.Designer.cs | 4 +-
Hawkeye.VisionBuilder/MainWindow.cs | 3 +
VisionBuilder.UI.Common/Extensions.cs | 8 +-
VisionBuilder.UI.Common/ViewModel/ErrorsVM.cs | 5 +-
.../ViewModel/MainWindowVM.cs | 8 +
VisionBuilder.UI.Common/VisionBuilder.cs | 13 ++
.../VisionBuilderStatistics.cs | 15 +-
.../Form1.Designer.cs | 201 ++++++++++++++++++
VisionBuilder.UI.Windows.Duo/Form1.cs | 109 ++++++++++
VisionBuilder.UI.Windows.Duo/Form1.resx | 120 +++++++++++
.../Inspectron icon-512.ico | Bin 0 -> 105844 bytes
VisionBuilder.UI.Windows.Duo/Program.cs | 105 +++++++++
.../VisionBuilder.UI.Windows.Duo.csproj | 43 ++++
.../VisionBuilder.UI.Windows.Uno.csproj | 2 +-
.../Dialogs/ImagePreview.Designer.cs | 5 +-
.../Dialogs/ImagePreview.cs | 1 +
VisionBuilder.UI.sln | 7 +
22 files changed, 645 insertions(+), 21 deletions(-)
create mode 100644 VisionBuilder.UI.Windows.Duo/Form1.Designer.cs
create mode 100644 VisionBuilder.UI.Windows.Duo/Form1.cs
create mode 100644 VisionBuilder.UI.Windows.Duo/Form1.resx
create mode 100644 VisionBuilder.UI.Windows.Duo/Inspectron icon-512.ico
create mode 100644 VisionBuilder.UI.Windows.Duo/Program.cs
create mode 100644 VisionBuilder.UI.Windows.Duo/VisionBuilder.UI.Windows.Duo.csproj
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 0000000000000000000000000000000000000000..19e637011e871b7883b28b84ba15ef74641d1d06
GIT binary patch
literal 105844
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
GDf~Ytx62j)
literal 0
HcmV?d00001
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}