徐孝锋 8 ヶ月 前
コミット
5e60e5ed5f

+ 5 - 5
TeamAAS-VM/Core/Cameras/OptCamera.cs

@@ -420,14 +420,14 @@ namespace TeamAAS_VP.Core.Cameras
                         //{
                         //    mvCameraAcq.StartGrabbing();
                         //}
-                        nReVal = mvCameraAcq.StartGrabbing();
+                        //nReVal = mvCameraAcq.StartGrabbing();
                         mvCameraAcq.ClearPayloadBuffer();
                         nReVal = mvCameraAcq.Grab(ref payload);
                         if (nReVal == SciCam.SCI_CAMERA_OK)
                         {
                             Image = GetConvertedInfo(payload);
                             mvCameraAcq.FreePayload(payload);
-                            nReVal = mvCameraAcq.StopGrabbing();
+                            //nReVal = mvCameraAcq.StopGrabbing();
                             TotalTime = sw.Elapsed;
                             ErrorMessage= $"{i+1}";
                             return Image;
@@ -435,10 +435,10 @@ namespace TeamAAS_VP.Core.Cameras
                         else
                         {
                             nReVal = mvCameraAcq.FreePayload(payload);
-                            nReVal = mvCameraAcq.StopGrabbing();
+                            //nReVal = mvCameraAcq.StopGrabbing();
                             //_operationSemaphore.Release();
-                            //CloseDevice();
-                            //OpenDevice();
+                            CloseDevice();
+                            OpenDevice();
                             ErrorMessage = "图像采集失败!";
                         }
                     }

+ 40 - 38
TeamAAS-VM/Core/Management.cs

@@ -1481,44 +1481,6 @@ namespace TeamAAS_VP.Core
                                     return;
                                 }
                                 else
-                                {
-                                    await plc.WriteNodeAsync(addressConfig.Out_UpCameraPutStatus.Address, (Int16)2);
-                                    return;
-                                }
-                            }
-                            else
-                            {
-                                //获取固定向上相机1的流程
-                                var process1 = _productService.GetCurrentProductProcedureModelById(currentProduct.MoveDownCamera1LockPhotoProcedureId);
-                                if (process1 == null)
-                                {
-                                    SendTaskMessage($"固定向上相机1视觉流程,流程ID:{currentProduct.MoveDownCamera1LockPhotoProcedureId}", MessageLevel.Alarm);
-                                    await plc.WriteNodeAsync(addressConfig.Out_UpCameraPutStatus.Address, (Int16)2);
-                                    return;
-                                }
-                                //获取固定向上相机2的流程
-                                var process2 = _productService.GetCurrentProductProcedureModelById(currentProduct.MoveDownCamera2LockPhotoProcedureId);
-                                if (process2 == null)
-                                {
-                                    SendTaskMessage($"固定向上相机1视觉流程,流程ID:{currentProduct.MoveDownCamera2LockPhotoProcedureId}", MessageLevel.Alarm);
-                                    await plc.WriteNodeAsync(addressConfig.Out_UpCameraPutStatus.Address, (Int16)2);
-                                    return;
-                                }
-                                // 执行视觉任务
-                                var _cts = new CancellationTokenSource();
-                                var task1 = _remoteCommandService.ExecutePhotoGetSinglePoint(process1, null, new double[] { currentPosition.X, currentPosition.Y, currentPosition.U }, _cts.Token);
-                                var task2 = _remoteCommandService.ExecutePhotoGetSinglePoint(process2, null, new double[] { currentPosition.X, currentPosition.Y, currentPosition.U }, _cts.Token);
-                                var visionResults = await Task.WhenAll(task1, task2);
-                                if (visionResults[0].IsSucceed && visionResults[1].IsSucceed)
-                                {
-                                    float centerX = (float)(visionResults[0].X + visionResults[1].X) / 2;
-                                    float centerY = (float)(visionResults[0].Y + visionResults[1].Y) / 2;
-                                    _MoveCameraAngle = Common.CalculateAngleBetweenPointsDegrees(new PointF((float)visionResults[0].X, (float)visionResults[0].Y), new PointF((float)visionResults[1].X, (float)visionResults[1].Y));
-                                    UpCameraPutResults[cameraIndex] = new PointF(centerX, centerY);
-                                    await plc.WriteNodeAsync(addressConfig.Out_UpCameraPutStatus.Address, (Int16)1);
-                                    return;
-                                }
-                                else
                                 {
                                     //await plc.WriteNodeAsync(addressConfig.Out_UpCameraPutStatus.Address, (Int16)2);
                                     //return;
@@ -1526,6 +1488,46 @@ namespace TeamAAS_VP.Core
                                     return;
                                 }
                             }
