wanghan 7 months ago
parent
commit
a713ab017f

+ 6 - 6
TeamAAS-VM/Core/Management.cs

@@ -1270,8 +1270,8 @@ namespace TeamAAS_VP.Core
                                         float toolX = (float)(visionResults[0].X + visionResults[1].X) / 2;
                                         float toolY = (float)(visionResults[0].Y + visionResults[1].Y) / 2;
                                         _FixedUpCameraAngle = Common.CalculateAngleBetweenPointsDegrees(new PointF((float)visionResults[0].X, (float)visionResults[0].Y), new PointF((float)visionResults[1].X, (float)visionResults[1].Y));
-                                        DowmCameraResults[cameraIndex] = new OpenCvSharp.Point3f(toolX, toolX, (float)_FixedUpCameraAngle);
-                                        DownTool = new PointF(toolX, toolX);
+                                        DowmCameraResults[cameraIndex] = new OpenCvSharp.Point3f(toolX, toolY, (float)_FixedUpCameraAngle);
+                                        DownTool = new PointF(toolX, toolY);
                                         await plc.WriteNodeAsync(addressConfig.Out_DownCameraStatus.Address, (Int16)1);
                                         return;
                                     }
@@ -1366,8 +1366,8 @@ namespace TeamAAS_VP.Core
                                         float toolX = (float)(visionResults[0].X + visionResults[1].X) / 2;
                                         float toolY = (float)(visionResults[0].Y + visionResults[1].Y) / 2;
                                         _FixedUpCameraAngle = Common.CalculateAngleBetweenPointsDegrees(new PointF((float)visionResults[0].X, (float)visionResults[0].Y), new PointF((float)visionResults[1].X, (float)visionResults[1].Y));
-                                        DowmCameraResults[cameraIndex] = new OpenCvSharp.Point3f(toolX, toolX, (float)_FixedUpCameraAngle);
-                                        DownTool = new PointF(toolX, toolX);
+                                        DowmCameraResults[cameraIndex] = new OpenCvSharp.Point3f(toolX, toolY, (float)_FixedUpCameraAngle);
+                                        DownTool = new PointF(toolX, toolY);
                                         await plc.WriteNodeAsync(addressConfig.Out_DownCameraStatus.Address, (Int16)1);
                                         return;
                                     }
@@ -1486,7 +1486,7 @@ namespace TeamAAS_VP.Core
                             if (robot == null)
                             {
                                 SendTaskMessage($"未找到机器人,无法执行上相机锁附/组装拍照视觉任务", MessageLevel.Alarm);
-                                await plc.WriteNodeAsync(addressConfig.Out_DownCameraStatus.Address, (Int16)2);
+                                await plc.WriteNodeAsync(addressConfig.Out_UpCameraPickStatus.Address, (Int16)2);
                                 return;
 
                             }
@@ -1558,7 +1558,7 @@ namespace TeamAAS_VP.Core
                                 {
                                     float tool1X = (float)(visionResults[0].X - visionResults[0].X);
                                     float tool1Y = (float)(visionResults[0].Y - visionResults[0].Y);
-                                    float tool2X = (float)(visionResults[1].Y - visionResults[1].Y);
+                                    float tool2X = (float)(visionResults[1].X - visionResults[1].X);
                                     float tool2Y = (float)(visionResults[1].Y - visionResults[1].Y);
                                     float toolX = (tool1X + tool2X) / 2;
                                     float toolY = (tool1Y + tool2Y) / 2;

+ 8 - 0
TeamAAS-VM/Interfaces/ILightManagerService.cs

@@ -71,6 +71,14 @@ namespace TeamAAS_VP.Interfaces
         /// <returns>操作成功返回 true,否则返回 false。</returns>
         Task<bool> SetGlobalChannelBrightnessAsync(int globalChannelId, int brightness);
 
+        /// <summary>
+        /// 获取指定全局通道的亮度值。
+        /// </summary>
+        /// <param name="globalChannelId">目标全局通道 Id。</param>
+        /// <param name="brightness">亮度值,通常在 0 到 100 范围内(具体范围请参照实现)。</param>
+        /// <returns>操作成功返回 true,否则返回 false。</returns>
+        Task<int> GetGlobalChannelBrightnessAsync(int globalChannelId);
+
         /// <summary>
         /// 打开指定的全局通道(将其置于开启状态)。
         /// </summary>

+ 1 - 1
TeamAAS-VM/Models/Lights/ChannelConfig.cs

@@ -58,7 +58,7 @@ namespace TeamAAS_VP.Models.Lights
             set { SetProperty(ref _GlobalIndex, value); }
         }
 
-        private int _DefaultBrightness = 100;
+        private int _DefaultBrightness = 255;
         /// <summary>
         /// 默认亮度(百分比)。
         /// 范围通常为 0 到 100,表示通道的默认亮度设置。默认值为 100(表示最大亮度)。

+ 16 - 0
TeamAAS-VM/Services/LightManagerService.cs

@@ -215,6 +215,22 @@ namespace TeamAAS_VP.Services
             return result;
         }
 
+        /// <summary>
+        /// 获取指定全局通道的亮度值。
+        /// </summary>
+        /// <param name="globalChannelId">全局通道ID</param>
+        /// <returns>操作是否成功</returns>
+        public async Task<int> GetGlobalChannelBrightnessAsync(int globalChannelId)
+        {
+            if (!_globalChannels.TryGetValue(globalChannelId, out var channel))
+                return -1;
+
+            var result = await channel.GetBrightnessAsync();
+            // 触发状态变化事件,通知外部当前通道的开关与亮度状态
+            ChannelStatusChanged?.Invoke(this, new LightChannelEventArgs(channel, channel.IsOn, channel.Brightness));
+            return result;
+        }
+
         /// <summary>
         /// 打开指定的全局通道。
         /// </summary>

+ 2 - 1
TeamAAS-VM/Services/RemoteCommandService.cs

@@ -1474,7 +1474,7 @@ namespace TeamAAS_VP.Services
                 }
                 DateTime nowtime = DateTime.Now;
                 LogHelper.WriteLogInfo("开始采集图像");
-                Thread.Sleep(250);
+                Thread.Sleep(100);
                 var image = camera.Grab();
                 if (image == null)
                 {
@@ -2297,6 +2297,7 @@ namespace TeamAAS_VP.Services
                     {
                         LogHelper.WriteLogInfo($"设置光源通道{lightChannel.GlobalIndex}打开失败!");
                     }
+                    await Task.Delay(200);
                     isSucceed = await _lightManagerService.SetGlobalChannelBrightnessAsync(lightChannel.GlobalIndex, lightChannel.DefaultBrightness);
                     if (!isSucceed)
                     {

+ 3 - 0
TeamAAS-VM/ViewModels/Product/CameraParamsViewModel.cs

@@ -460,6 +460,9 @@ namespace TeamAAS_VP.ViewModels.Product
             {
                 if (!(parameter is ChannelConfig channel)) return;
                 await _lightManagerService.TurnOnGlobalChannelAsync(channel.GlobalIndex);
+
+                int value = await _lightManagerService.GetGlobalChannelBrightnessAsync(channel.GlobalIndex);
+                channel.DefaultBrightness = value;
             }
             catch (Exception ex)
             {

+ 1 - 1
TeamAAS-VM/Views/HomeView.xaml

@@ -433,7 +433,7 @@
                             <DataTemplate>
                                 <Border BorderThickness="0"
                                         HorizontalAlignment="Left">
-                                    <Label MaxWidth="300"
+                                    <Label MaxWidth="800"
                                            BorderThickness="0"
                                            Background="Transparent"
                                            Margin="0"