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}