+                            //else
+                            //{
+                            //    //获取固定向上相机1的流程
+                            //    var process1 = _productService.GetCurrentProductProcedureModelById(currentProduct.MoveDownCamera1LockPhotoProcedureId);
+                            //    if (process1 == null)
+                            //    {
+                            //        SendTaskMessage($"固定向上相机1视觉流程,流程ID:{currentProduct.MoveDownCamera1LockPhotoProcedureId}", MessageLevel.Alarm);
+                            //        await plc.WriteNodeAsync(addressConfig.Out_UpCameraPutStatus.Address, (Int16)2);
+                            //        return;
+                            //    }
+                            //    //获取固定向上相机2的流程
+                            //    var process2 = _productService.GetCurrentProductProcedureModelById(currentProduct.MoveDownCamera2LockPhotoProcedureId);
+                            //    if (process2 == null)
+                            //    {
+                            //        SendTaskMessage($"固定向上相机1视觉流程,流程ID:{currentProduct.MoveDownCamera2LockPhotoProcedureId}", MessageLevel.Alarm);
+                            //        await plc.WriteNodeAsync(addressConfig.Out_UpCameraPutStatus.Address, (Int16)2);
+                            //        return;
+                            //    }
+                            //    // 执行视觉任务
+                            //    var _cts = new CancellationTokenSource();
+                            //    var task1 = _remoteCommandService.ExecutePhotoGetSinglePoint(process1, null, new double[] { currentPosition.X, currentPosition.Y, currentPosition.U }, _cts.Token);
+                            //    var task2 = _remoteCommandService.ExecutePhotoGetSinglePoint(process2, null, new double[] { currentPosition.X, currentPosition.Y, currentPosition.U }, _cts.Token);
+                            //    var visionResults = await Task.WhenAll(task1, task2);
+                            //    if (visionResults[0].IsSucceed && visionResults[1].IsSucceed)
+                            //    {
+                            //        float centerX = (float)(visionResults[0].X + visionResults[1].X) / 2;
+                            //        float centerY = (float)(visionResults[0].Y + visionResults[1].Y) / 2;
+                            //        _MoveCameraAngle = Common.CalculateAngleBetweenPointsDegrees(new PointF((float)visionResults[0].X, (float)visionResults[0].Y), new PointF((float)visionResults[1].X, (float)visionResults[1].Y));
+                            //        UpCameraPutResults[cameraIndex] = new PointF(centerX, centerY);
+                            //        await plc.WriteNodeAsync(addressConfig.Out_UpCameraPutStatus.Address, (Int16)1);
+                            //        return;
+                            //    }
+                            //    else
+                            //    {
+                            //        //await plc.WriteNodeAsync(addressConfig.Out_UpCameraPutStatus.Address, (Int16)2);
+                            //        //return;
+                            //        await plc.WriteNodeAsync(addressConfig.Out_UpCameraPutStatus.Address, (Int16)1);
+                            //        return;
+                            //    }
+                            //}
                         }
                         else
                         {

+ 48 - 34
TeamAAS-VM/ViewModels/Product/PlcPointParamsViewModel.cs

@@ -3,6 +3,7 @@ using MahApps.Metro.Controls;
 using MaterialDesignThemes.Wpf;
 using MathNet.Numerics.LinearAlgebra;
 using NPOI.SS.Formula.Functions;
+using OpenCvSharp.Flann;
 using Prism.Commands;
 using Prism.Events;
 using Prism.Ioc;
@@ -586,20 +587,36 @@ namespace TeamAAS_VP.ViewModels.Product
                     return;
                 }
 
-                //Robot.Timeout = 6000000;
-                switch (motionCmd)
+                if (SelectedIndex == 1)
                 {
-                    case MotionCommand.Go:
-                        await Robot.GoAsync(point);
-                        break;
-                    case MotionCommand.Jump:
-                        await Robot.JumpAsync(point, 0);
-                        break;
-                    case MotionCommand.Move:
-                        await Robot.MoveAsync(point);
-                        break;
+                    var curpos = await Robot.GetRobotPosAsync();
+                    var addpos = await Robot.GetAdditionalAxisCurrentPosAsync(Robot.AdditionalAxisList[0].Name);
+                    curpos.Z = 0;
+                    await Robot.AdditionalAxisMoveAsync(Robot.AdditionalAxisList[0].Name, PickP1.Z_Position_Stop);
+                    curpos.X = SelectedPoint.X_Position;
+                    curpos.Y = SelectedPoint.Y_Position;
+                    curpos.Z = SelectedPoint.Z_Position_Start;
+                    curpos.U = SelectedPoint.U_Position;
+                    await Robot.CalibMotionAsync(curpos, 0);
                 }
-                _eventAggregator.GetEvent<SnackbarMessageNotification>().Publish(new MessageParameter() { Msg = $"{Lang.完成}!", Duration = 0.4 });
+                else
+                {
+                    //Robot.Timeout = 6000000;
+                    switch (motionCmd)
+                    {
+                        case MotionCommand.Go:
+                            await Robot.GoAsync(point);
+                            break;
+                        case MotionCommand.Jump:
+                            await Robot.JumpAsync(point, 0);
+                            break;
+                        case MotionCommand.Move:
+                            await Robot.MoveAsync(point);
+                            break;
+                    }
+                }
+
+                    _eventAggregator.GetEvent<SnackbarMessageNotification>().Publish(new MessageParameter() { Msg = $"{Lang.完成}!", Duration = 0.4 });
             }
             catch (Exception ex)
             {
@@ -649,8 +666,21 @@ namespace TeamAAS_VP.ViewModels.Product
                 }
                 else if (SelectedIndex == 1)
                 {
-                    _eventAggregator.GetEvent<SnackbarMessageNotification>().Publish(new MessageParameter() { Msg = "当前模式不允许直接示教取料点!", Duration = 1 });
-                    return;
+                    //弹窗用户是否确认要示教该点位
+                    if (MessageBox.Show($"确认要示教点位 {SelectedPoint.Number} 吗?", "示教点位", MessageBoxButton.YesNo, MessageBoxImage.Question) != MessageBoxResult.Yes)
+                    {
+                        return;
+                    }
+
+                    var curpos = await Robot.GetRobotPosAsync();
+                    var addpos = await Robot.GetAdditionalAxisCurrentPosAsync(Robot.AdditionalAxisList[0].Name);
+                    SelectedPoint.X_Position = curpos.X;
+                    SelectedPoint.Y_Position = curpos.Y;
+                    SelectedPoint.Z_Position_Start = curpos.Z;
+                    SelectedPoint.U_Position = curpos.U;
+                    SelectedPoint.R_Position = curpos.V;
+                    SelectedPoint.Z_Position_Stop = addpos;
+                    _eventAggregator.GetEvent<SnackbarMessageNotification>().Publish(new MessageParameter() { Msg = $"{Lang.完成}!", Duration = 0.4 });
                 }
                 else
                 {
@@ -1280,29 +1310,13 @@ namespace TeamAAS_VP.ViewModels.Product
                     await task;
                     return;
                 }
-                //获取移动向下相机2的流程
-                var process2 = _productService.GetCurrentProductProcedureModelById(SelectProduct.MoveDownCamera2LockPhotoProcedureId);
-                if (process2 == null)
-                {
-                    _eventAggregator.GetEvent<SnackbarMessageNotification>().Publish(new MessageParameter() { Msg = $"移动向下相机2视觉流程,流程ID:{SelectProduct.MoveDownCamera2LockPhotoProcedureId} 未找到!", Duration = 1 });
-                    if (DialogHost.IsDialogOpen("RootDialog"))
-                    {
-                        DialogHost.Close("RootDialog");
-                    }
-                    await task;
-                    return;
-                }
                 // 执行视觉任务
                 var _cts = new CancellationTokenSource();
-                var task1 = _remoteCommandService.ExecutePhotoGetSinglePoint(process1, null, new double[] { rpoint.X, rpoint.Y, rpoint.U }, _cts.Token);
-                var task2 = _remoteCommandService.ExecutePhotoGetSinglePoint(process2, null, new double[] { rpoint.X, rpoint.Y, rpoint.U }, _cts.Token);
-                var visionResults = await Task.WhenAll(task1, task2);
-                if (visionResults[0].IsSucceed && visionResults[1].IsSucceed)
+                var visionResult =await _remoteCommandService.ExecutePhotoGetSinglePoint(process1, null, new double[] { rpoint.X, rpoint.Y, rpoint.U }, _cts.Token);
+                if (visionResult.IsSucceed)
                 {
-                    float centerX = (float)(visionResults[0].X + visionResults[1].X) / 2;
-                    float centerY = (float)(visionResults[0].Y + visionResults[1].Y) / 2;
-                    _MoveCameraTempletAngle = Common.CalculateAngleBetweenPointsDegrees(new PointF((float)visionResults[0].X, (float)visionResults[0].Y), new PointF((float)visionResults[1].X, (float)visionResults[1].Y));
-                    _PutPoint = new PointF(centerX, centerY);
+                    _MoveCameraTempletAngle = visionResult.U;
+                    _PutPoint = new PointF((float)visionResult.X, (float)visionResult.Y);
 
                     if (DialogHost.IsDialogOpen("RootDialog"))
                     {

+ 2 - 2
TeamAAS-VM/Views/Product/PlcPointParams.xaml

@@ -364,7 +364,7 @@
 
                                         <StackPanel Orientation="Vertical"
                                                     HorizontalAlignment="Left">
-                                            <Grid>
+                                            <!--<Grid>
                                                 <Grid.RowDefinitions>
                                                     <RowDefinition Height="auto" />
                                                     <RowDefinition Height="auto" />
@@ -478,7 +478,7 @@
                                                         HorizontalAlignment="Left"
                                                         Grid.Column="2"
                                                         Command="{Binding CalPickPosCommand}" />
-                                            </Grid>
+                                            </Grid>-->
                                             <StackPanel Orientation="Horizontal">
                                                 <TextBlock Text="吸真空编号:"
                                                            VerticalAlignment="Center" />