Explorar el Código

针对图片保存的优化,当拍照时,还没有获得流程码;将图片缓存,等待SN到位,再存储

844184169 hace 6 meses
padre
commit
674b8d6855

+ 4 - 0
TeamAAS-VM/Core/Management.cs

@@ -2557,6 +2557,7 @@ namespace TeamAAS_VP.Core
                                                     if (i == 0)
                                                     {
                                                         _productService.CurrentProductCode = ProductMainSN[i];
+                                                        _eventAggregator.GetEvent<DelaySaveImageNotification>().Publish(true);//通知界面延迟保存图片,等待MES查询结果返回,避免图片和数据不同步
                                                     }
                                                     SendTaskMessage($"产品主sn:{ProductMainSN[i]}", MessageLevel.Info);
                                                 }
@@ -2611,6 +2612,7 @@ namespace TeamAAS_VP.Core
                                                 if (i == 0)
                                                 {
                                                     _productService.CurrentProductCode = ProductMainSN[i];
+                                                    _eventAggregator.GetEvent<DelaySaveImageNotification>().Publish(true);//通知界面延迟保存图片,等待MES查询结果返回,避免图片和数据不同步
                                                 }
                                                 SendTaskMessage($"产品主sn:{ProductMainSN[i]}", MessageLevel.Info);
                                             }
@@ -2645,6 +2647,7 @@ namespace TeamAAS_VP.Core
                                         if (i == 0)
                                         {
                                             _productService.CurrentProductCode = ProductMainSN[i];
+                                            _eventAggregator.GetEvent<DelaySaveImageNotification>().Publish(true);//通知界面延迟保存图片,等待MES查询结果返回,避免图片和数据不同步
                                         }
 
                                         LogHelper.WriteLogMes($"【未启用mes】");
@@ -2668,6 +2671,7 @@ namespace TeamAAS_VP.Core
                                     if (i == 0)
                                     {
                                         CTtime = ct;
+                                        _eventAggregator.GetEvent<DelaySaveImageNotification>().Publish(false);//通知界面延迟保存图片,等待MES查询结果返回,避免图片和数据不同步
                                     }
 
                                     //从PLC获取零件编号

+ 8 - 0
TeamAAS-VM/Events/DelaySaveImageNotification.cs

@@ -0,0 +1,8 @@
+using Prism.Events;
+
+namespace TeamAAS_VP.Events
+{
+    public class DelaySaveImageNotification : PubSubEvent<bool>
+    {
+    }
+}

+ 89 - 0
TeamAAS-VM/Models/DelaySaveImage.cs

@@ -0,0 +1,89 @@
+using Prism.Mvvm;
+using System.Drawing;
+using TeamAAS_VP.Enums;
+
+namespace TeamAAS_VP.Models
+{
+    /// <summary>
+    /// 延迟保存的图像
+    /// </summary>
+    public class DelaySaveImage : BindableBase
+    {
+        private ProcedureSaveImageModel _SaveImageModel;
+        /// <summary>
+        /// 存图模式
+        /// </summary>
+        public ProcedureSaveImageModel SaveImageModel
+        {
+            get { return _SaveImageModel; }
+            set { SetProperty(ref _SaveImageModel, value); }
+        }
+
+        private ProcedureSaveImagePathModel _SaveImagePathModel;
+        /// <summary>
+        /// 存图路径模式
+        /// </summary>
+        public ProcedureSaveImagePathModel SaveImagePathModel
+        {
+            get { return _SaveImagePathModel; }
+            set { SetProperty(ref _SaveImagePathModel, value); }
+        }
+
+        private string _SavePath;
+        /// <summary>
+        /// 存图路径
+        /// </summary>
+        public string SavePath
+        {
+            get { return _SavePath; }
+            set { SetProperty(ref _SavePath, value); }
+        }
+
+        private Cognex.VisionPro.ICogImage _Image;
+
+        public Cognex.VisionPro.ICogImage Image
+        {
+            get { return _Image; }
+            set { SetProperty(ref _Image, value); }
+        }
+
+        private Bitmap _clonedBitmap;
+        /// <summary>
+        /// 图片克隆,保存图像时使用,避免图像被修改导致保存失败
+        /// </summary>
+        public Bitmap clonedBitmap
+        {
+            get { return _clonedBitmap; }
+            set { SetProperty(ref _clonedBitmap, value); }
+        }
+
+        private bool _result;
+
+        public bool Result
+        {
+            get { return _result; }
+            set { SetProperty(ref _result, value); }
+        }
+
+        private bool _IsCompress;
+        /// <summary>
+        /// 是否压缩图片
+        /// </summary>
+        public bool IsCompress
+        {
+            get { return _IsCompress; }
+            set { SetProperty(ref _IsCompress, value); }
+        }
+
+        //用户定义的图片文件名
+        private string _ImageFileName;
+        /// <summary>
+        /// 用户定义的图片文件名
+        /// </summary>
+        public string ImageFileName
+        {
+            get { return _ImageFileName; }
+            set { SetProperty(ref _ImageFileName, value); }
+        }
+    }
+}

+ 29 - 18
TeamAAS-VM/Models/Product/ProcedureModel.cs

@@ -38,7 +38,7 @@ namespace TeamAAS_VP.Models
         /// <summary>
         /// 触发相机命令
         /// </summary>
-        public string TriggerCommand {  get; set; }
+        public string TriggerCommand { get; set; }
 
         /// <summary>
         /// 机器人
@@ -68,7 +68,7 @@ namespace TeamAAS_VP.Models
         public ObservableCollection<ProcedureOutput> ProcedureOutputs
         {
             get { return _ProcedureOutputs; }
-            set { SetProperty(ref _ProcedureOutputs,value); }
+            set { SetProperty(ref _ProcedureOutputs, value); }
         }
 
         private string _OutputSeparator = ";";
@@ -89,7 +89,7 @@ namespace TeamAAS_VP.Models
         public FeederWorks FeederWorks
         {
             get { return _FeederWorks; }
-            set { SetProperty(ref _FeederWorks,value); }
+            set { SetProperty(ref _FeederWorks, value); }
         }
 
         private FeederStockWorks _FeederStockWorks;
@@ -130,7 +130,7 @@ namespace TeamAAS_VP.Models
         public float ExposureTime
         {
             get { return _ExposureTime; }
-            set { SetProperty(ref _ExposureTime, value);}
+            set { SetProperty(ref _ExposureTime, value); }
         }
 
         private float _Gain;
@@ -151,7 +151,7 @@ namespace TeamAAS_VP.Models
         public CogToolBlock ToolBlock
         {
             get { return _ToolBlock; }
-            set { SetProperty(ref _ToolBlock,value); }
+            set { SetProperty(ref _ToolBlock, value); }
         }
 
         private ObservableCollection<ToolInfo> _ToolInfo = new ObservableCollection<ToolInfo>();
@@ -214,7 +214,7 @@ namespace TeamAAS_VP.Models
             set { SetProperty(ref _OutputPointMode, value); }
         }
 
-        private int _OutputPointCountMax=100;
+        private int _OutputPointCountMax = 100;
         /// <summary>
         /// 每次发送给机器人的点数最大值
         /// </summary>
@@ -229,12 +229,12 @@ namespace TeamAAS_VP.Models
         /// 是否剔除本次识别到的物料与上一次识别到的物料位置过近的点
         /// </summary>
         public bool IsExcludeNearPoint
-            {
+        {
             get { return _IsExcludeNearPoint; }
             set { SetProperty(ref _IsExcludeNearPoint, value); }
         }
 
-        private double _ExcludeNearPointThreshol=1;
+        private double _ExcludeNearPointThreshol = 1;
         /// <summary>
         /// 物料位置过近阈值
         /// </summary>
@@ -305,6 +305,16 @@ namespace TeamAAS_VP.Models
             set { SetProperty(ref _IsCompress, value); }
         }
 
+        private bool _IsDelaySaveImage;
+        /// <summary>
+        /// 是否延迟保存图片
+        /// </summary>
+        public bool IsDelaySaveImage
+        {
+            get { return _IsDelaySaveImage; }
+            set { SetProperty(ref _IsDelaySaveImage, value); }
+        }
+
         private FeederFrequencyModel _FeederFindFrequency;
         /// <summary>
         /// Feeder自动寻频配置
@@ -365,11 +375,11 @@ namespace TeamAAS_VP.Models
         {
             Id = Guid.NewGuid();
             ProcedureOutputs = new ObservableCollection<ProcedureOutput>();
-            ToolInfo= new ObservableCollection<ToolInfo>();
-            FeederFindFrequency= new FeederFrequencyModel();
-            UserDefineParameters= new ObservableCollection<ProcedureUserDefineParam>();
+            ToolInfo = new ObservableCollection<ToolInfo>();
+            FeederFindFrequency = new FeederFrequencyModel();
+            UserDefineParameters = new ObservableCollection<ProcedureUserDefineParam>();
             FeederWorks = new FeederWorks();
-            FeederStockWorks= new FeederStockWorks();
+            FeederStockWorks = new FeederStockWorks();
             LightChannels = new ObservableCollection<ChannelConfig>();
         }
 
@@ -394,9 +404,9 @@ namespace TeamAAS_VP.Models
             {
                 Id = this.Id,
                 Name = this.Name,
-                CameraName=this.CameraName,
+                CameraName = this.CameraName,
                 VisionModel = this.VisionModel,
-                TriggerCommand=this.TriggerCommand,
+                TriggerCommand = this.TriggerCommand,
                 RobotId = this.RobotId,
                 FeederId = this.FeederId,
                 CameraId = this.CameraId,
@@ -419,13 +429,14 @@ namespace TeamAAS_VP.Models
                 SaveImageModel = this.SaveImageModel,
                 SaveImagePathModel = this.SaveImagePathModel,
                 SavePath = this.SavePath,
-                ImageFileNameFormat=this.ImageFileNameFormat,
+                ImageFileNameFormat = this.ImageFileNameFormat,
                 IsCompress = this.IsCompress,
+                IsDelaySaveImage = this.IsDelaySaveImage,
                 FeederFindFrequency = this.FeederFindFrequency?.Copy(),
-                IsExcludeNearPoint=this.IsExcludeNearPoint,
+                IsExcludeNearPoint = this.IsExcludeNearPoint,
                 ExcludeNearPointThreshol = this.ExcludeNearPointThreshol,
-                OutputPointMode=this.OutputPointMode,
-                OutputSeparator=this.OutputSeparator,
+                OutputPointMode = this.OutputPointMode,
+                OutputSeparator = this.OutputSeparator,
                 UserDefineParameters = new ObservableCollection<ProcedureUserDefineParam>(this.UserDefineParameters.Select(udp => udp.Copy())),
                 LightChannels = this.LightChannels == null ? new ObservableCollection<ChannelConfig>() : new ObservableCollection<ChannelConfig>(this.LightChannels.Select(ch => new ChannelConfig
                 {

+ 10 - 0
TeamAAS-VM/Models/ShowRender.cs

@@ -122,6 +122,16 @@ namespace TeamAAS_VP.Models
             set { SetProperty(ref _IsCompress, value); }
         }
 
+        private bool _IsDelaySaveImage;
+        /// <summary>
+        /// 是否延迟保存图片
+        /// </summary>
+        public bool IsDelaySaveImage
+        {
+            get { return _IsDelaySaveImage; }
+            set { SetProperty(ref _IsDelaySaveImage, value); }
+        }
+
         private string _ProceductName;
 
         public string ProceductName

+ 19 - 1
TeamAAS-VM/Resources/Languages/Lang.Designer.cs

@@ -3786,6 +3786,15 @@ namespace TeamAAS_VP.Resources.Languages {
             }
         }
         
+        /// <summary>
+        ///   查找类似 延迟保存图片 的本地化字符串。
+        /// </summary>
+        public static string 延迟保存图片 {
+            get {
+                return ResourceManager.GetString("延迟保存图片", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   查找类似 开启服务器监听 的本地化字符串。
         /// </summary>
@@ -4974,6 +4983,15 @@ namespace TeamAAS_VP.Resources.Languages {
             }
         }
         
+        /// <summary>
+        ///   查找类似 是否延迟保存图片 的本地化字符串。
+        /// </summary>
+        public static string 是否延迟保存图片 {
+            get {
+                return ResourceManager.GetString("是否延迟保存图片", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   查找类似 是否开始测试? 的本地化字符串。
         /// </summary>
@@ -8096,7 +8114,7 @@ namespace TeamAAS_VP.Resources.Languages {
                 return ResourceManager.GetString("角点拖动调整大小", resourceCulture);
             }
         }
-       
+        
         /// <summary>
         ///   查找类似 触发命令 的本地化字符串。
         /// </summary>

+ 389 - 387
TeamAAS-VM/Resources/Languages/Lang.en.resx

@@ -1998,6 +1998,9 @@
   <data name="正在初始化光源控制器" xml:space="preserve">
     <value>Initializing Light Controller</value>
   </data>
+  <data name="通过下相机获取P0" xml:space="preserve">
+    <value>Upper and lower cameras shoot opposite, lower camera acquires P0</value>
+  </data>
   <data name="选择下相机视觉流程" xml:space="preserve">
     <value>Select the next camera vision process</value>
   </data>
@@ -2016,6 +2019,45 @@
   <data name="请选择要启用的光源通道" xml:space="preserve">
     <value>Please select a light channel to enable</value>
   </data>
+  <data name="螺丝供料器" xml:space="preserve">
+    <value>Screw Feeder</value>
+  </data>
+  <data name="通过移动至下相机拍照位置拍照计算P0" xml:space="preserve">
+    <value>Move to the lower camera shooting position, take a photo to obtain P0, then return to the original position</value>
+  </data>
+  <data name="CameraMount_MobileDownIndependentXYPlatform" xml:space="preserve">
+    <value>Independent XY Moving Camera</value>
+  </data>
+  <data name="视觉静态精度分析" xml:space="preserve">
+    <value>Vision Static Precision Analysis</value>
+  </data>
+  <data name="ProcedureSaveImagePathModel_Month_Day_Formula_ProductSN_Time" xml:space="preserve">
+    <value>Year/Month/Day/Recipe Name/Product SN/Product SN + Time</value>
+  </data>
+  <data name="独立移动相机校准" xml:space="preserve">
+    <value>-Independent Moving Camera Calibration</value>
+  </data>
+  <data name="独立模组X方向移动的距离" xml:space="preserve">
+    <value>Moving distance of independent module in X direction:</value>
+  </data>
+  <data name="移动距离" xml:space="preserve">
+    <value>Moving Distance</value>
+  </data>
+  <data name="相机运动模组编号" xml:space="preserve">
+    <value>Camera Motion Module ID</value>
+  </data>
+  <data name="选择下相机" xml:space="preserve">
+    <value>Select Lower Camera:</value>
+  </data>
+  <data name="获取P0点" xml:space="preserve">
+    <value>Get P0 Point:</value>
+  </data>
+  <data name="放置产品的位置" xml:space="preserve">
+    <value>Product Placement Position:</value>
+  </data>
+  <data name="移动至" xml:space="preserve">
+    <value>Move to</value>
+  </data>
   <data name="下相机拍照的位置" xml:space="preserve">
     <value>Lower camera shooting position:</value>
   </data>
@@ -2109,6 +2151,18 @@
   <data name="关闭" xml:space="preserve">
     <value>Turn Off</value>
   </data>
+  <data name="相机2轴控制" xml:space="preserve">
+    <value>Camera 2-Axis Control</value>
+  </data>
+  <data name="相机4轴控制" xml:space="preserve">
+    <value>Camera 4-Axis Control</value>
+  </data>
+  <data name="相机1轴控制" xml:space="preserve">
+    <value>Camera 1-Axis Control</value>
+  </data>
+  <data name="相机3轴控制" xml:space="preserve">
+    <value>Camera 3-Axis Control</value>
+  </data>
   <data name="校准前X" xml:space="preserve">
     <value>X Before Calibration</value>
   </data>
@@ -2127,6 +2181,9 @@
   <data name="Y补偿" xml:space="preserve">
     <value>Y Compensation</value>
   </data>
+  <data name="动态精度分析" xml:space="preserve">
+    <value>Dynamic Precision Analysis</value>
+  </data>
   <data name="取料拍照点位" xml:space="preserve">
     <value>Picking Photo Position</value>
   </data>
@@ -2145,9 +2202,18 @@
   <data name="复检点位" xml:space="preserve">
     <value>Re-inspection position</value>
   </data>
+  <data name="独立移动相机" xml:space="preserve">
+    <value>Independent Moving Camera</value>
+  </data>
   <data name="撕膜点位" xml:space="preserve">
     <value>Film peeling position</value>
   </data>
+  <data name="压力组装点位" xml:space="preserve">
+    <value>Pressure Assembly Point</value>
+  </data>
+  <data name="二维码拍照点位" xml:space="preserve">
+    <value>QR Code Photo Point</value>
+  </data>
   <data name="添加点" xml:space="preserve">
     <value>Add Point</value>
   </data>
@@ -2181,12 +2247,27 @@
   <data name="执行产品拍照" xml:space="preserve">
     <value>Execute product photo</value>
   </data>
+  <data name="X位置" xml:space="preserve">
+    <value>X Position</value>
+  </data>
+  <data name="X速度" xml:space="preserve">
+    <value>X Speed</value>
+  </data>
+  <data name="Y位置" xml:space="preserve">
+    <value>Y Position</value>
+  </data>
+  <data name="Y速度" xml:space="preserve">
+    <value>Y Speed</value>
+  </data>
   <data name="Z起点位置" xml:space="preserve">
     <value>Z Start Position</value>
   </data>
   <data name="Z起点速度" xml:space="preserve">
     <value>Z Start Speed</value>
   </data>
+  <data name="Z终点位置接料位置" xml:space="preserve">
+    <value>Z End Position / Material Pickup Position</value>
+  </data>
   <data name="Z终点速度" xml:space="preserve">
     <value>Z End Speed</value>
   </data>
@@ -2214,9 +2295,48 @@
   <data name="固定向上相机2视觉流程ID" xml:space="preserve">
     <value>Fixed Upward Camera 1 Vision Process ID:</value>
   </data>
+  <data name="独立向下相机1取料拍照流程ID" xml:space="preserve">
+    <value>Independent Lower Camera 1 Pick-up Photo Process ID: </value>
+  </data>
+  <data name="独立向下相机2取料拍照流程ID" xml:space="preserve">
+    <value>Independent Lower Camera 2 Pick-up Photo Process ID: </value>
+  </data>
+  <data name="独立向下相机4取料拍照流程ID" xml:space="preserve">
+    <value>Independent Lower Camera 4 Pick-up Photo Process ID: </value>
+  </data>
+  <data name="独立向下相机1产品拍照流程ID" xml:space="preserve">
+    <value>Independent Lower Camera 1 Product Photo Process ID: </value>
+  </data>
+  <data name="独立向下相机2产品拍照流程ID" xml:space="preserve">
+    <value>Independent Lower Camera 2 Product Photo Process ID: </value>
+  </data>
+  <data name="独立向下相机3产品拍照流程ID" xml:space="preserve">
+    <value>Independent Lower Camera 3 Product Photo Process ID: </value>
+  </data>
+  <data name="独立向下相机4产品拍照流程ID" xml:space="preserve">
+    <value>Independent Lower Camera 4 Product Photo Process ID: </value>
+  </data>
+  <data name="独立向下相机1检测拍照流程ID" xml:space="preserve">
+    <value>Independent Lower Camera 1 Inspection Photo Process ID: </value>
+  </data>
+  <data name="独立向下相机2检测拍照流程ID" xml:space="preserve">
+    <value>Independent Lower Camera 2 Inspection Photo Process ID: </value>
+  </data>
+  <data name="独立向下相机3检测拍照流程ID" xml:space="preserve">
+    <value>Independent Lower Camera 3 Inspection Photo Process ID: </value>
+  </data>
+  <data name="独立向下相机4检测拍照流程ID" xml:space="preserve">
+    <value>Independent Lower Camera 4 Inspection Photo Process ID: </value>
+  </data>
+  <data name="相机扫码拍照流程ID" xml:space="preserve">
+    <value>Camera Scan Code Photo Process ID</value>
+  </data>
   <data name="Feeder取料测试" xml:space="preserve">
     <value>Feeder Pick-up Test</value>
   </data>
+  <data name="选择相机流程" xml:space="preserve">
+    <value>Select Camera Process</value>
+  </data>
   <data name="选择避让点" xml:space="preserve">
     <value>Avoidance Point Selection</value>
   </data>
@@ -2226,6 +2346,9 @@
   <data name="二次定位相机测试" xml:space="preserve">
     <value>Secondary Positioning Camera Test</value>
   </data>
+  <data name="选择相机拍照点" xml:space="preserve">
+    <value>Select Camera Photo Point</value>
+  </data>
   <data name="创建Tool" xml:space="preserve">
     <value>Create Tool</value>
   </data>
@@ -2346,6 +2469,21 @@
   <data name="清空数据" xml:space="preserve">
     <value>Clear Data</value>
   </data>
+  <data name="动态重复精度分析" xml:space="preserve">
+    <value>Dynamic Repeatability Analysis</value>
+  </data>
+  <data name="X方向精度" xml:space="preserve">
+    <value>X Direction Accuracy: </value>
+  </data>
+  <data name="Y方向精度" xml:space="preserve">
+    <value>Y Direction Accuracy: </value>
+  </data>
+  <data name="角度精度" xml:space="preserve">
+    <value>Angle Accuracy: </value>
+  </data>
+  <data name="评级" xml:space="preserve">
+    <value>Rating: </value>
+  </data>
   <data name="优秀" xml:space="preserve">
     <value>Excellent</value>
   </data>
@@ -2382,6 +2520,9 @@
   <data name="组装记录查询" xml:space="preserve">
     <value>Assembly Record Query</value>
   </data>
+  <data name="开始" xml:space="preserve">
+    <value>Start:</value>
+  </data>
   <data name="结束" xml:space="preserve">
     <value>End:</value>
   </data>
@@ -2418,9 +2559,69 @@
   <data name="下相机坐标3" xml:space="preserve">
     <value>Lower Camera Coordinate 3</value>
   </data>
+  <data name="下相机坐标4" xml:space="preserve">
+    <value>Lower Camera Coordinate 4</value>
+  </data>
+  <data name="抓取运动坐标" xml:space="preserve">
+    <value>Grab Motion Coordinate</value>
+  </data>
+  <data name="放置运动坐标1" xml:space="preserve">
+    <value>Place Motion Coordinate 1</value>
+  </data>
+  <data name="放置运动坐标2" xml:space="preserve">
+    <value>Place Motion Coordinate 2</value>
+  </data>
+  <data name="放置运动坐标3" xml:space="preserve">
+    <value>Place Motion Coordinate 3</value>
+  </data>
+  <data name="放置运动坐标4" xml:space="preserve">
+    <value>Place Motion Coordinate 4</value>
+  </data>
+  <data name="设备名称" xml:space="preserve">
+    <value>Device Name</value>
+  </data>
+  <data name="操作员" xml:space="preserve">
+    <value>Operator</value>
+  </data>
+  <data name="备注" xml:space="preserve">
+    <value>Remarks</value>
+  </data>
+  <data name="上一页" xml:space="preserve">
+    <value>Previous Page</value>
+  </data>
+  <data name="下一页" xml:space="preserve">
+    <value>Next Page</value>
+  </data>
+  <data name="螺丝编号" xml:space="preserve">
+    <value>Screw Number:</value>
+  </data>
+  <data name="电批程序号" xml:space="preserve">
+    <value>Electric Screwdriver Program Number</value>
+  </data>
+  <data name="锁付圈数" xml:space="preserve">
+    <value>Locking Turns</value>
+  </data>
+  <data name="拍照记录查询" xml:space="preserve">
+    <value>Photo Record Inquiry</value>
+  </data>
   <data name="产品SN" xml:space="preserve">
     <value>Product SN</value>
   </data>
+  <data name="配方名" xml:space="preserve">
+    <value>Recipe Name</value>
+  </data>
+  <data name="流程名" xml:space="preserve">
+    <value>Process Name</value>
+  </data>
+  <data name="相机名" xml:space="preserve">
+    <value>Camera Name</value>
+  </data>
+  <data name="拍照编号" xml:space="preserve">
+    <value>Photo Number</value>
+  </data>
+  <data name="机器人位置" xml:space="preserve">
+    <value>Robot Position</value>
+  </data>
   <data name="像素坐标" xml:space="preserve">
     <value>Pixel Coordinates</value>
   </data>
@@ -2571,6 +2772,12 @@
   <data name="保存系统参数" xml:space="preserve">
     <value>Save System Parameters</value>
   </data>
+  <data name="刷卡器配置" xml:space="preserve">
+    <value>Card Reader Configuration</value>
+  </data>
+  <data name="组装保压配置" xml:space="preserve">
+    <value>Assembly Holding Pressure Configuration</value>
+  </data>
   <data name="保压时间" xml:space="preserve">
     <value>Holding Pressure Time:</value>
   </data>
@@ -2583,6 +2790,12 @@
   <data name="后保压配置" xml:space="preserve">
     <value>Post-holding Pressure Configuration</value>
   </data>
+  <data name="是否开始独立移动相机位置校准" xml:space="preserve">
+    <value>Start independent moving camera position calibration</value>
+  </data>
+  <data name="独立移动相机位置校准失败" xml:space="preserve">
+    <value>Independent moving camera position calibration failed</value>
+  </data>
   <data name="相机校准失败" xml:space="preserve">
     <value>Camera calibration failed</value>
   </data>
@@ -2595,41 +2808,119 @@
   <data name="移动机器人" xml:space="preserve">
     <value>Move the Robot</value>
   </data>
+  <data name="是否移动机器人至中心点请确认安全" xml:space="preserve">
+    <value>Move the robot to the center point? Please confirm safety?</value>
+  </data>
   <data name="请先选择相机" xml:space="preserve">
     <value>Please select the camera first!</value>
   </data>
   <data name="请先选择标定" xml:space="preserve">
     <value>Please select calibration first!</value>
   </data>
-  <data name="未找到P0点请调整工件位置后重试" xml:space="preserve">
-    <value>P0 Point Not Found. Please Adjust the Workpiece Position and Retry!</value>
+  <data name="确认通过下相机开始标定P0点" xml:space="preserve">
+    <value>Confirm to start calibrating P0 point with the lower camera?</value>
   </data>
-  <data name="就绪" xml:space="preserve">
-    <value>Ready</value>
+  <data name="移动至移动至标定块放置位置取标定块失败" xml:space="preserve">
+    <value>Move to calibration block placement position, pick calibration block failed!</value>
   </data>
-  <data name="正在检测棋盘格" xml:space="preserve">
-    <value>Detecting checkerboard...</value>
+  <data name="移动至下相机位置失败" xml:space="preserve">
+    <value>Failed to move to lower camera position!</value>
   </data>
-  <data name="未检测到棋盘格" xml:space="preserve">
-    <value>Checkerboard not detected</value>
+  <data name="未找到P0点请调整工件位置后重试" xml:space="preserve">
+    <value>P0 Point Not Found. Please Adjust the Workpiece Position and Retry!</value>
   </data>
-  <data name="分析中" xml:space="preserve">
-    <value>Analyzing...</value>
+  <data name="移动至标定块放置位置放下标定块失败" xml:space="preserve">
+    <value>Move to calibration block placement position, place calibration block failed!</value>
   </data>
-  <data name="分析完成" xml:space="preserve">
-    <value>Analysis completed</value>
+  <data name="Z轴上升至安全高度失败" xml:space="preserve">
+    <value>Z-axis failed to rise to safe height!</value>
   </data>
-  <data name="已停止" xml:space="preserve">
-    <value>Stopped</value>
+  <data name="通过下相机标定P0点完成" xml:space="preserve">
+    <value>P0 point calibration with lower camera completed!</value>
   </data>
-  <data name="已重置" xml:space="preserve">
-    <value>Reset completed</value>
+  <data name="确认移动至下相机位置" xml:space="preserve">
+    <value>Confirm moving to lower camera position?</value>
   </data>
-  <data name="ROI已清除" xml:space="preserve">
-    <value>ROI cleared</value>
+  <data name="移动至下相机位置成功" xml:space="preserve">
+    <value>Move to lower camera position successful!</value>
   </data>
-  <data name="清晰度趋势" xml:space="preserve">
-    <value>Clarity Trend</value>
+  <data name="确认示教下相机位置" xml:space="preserve">
+    <value>Confirm teaching lower camera position?</value>
+  </data>
+  <data name="示教下相机位置成功" xml:space="preserve">
+    <value>Teaching lower camera position successful!</value>
+  </data>
+  <data name="确认移动至标定块放位置" xml:space="preserve">
+    <value>Confirm moving to calibration block placement position?</value>
+  </data>
+  <data name="移动至标定块放位置成功" xml:space="preserve">
+    <value>Move to calibration block placement position successful!</value>
+  </data>
+  <data name="移动至标定块放位置失败" xml:space="preserve">
+    <value>Move to calibration block placement position failed!</value>
+  </data>
+  <data name="确认示教标定块放位置" xml:space="preserve">
+    <value>Confirm teaching calibration block placement position?</value>
+  </data>
+  <data name="示教标定块放位置成功" xml:space="preserve">
+    <value>Teaching calibration block placement position successful!</value>
+  </data>
+  <data name="就绪" xml:space="preserve">
+    <value>Ready</value>
+  </data>
+  <data name="无法加载图像" xml:space="preserve">
+    <value>Unable to load image</value>
+  </data>
+  <data name="图像已加载" xml:space="preserve">
+    <value>Image loaded</value>
+  </data>
+  <data name="加载图像失败" xml:space="preserve">
+    <value>Failed to load image</value>
+  </data>
+  <data name="正在检测棋盘格" xml:space="preserve">
+    <value>Detecting checkerboard...</value>
+  </data>
+  <data name="检测成功" xml:space="preserve">
+    <value>Detection successful</value>
+  </data>
+  <data name="未检测到棋盘格" xml:space="preserve">
+    <value>Checkerboard not detected</value>
+  </data>
+  <data name="检测失败" xml:space="preserve">
+    <value>Detection failed</value>
+  </data>
+  <data name="分析中" xml:space="preserve">
+    <value>Analyzing...</value>
+  </data>
+  <data name="分析完成" xml:space="preserve">
+    <value>Analysis completed</value>
+  </data>
+  <data name="已停止" xml:space="preserve">
+    <value>Stopped</value>
+  </data>
+  <data name="对比度" xml:space="preserve">
+    <value>Contrast</value>
+  </data>
+  <data name="分析错误" xml:space="preserve">
+    <value>Analysis error</value>
+  </data>
+  <data name="已重置" xml:space="preserve">
+    <value>Reset completed</value>
+  </data>
+  <data name="分析报告" xml:space="preserve">
+    <value>Analysis report</value>
+  </data>
+  <data name="报告已导出" xml:space="preserve">
+    <value>Report exported</value>
+  </data>
+  <data name="导出失败" xml:space="preserve">
+    <value>Export failed</value>
+  </data>
+  <data name="ROI已清除" xml:space="preserve">
+    <value>ROI cleared</value>
+  </data>
+  <data name="清晰度趋势" xml:space="preserve">
+    <value>Clarity Trend</value>
   </data>
   <data name="帧数" xml:space="preserve">
     <value>Frame Rate</value>
@@ -2646,6 +2937,9 @@
   <data name="打开异常" xml:space="preserve">
     <value>Open exception</value>
   </data>
+  <data name="关闭通道" xml:space="preserve">
+    <value>Close channel</value>
+  </data>
   <data name="关闭异常" xml:space="preserve">
     <value>Close exception</value>
   </data>
@@ -2655,6 +2949,15 @@
   <data name="确认要点动距离0mm吗" xml:space="preserve">
     <value>Confirm jog distance of {0} mm</value>
   </data>
+  <data name="相机轴下使能失败" xml:space="preserve">
+    <value>Camera axis enable failed!</value>
+  </data>
+  <data name="相机轴上使能失败" xml:space="preserve">
+    <value>Camera axis enable failed!</value>
+  </data>
+  <data name="相机轴点动失败" xml:space="preserve">
+    <value>Camera axis jog failed!</value>
+  </data>
   <data name="持续时长ms" xml:space="preserve">
     <value>Duration (ms)</value>
   </data>
@@ -2691,12 +2994,24 @@
   <data name="继续调频" xml:space="preserve">
     <value>Continue Frequency Adjustment</value>
   </data>
+  <data name="视觉工具组不存在名称为CogToolBlockFeederCalib的ToolBlock" xml:space="preserve">
+    <value>The Visual Tool Group does not have a ToolBlock named: 'CogToolBlock-FeederCalib'</value>
+  </data>
+  <data name="视觉工具运行失败" xml:space="preserve">
+    <value>Visual tool operation failed!</value>
+  </data>
+  <data name="CogToolBlockFeederCalib运行出错error0" xml:space="preserve">
+    <value>CogToolBlock-FeederCalib run error!error:{0}</value>
+  </data>
   <data name="视觉运行中" xml:space="preserve">
     <value>Vision Running...</value>
   </data>
   <data name="添加机器人" xml:space="preserve">
     <value>Add Robot</value>
   </data>
+  <data name="选择要使用的光源通道" xml:space="preserve">
+    <value>Select the light source channel to use</value>
+  </data>
   <data name="测试进行中" xml:space="preserve">
     <value>Testing in progress...</value>
   </data>
@@ -2706,6 +3021,9 @@
   <data name="机器人未连接无法示教" xml:space="preserve">
     <value>Robot not connected, cannot teach!</value>
   </data>
+  <data name="相机未连接无法示教" xml:space="preserve">
+    <value>Camera not connected, cannot teach!</value>
+  </data>
   <data name="测试已取消" xml:space="preserve">
     <value>Test canceled!</value>
   </data>
@@ -2718,6 +3036,12 @@
   <data name="测试完成" xml:space="preserve">
     <value>Test completed!</value>
   </data>
+  <data name="确定进行连续测试吗" xml:space="preserve">
+    <value>Start continuous test?</value>
+  </data>
+  <data name="无测试数据无法导出报告" xml:space="preserve">
+    <value>No test data, cannot export report.</value>
+  </data>
   <data name="保存测试报告为PDF" xml:space="preserve">
     <value>Save the test report as a PDF</value>
   </data>
@@ -2727,9 +3051,42 @@
   <data name="设备信息" xml:space="preserve">
     <value>Device Information</value>
   </data>
+  <data name="线别" xml:space="preserve">
+    <value>Line Type</value>
+  </data>
+  <data name="站别" xml:space="preserve">
+    <value>Station Type</value>
+  </data>
+  <data name="机台号" xml:space="preserve">
+    <value>Machine No</value>
+  </data>
   <data name="分析结果" xml:space="preserve">
     <value>Analysis Results</value>
   </data>
+  <data name="维度指标值" xml:space="preserve">
+    <value>Dimension, Indicator, Value</value>
+  </data>
+  <data name="样本数" xml:space="preserve">
+    <value>Sample Count</value>
+  </data>
+  <data name="已示教点B" xml:space="preserve">
+    <value>Taught point B</value>
+  </data>
+  <data name="已示教点A" xml:space="preserve">
+    <value>Taught point A</value>
+  </data>
+  <data name="获取机器人当前位置失败无法示教点A" xml:space="preserve">
+    <value>Failed to get robot current position, cannot teach point A!</value>
+  </data>
+  <data name="示教点A时出错" xml:space="preserve">
+    <value>Error when teaching point A</value>
+  </data>
+  <data name="相机曝光设置失败" xml:space="preserve">
+    <value>Camera exposure setting failed</value>
+  </data>
+  <data name="相机增益设置失败" xml:space="preserve">
+    <value>Camera gain setting failed</value>
+  </data>
   <data name="卓越" xml:space="preserve">
     <value>Excellence</value>
   </data>
@@ -2748,6 +3105,12 @@
   <data name="视觉静态精度测试报告" xml:space="preserve">
     <value>Vision Static Accuracy Test Report</value>
   </data>
+  <data name="样本数为0无法计算" xml:space="preserve">
+    <value>Sample count is 0, cannot calculate.</value>
+  </data>
+  <data name="保存测试结果为CSV" xml:space="preserve">
+    <value>Save test results as CSV</value>
+  </data>
   <data name="添加光源控制器" xml:space="preserve">
     <value>Add Light Source Controller</value>
   </data>
@@ -2757,9 +3120,8 @@
   <data name="添加螺丝供料器" xml:space="preserve">
     <value>Add Screw Feeder</value>
   </data>
-  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-  <data name="修改相机" type="System.Resources.ResXNullRef, System.Windows.Forms">
-    <value />
+  <data name="修改相机" xml:space="preserve">
+    <value>Modify Camera</value>
   </data>
   <data name="没有找到符合条件的记录" xml:space="preserve">
     <value>No records meeting the criteria were found.</value>
@@ -2794,370 +3156,10 @@
   <data name="是否保存系统参数" xml:space="preserve">
     <value>Save system parameters?</value>
   </data>
-  <data name="通过下相机获取P0" xml:space="preserve">
-    <value>Upper and lower cameras shoot opposite, lower camera acquires P0</value>
-  </data>
-  <data name="螺丝供料器" xml:space="preserve">
-    <value>Screw Feeder</value>
-  </data>
-  <data name="通过移动至下相机拍照位置拍照计算P0" xml:space="preserve">
-    <value>Move to the lower camera shooting position, take a photo to obtain P0, then return to the original position</value>
-  </data>
-  <data name="CameraMount_MobileDownIndependentXYPlatform" xml:space="preserve">
-    <value>Independent XY Moving Camera</value>
-  </data>
-  <data name="视觉静态精度分析" xml:space="preserve">
-    <value>Vision Static Precision Analysis</value>
-  </data>
-  <data name="独立移动相机校准" xml:space="preserve">
-    <value>-Independent Moving Camera Calibration</value>
-  </data>
-  <data name="独立模组X方向移动的距离" xml:space="preserve">
-    <value>Moving distance of independent module in X direction:</value>
-  </data>
-  <data name="移动距离" xml:space="preserve">
-    <value>Moving Distance</value>
-  </data>
-  <data name="相机运动模组编号" xml:space="preserve">
-    <value>Camera Motion Module ID</value>
-  </data>
-  <data name="选择下相机" xml:space="preserve">
-    <value>Select Lower Camera:</value>
-  </data>
-  <data name="获取P0点" xml:space="preserve">
-    <value>Get P0 Point:</value>
-  </data>
-  <data name="放置产品的位置" xml:space="preserve">
-    <value>Product Placement Position:</value>
-  </data>
-  <data name="移动至" xml:space="preserve">
-    <value>Move to</value>
-  </data>
-  <data name="ProcedureSaveImagePathModel_Month_Day_Formula_ProductSN_Time" xml:space="preserve">
-    <value>Year/Month/Day/Recipe Name/Product SN/Product SN + Time</value>
-  </data>
-  <data name="相机2轴控制" xml:space="preserve">
-    <value>Camera 2-Axis Control</value>
-  </data>
-  <data name="相机4轴控制" xml:space="preserve">
-    <value>Camera 4-Axis Control</value>
-  </data>
-  <data name="相机1轴控制" xml:space="preserve">
-    <value>Camera 1-Axis Control</value>
-  </data>
-  <data name="相机3轴控制" xml:space="preserve">
-    <value>Camera 3-Axis Control</value>
-  </data>
-  <data name="动态精度分析" xml:space="preserve">
-    <value>Dynamic Precision Analysis</value>
-  </data>
-  <data name="独立移动相机" xml:space="preserve">
-    <value>Independent Moving Camera</value>
-  </data>
-  <data name="压力组装点位" xml:space="preserve">
-    <value>Pressure Assembly Point</value>
-  </data>
-  <data name="二维码拍照点位" xml:space="preserve">
-    <value>QR Code Photo Point</value>
-  </data>
-  <data name="独立向下相机1取料拍照流程ID" xml:space="preserve">
-    <value>Independent Lower Camera 1 Pick-up Photo Process ID: </value>
-  </data>
-  <data name="独立向下相机2取料拍照流程ID" xml:space="preserve">
-    <value>Independent Lower Camera 2 Pick-up Photo Process ID: </value>
-  </data>
-  <data name="X位置" xml:space="preserve">
-    <value>X Position</value>
-  </data>
-  <data name="X速度" xml:space="preserve">
-    <value>X Speed</value>
-  </data>
-  <data name="Y位置" xml:space="preserve">
-    <value>Y Position</value>
-  </data>
-  <data name="Y速度" xml:space="preserve">
-    <value>Y Speed</value>
-  </data>
-  <data name="Z终点位置接料位置" xml:space="preserve">
-    <value>Z End Position / Material Pickup Position</value>
-  </data>
-  <data name="独立向下相机4取料拍照流程ID" xml:space="preserve">
-    <value>Independent Lower Camera 4 Pick-up Photo Process ID: </value>
-  </data>
-  <data name="独立向下相机1产品拍照流程ID" xml:space="preserve">
-    <value>Independent Lower Camera 1 Product Photo Process ID: </value>
-  </data>
-  <data name="独立向下相机2产品拍照流程ID" xml:space="preserve">
-    <value>Independent Lower Camera 2 Product Photo Process ID: </value>
-  </data>
-  <data name="独立向下相机3产品拍照流程ID" xml:space="preserve">
-    <value>Independent Lower Camera 3 Product Photo Process ID: </value>
-  </data>
-  <data name="独立向下相机4产品拍照流程ID" xml:space="preserve">
-    <value>Independent Lower Camera 4 Product Photo Process ID: </value>
-  </data>
-  <data name="独立向下相机1检测拍照流程ID" xml:space="preserve">
-    <value>Independent Lower Camera 1 Inspection Photo Process ID: </value>
-  </data>
-  <data name="独立向下相机2检测拍照流程ID" xml:space="preserve">
-    <value>Independent Lower Camera 2 Inspection Photo Process ID: </value>
+  <data name="延迟保存图片" xml:space="preserve">
+    <value>Delay saving the image</value>
   </data>
-  <data name="独立向下相机3检测拍照流程ID" xml:space="preserve">
-    <value>Independent Lower Camera 3 Inspection Photo Process ID: </value>
-  </data>
-  <data name="独立向下相机4检测拍照流程ID" xml:space="preserve">
-    <value>Independent Lower Camera 4 Inspection Photo Process ID: </value>
-  </data>
-  <data name="相机扫码拍照流程ID" xml:space="preserve">
-    <value>Camera Scan Code Photo Process ID</value>
-  </data>
-  <data name="选择相机流程" xml:space="preserve">
-    <value>Select Camera Process</value>
-  </data>
-  <data name="选择相机拍照点" xml:space="preserve">
-    <value>Select Camera Photo Point</value>
-  </data>
-  <data name="动态重复精度分析" xml:space="preserve">
-    <value>Dynamic Repeatability Analysis</value>
-  </data>
-  <data name="X方向精度" xml:space="preserve">
-    <value>X Direction Accuracy: </value>
-  </data>
-  <data name="Y方向精度" xml:space="preserve">
-    <value>Y Direction Accuracy: </value>
-  </data>
-  <data name="角度精度" xml:space="preserve">
-    <value>Angle Accuracy: </value>
-  </data>
-  <data name="评级" xml:space="preserve">
-    <value>Rating: </value>
-  </data>
-  <data name="开始" xml:space="preserve">
-    <value>Start:</value>
-  </data>
-  <data name="下相机坐标4" xml:space="preserve">
-    <value>Lower Camera Coordinate 4</value>
-  </data>
-  <data name="抓取运动坐标" xml:space="preserve">
-    <value>Grab Motion Coordinate</value>
-  </data>
-  <data name="放置运动坐标1" xml:space="preserve">
-    <value>Place Motion Coordinate 1</value>
-  </data>
-  <data name="放置运动坐标2" xml:space="preserve">
-    <value>Place Motion Coordinate 2</value>
-  </data>
-  <data name="放置运动坐标3" xml:space="preserve">
-    <value>Place Motion Coordinate 3</value>
-  </data>
-  <data name="放置运动坐标4" xml:space="preserve">
-    <value>Place Motion Coordinate 4</value>
-  </data>
-  <data name="设备名称" xml:space="preserve">
-    <value>Device Name</value>
-  </data>
-  <data name="操作员" xml:space="preserve">
-    <value>Operator</value>
-  </data>
-  <data name="备注" xml:space="preserve">
-    <value>Remarks</value>
-  </data>
-  <data name="上一页" xml:space="preserve">
-    <value>Previous Page</value>
-  </data>
-  <data name="下一页" xml:space="preserve">
-    <value>Next Page</value>
-  </data>
-  <data name="螺丝编号" xml:space="preserve">
-    <value>Screw Number:</value>
-  </data>
-  <data name="电批程序号" xml:space="preserve">
-    <value>Electric Screwdriver Program Number</value>
-  </data>
-  <data name="锁付圈数" xml:space="preserve">
-    <value>Locking Turns</value>
-  </data>
-  <data name="拍照记录查询" xml:space="preserve">
-    <value>Photo Record Inquiry</value>
-  </data>
-  <data name="配方名" xml:space="preserve">
-    <value>Recipe Name</value>
-  </data>
-  <data name="流程名" xml:space="preserve">
-    <value>Process Name</value>
-  </data>
-  <data name="相机名" xml:space="preserve">
-    <value>Camera Name</value>
-  </data>
-  <data name="拍照编号" xml:space="preserve">
-    <value>Photo Number</value>
-  </data>
-  <data name="机器人位置" xml:space="preserve">
-    <value>Robot Position</value>
-  </data>
-  <data name="刷卡器配置" xml:space="preserve">
-    <value>Card Reader Configuration</value>
-  </data>
-  <data name="组装保压配置" xml:space="preserve">
-    <value>Assembly Holding Pressure Configuration</value>
-  </data>
-  <data name="是否开始独立移动相机位置校准" xml:space="preserve">
-    <value>Start independent moving camera position calibration</value>
-  </data>
-  <data name="独立移动相机位置校准失败" xml:space="preserve">
-    <value>Independent moving camera position calibration failed</value>
-  </data>
-  <data name="是否移动机器人至中心点请确认安全" xml:space="preserve">
-    <value>Move the robot to the center point? Please confirm safety?</value>
-  </data>
-  <data name="确认通过下相机开始标定P0点" xml:space="preserve">
-    <value>Confirm to start calibrating P0 point with the lower camera?</value>
-  </data>
-  <data name="移动至移动至标定块放置位置取标定块失败" xml:space="preserve">
-    <value>Move to calibration block placement position, pick calibration block failed!</value>
-  </data>
-  <data name="移动至下相机位置失败" xml:space="preserve">
-    <value>Failed to move to lower camera position!</value>
-  </data>
-  <data name="移动至标定块放置位置放下标定块失败" xml:space="preserve">
-    <value>Move to calibration block placement position, place calibration block failed!</value>
-  </data>
-  <data name="Z轴上升至安全高度失败" xml:space="preserve">
-    <value>Z-axis failed to rise to safe height!</value>
-  </data>
-  <data name="通过下相机标定P0点完成" xml:space="preserve">
-    <value>P0 point calibration with lower camera completed!</value>
-  </data>
-  <data name="确认移动至下相机位置" xml:space="preserve">
-    <value>Confirm moving to lower camera position?</value>
-  </data>
-  <data name="移动至下相机位置成功" xml:space="preserve">
-    <value>Move to lower camera position successful!</value>
-  </data>
-  <data name="确认示教下相机位置" xml:space="preserve">
-    <value>Confirm teaching lower camera position?</value>
-  </data>
-  <data name="示教下相机位置成功" xml:space="preserve">
-    <value>Teaching lower camera position successful!</value>
-  </data>
-  <data name="确认移动至标定块放位置" xml:space="preserve">
-    <value>Confirm moving to calibration block placement position?</value>
-  </data>
-  <data name="移动至标定块放位置成功" xml:space="preserve">
-    <value>Move to calibration block placement position successful!</value>
-  </data>
-  <data name="移动至标定块放位置失败" xml:space="preserve">
-    <value>Move to calibration block placement position failed!</value>
-  </data>
-  <data name="确认示教标定块放位置" xml:space="preserve">
-    <value>Confirm teaching calibration block placement position?</value>
-  </data>
-  <data name="示教标定块放位置成功" xml:space="preserve">
-    <value>Teaching calibration block placement position successful!</value>
-  </data>
-  <data name="无法加载图像" xml:space="preserve">
-    <value>Unable to load image</value>
-  </data>
-  <data name="图像已加载" xml:space="preserve">
-    <value>Image loaded</value>
-  </data>
-  <data name="加载图像失败" xml:space="preserve">
-    <value>Failed to load image</value>
-  </data>
-  <data name="检测成功" xml:space="preserve">
-    <value>Detection successful</value>
-  </data>
-  <data name="检测失败" xml:space="preserve">
-    <value>Detection failed</value>
-  </data>
-  <data name="对比度" xml:space="preserve">
-    <value>Contrast</value>
-  </data>
-  <data name="分析错误" xml:space="preserve">
-    <value>Analysis error</value>
-  </data>
-  <data name="分析报告" xml:space="preserve">
-    <value>Analysis report</value>
-  </data>
-  <data name="报告已导出" xml:space="preserve">
-    <value>Report exported</value>
-  </data>
-  <data name="导出失败" xml:space="preserve">
-    <value>Export failed</value>
-  </data>
-  <data name="关闭通道" xml:space="preserve">
-    <value>Close channel</value>
-  </data>
-  <data name="相机轴下使能失败" xml:space="preserve">
-    <value>Camera axis enable failed!</value>
-  </data>
-  <data name="相机轴上使能失败" xml:space="preserve">
-    <value>Camera axis enable failed!</value>
-  </data>
-  <data name="相机轴点动失败" xml:space="preserve">
-    <value>Camera axis jog failed!</value>
-  </data>
-  <data name="视觉工具组不存在名称为CogToolBlockFeederCalib的ToolBlock" xml:space="preserve">
-    <value>The Visual Tool Group does not have a ToolBlock named: 'CogToolBlock-FeederCalib'</value>
-  </data>
-  <data name="视觉工具运行失败" xml:space="preserve">
-    <value>Visual tool operation failed!</value>
-  </data>
-  <data name="CogToolBlockFeederCalib运行出错error0" xml:space="preserve">
-    <value>CogToolBlock-FeederCalib run error!error:{0}</value>
-  </data>
-  <data name="选择要使用的光源通道" xml:space="preserve">
-    <value>Select the light source channel to use</value>
-  </data>
-  <data name="相机未连接无法示教" xml:space="preserve">
-    <value>Camera not connected, cannot teach!</value>
-  </data>
-  <data name="确定进行连续测试吗" xml:space="preserve">
-    <value>Start continuous test?</value>
-  </data>
-  <data name="无测试数据无法导出报告" xml:space="preserve">
-    <value>No test data, cannot export report.</value>
-  </data>
-  <data name="线别" xml:space="preserve">
-    <value>Line Type</value>
-  </data>
-  <data name="站别" xml:space="preserve">
-    <value>Station Type</value>
-  </data>
-  <data name="机台号" xml:space="preserve">
-    <value>Machine No</value>
-  </data>
-  <data name="维度指标值" xml:space="preserve">
-    <value>Dimension, Indicator, Value</value>
-  </data>
-  <data name="样本数" xml:space="preserve">
-    <value>Sample Count</value>
-  </data>
-  <data name="已示教点B" xml:space="preserve">
-    <value>Taught point B</value>
-  </data>
-  <data name="已示教点A" xml:space="preserve">
-    <value>Taught point A</value>
-  </data>
-  <data name="获取机器人当前位置失败无法示教点A" xml:space="preserve">
-    <value>Failed to get robot current position, cannot teach point A!</value>
-  </data>
-  <data name="示教点A时出错" xml:space="preserve">
-    <value>Error when teaching point A</value>
-  </data>
-  <data name="相机曝光设置失败" xml:space="preserve">
-    <value>Camera exposure setting failed</value>
-  </data>
-  <data name="相机增益设置失败" xml:space="preserve">
-    <value>Camera gain setting failed</value>
-  </data>
-  <data name="样本数为0无法计算" xml:space="preserve">
-    <value>Sample count is 0, cannot calculate.</value>
-  </data>
-  <data name="保存测试结果为CSV" xml:space="preserve">
-    <value>Save test results as CSV</value>
-  </data>
-  <data name="修改相机" xml:space="preserve">
-    <value>Modify Camera</value>
+  <data name="是否延迟保存图片" xml:space="preserve">
+    <value>Do you want to delay saving the picture</value>
   </data>
 </root>

+ 390 - 384
TeamAAS-VM/Resources/Languages/Lang.ja-JP.resx

@@ -1998,6 +1998,9 @@
   <data name="正在初始化光源控制器" xml:space="preserve">
     <value>ライトコントローラーを初期化しています</value>
   </data>
+  <data name="通过下相机获取P0" xml:space="preserve">
+    <value>上下カメラ対向撮影、下カメラで P0 を取得</value>
+  </data>
   <data name="选择下相机视觉流程" xml:space="preserve">
     <value>次のカメラビジョンプロセスを選択してください</value>
   </data>
@@ -2016,6 +2019,45 @@
   <data name="请选择要启用的光源通道" xml:space="preserve">
     <value>有効にするライトチャンネルを選択してください</value>
   </data>
+  <data name="螺丝供料器" xml:space="preserve">
+    <value>ネジ供給機</value>
+  </data>
+  <data name="通过移动至下相机拍照位置拍照计算P0" xml:space="preserve">
+    <value>下カメラ撮影位置まで移動して撮影し P0 を取得し、その後元の位置に戻す</value>
+  </data>
+  <data name="CameraMount_MobileDownIndependentXYPlatform" xml:space="preserve">
+    <value>独立 XY 移動カメラ</value>
+  </data>
+  <data name="视觉静态精度分析" xml:space="preserve">
+    <value>視覚静的精度解析</value>
+  </data>
+  <data name="ProcedureSaveImagePathModel_Month_Day_Formula_ProductSN_Time" xml:space="preserve">
+    <value>年月 / 日 / レシピ名 / 製品 SN / 製品 SN + 時間</value>
+  </data>
+  <data name="独立移动相机校准" xml:space="preserve">
+    <value>- 独立移動カメラキャリブレーション</value>
+  </data>
+  <data name="独立模组X方向移动的距离" xml:space="preserve">
+    <value>独立モジュール X 方向移動距離:</value>
+  </data>
+  <data name="移动距离" xml:space="preserve">
+    <value>移動距離</value>
+  </data>
+  <data name="相机运动模组编号" xml:space="preserve">
+    <value>カメラ駆動モジュール番号</value>
+  </data>
+  <data name="选择下相机" xml:space="preserve">
+    <value>下カメラを選択:</value>
+  </data>
+  <data name="获取P0点" xml:space="preserve">
+    <value>P0 点を取得:</value>
+  </data>
+  <data name="放置产品的位置" xml:space="preserve">
+    <value>製品を載置する位置:</value>
+  </data>
+  <data name="移动至" xml:space="preserve">
+    <value>移動先</value>
+  </data>
   <data name="下相机拍照的位置" xml:space="preserve">
     <value>下カメラ撮影位置:</value>
   </data>
@@ -2109,6 +2151,18 @@
   <data name="关闭" xml:space="preserve">
     <value>オフ</value>
   </data>
+  <data name="相机2轴控制" xml:space="preserve">
+    <value>カメラ 2 軸制御</value>
+  </data>
+  <data name="相机4轴控制" xml:space="preserve">
+    <value>カメラ 4 軸制御</value>
+  </data>
+  <data name="相机1轴控制" xml:space="preserve">
+    <value>カメラ 1 軸制御</value>
+  </data>
+  <data name="相机3轴控制" xml:space="preserve">
+    <value>カメラ 3 軸制御</value>
+  </data>
   <data name="校准前X" xml:space="preserve">
     <value>キャリブレーション前 X</value>
   </data>
@@ -2127,6 +2181,9 @@
   <data name="Y补偿" xml:space="preserve">
     <value>Y 補償</value>
   </data>
+  <data name="动态精度分析" xml:space="preserve">
+    <value>動的精度解析</value>
+  </data>
   <data name="取料拍照点位" xml:space="preserve">
     <value>ピッキング撮影ポジション</value>
   </data>
@@ -2145,9 +2202,18 @@
   <data name="复检点位" xml:space="preserve">
     <value>再検査ポイント</value>
   </data>
+  <data name="独立移动相机" xml:space="preserve">
+    <value>独立移動カメラ</value>
+  </data>
   <data name="撕膜点位" xml:space="preserve">
     <value>フィルム剥がしポイント</value>
   </data>
+  <data name="压力组装点位" xml:space="preserve">
+    <value>圧力組立ポイント</value>
+  </data>
+  <data name="二维码拍照点位" xml:space="preserve">
+    <value>QR コード撮影ポイント</value>
+  </data>
   <data name="添加点" xml:space="preserve">
     <value>ポイント追加</value>
   </data>
@@ -2181,12 +2247,27 @@
   <data name="执行产品拍照" xml:space="preserve">
     <value>製品撮影を実行</value>
   </data>
+  <data name="X位置" xml:space="preserve">
+    <value>X 位置</value>
+  </data>
+  <data name="X速度" xml:space="preserve">
+    <value>X 速度</value>
+  </data>
+  <data name="Y位置" xml:space="preserve">
+    <value>Y 位置</value>
+  </data>
+  <data name="Y速度" xml:space="preserve">
+    <value>Y 速度</value>
+  </data>
   <data name="Z起点位置" xml:space="preserve">
     <value>Z 開始位置</value>
   </data>
   <data name="Z起点速度" xml:space="preserve">
     <value>Z 開始速度</value>
   </data>
+  <data name="Z终点位置接料位置" xml:space="preserve">
+    <value>Z 終点位置 / 材料受取位置</value>
+  </data>
   <data name="Z终点速度" xml:space="preserve">
     <value>Z 終端速度</value>
   </data>
@@ -2214,9 +2295,48 @@
   <data name="固定向上相机2视觉流程ID" xml:space="preserve">
     <value>固定アップカメラ 2 ビジョンプロセス ID:</value>
   </data>
+  <data name="独立向下相机1取料拍照流程ID" xml:space="preserve">
+    <value>独立下方カメラ 1 ピッキング撮影フロー ID: </value>
+  </data>
+  <data name="独立向下相机2取料拍照流程ID" xml:space="preserve">
+    <value>独立下方カメラ 2 ピッキング撮影フロー ID: </value>
+  </data>
+  <data name="独立向下相机4取料拍照流程ID" xml:space="preserve">
+    <value>独立下方カメラ 4 ピッキング撮影フロー ID: </value>
+  </data>
+  <data name="独立向下相机1产品拍照流程ID" xml:space="preserve">
+    <value>独立下方カメラ 1 製品撮影フロー ID: </value>
+  </data>
+  <data name="独立向下相机2产品拍照流程ID" xml:space="preserve">
+    <value>独立下方カメラ 2 製品撮影フロー ID: </value>
+  </data>
+  <data name="独立向下相机3产品拍照流程ID" xml:space="preserve">
+    <value>独立下方カメラ 3 製品撮影フロー ID: </value>
+  </data>
+  <data name="独立向下相机4产品拍照流程ID" xml:space="preserve">
+    <value>独立下方カメラ 4 製品撮影フロー ID: </value>
+  </data>
+  <data name="独立向下相机1检测拍照流程ID" xml:space="preserve">
+    <value>独立下方カメラ 1 検査撮影フロー ID: </value>
+  </data>
+  <data name="独立向下相机2检测拍照流程ID" xml:space="preserve">
+    <value>独立下方カメラ 2 検査撮影フロー ID: </value>
+  </data>
+  <data name="独立向下相机3检测拍照流程ID" xml:space="preserve">
+    <value>独立下方カメラ 3 検査撮影フロー ID: </value>
+  </data>
+  <data name="独立向下相机4检测拍照流程ID" xml:space="preserve">
+    <value>独立下方カメラ 4 検査撮影フロー ID: </value>
+  </data>
+  <data name="相机扫码拍照流程ID" xml:space="preserve">
+    <value>カメラ QR コード読取撮影フロー ID</value>
+  </data>
   <data name="Feeder取料测试" xml:space="preserve">
     <value>フィーダー部品取出し試験</value>
   </data>
+  <data name="选择相机流程" xml:space="preserve">
+    <value>カメラ選択フロー</value>
+  </data>
   <data name="选择避让点" xml:space="preserve">
     <value>回避点選択</value>
   </data>
@@ -2226,6 +2346,9 @@
   <data name="二次定位相机测试" xml:space="preserve">
     <value>二次位置決めカメラ試験</value>
   </data>
+  <data name="选择相机拍照点" xml:space="preserve">
+    <value>カメラ撮影ポイント選択</value>
+  </data>
   <data name="创建Tool" xml:space="preserve">
     <value>ツールを作成</value>
   </data>
@@ -2346,6 +2469,21 @@
   <data name="清空数据" xml:space="preserve">
     <value>データクリア</value>
   </data>
+  <data name="动态重复精度分析" xml:space="preserve">
+    <value>動的繰返し精度解析</value>
+  </data>
+  <data name="X方向精度" xml:space="preserve">
+    <value>X 方向精度: </value>
+  </data>
+  <data name="Y方向精度" xml:space="preserve">
+    <value>Y 方向精度: </value>
+  </data>
+  <data name="角度精度" xml:space="preserve">
+    <value>角度精度: </value>
+  </data>
+  <data name="评级" xml:space="preserve">
+    <value>評価: </value>
+  </data>
   <data name="优秀" xml:space="preserve">
     <value>優秀</value>
   </data>
@@ -2382,6 +2520,9 @@
   <data name="组装记录查询" xml:space="preserve">
     <value>組立記録照会</value>
   </data>
+  <data name="开始" xml:space="preserve">
+    <value>開始:</value>
+  </data>
   <data name="结束" xml:space="preserve">
     <value>終了:</value>
   </data>
@@ -2418,9 +2559,69 @@
   <data name="下相机坐标3" xml:space="preserve">
     <value>下カメラ座標 3</value>
   </data>
+  <data name="下相机坐标4" xml:space="preserve">
+    <value>下部カメラ座標 4</value>
+  </data>
+  <data name="抓取运动坐标" xml:space="preserve">
+    <value>抓取運動座標</value>
+  </data>
+  <data name="放置运动坐标1" xml:space="preserve">
+    <value>載置運動座標 1</value>
+  </data>
+  <data name="放置运动坐标2" xml:space="preserve">
+    <value>載置運動座標 2</value>
+  </data>
+  <data name="放置运动坐标3" xml:space="preserve">
+    <value>載置運動座標 3</value>
+  </data>
+  <data name="放置运动坐标4" xml:space="preserve">
+    <value>載置運動座標 4</value>
+  </data>
+  <data name="设备名称" xml:space="preserve">
+    <value>装置名</value>
+  </data>
+  <data name="操作员" xml:space="preserve">
+    <value>オペレーター</value>
+  </data>
+  <data name="备注" xml:space="preserve">
+    <value>備考</value>
+  </data>
+  <data name="上一页" xml:space="preserve">
+    <value>前のページ</value>
+  </data>
+  <data name="下一页" xml:space="preserve">
+    <value>次のページ</value>
+  </data>
+  <data name="螺丝编号" xml:space="preserve">
+    <value>ネジ番号:</value>
+  </data>
+  <data name="电批程序号" xml:space="preserve">
+    <value>電動ドライバープログラム番号</value>
+  </data>
+  <data name="锁付圈数" xml:space="preserve">
+    <value>締め付け回数</value>
+  </data>
+  <data name="拍照记录查询" xml:space="preserve">
+    <value>撮影記録照会</value>
+  </data>
   <data name="产品SN" xml:space="preserve">
     <value>製品 SN</value>
   </data>
+  <data name="配方名" xml:space="preserve">
+    <value>レシピ名</value>
+  </data>
+  <data name="流程名" xml:space="preserve">
+    <value>プロセス名</value>
+  </data>
+  <data name="相机名" xml:space="preserve">
+    <value>カメラ名</value>
+  </data>
+  <data name="拍照编号" xml:space="preserve">
+    <value>撮影番号</value>
+  </data>
+  <data name="机器人位置" xml:space="preserve">
+    <value>ロボット位置</value>
+  </data>
   <data name="像素坐标" xml:space="preserve">
     <value>ピクセル座標</value>
   </data>
@@ -2571,6 +2772,12 @@
   <data name="保存系统参数" xml:space="preserve">
     <value>システムパラメータ保存</value>
   </data>
+  <data name="刷卡器配置" xml:space="preserve">
+    <value>カードリーダー設定</value>
+  </data>
+  <data name="组装保压配置" xml:space="preserve">
+    <value>組立保圧設定</value>
+  </data>
   <data name="保压时间" xml:space="preserve">
     <value>保圧時間:</value>
   </data>
@@ -2583,6 +2790,12 @@
   <data name="后保压配置" xml:space="preserve">
     <value>後保圧設定</value>
   </data>
+  <data name="是否开始独立移动相机位置校准" xml:space="preserve">
+    <value>独立移動カメラ位置キャリブレーションを開始しますか</value>
+  </data>
+  <data name="独立移动相机位置校准失败" xml:space="preserve">
+    <value>独立移動カメラ位置キャリブレーション失敗</value>
+  </data>
   <data name="相机校准失败" xml:space="preserve">
     <value>カメラキャリブレーションに失敗しました</value>
   </data>
@@ -2595,41 +2808,119 @@
   <data name="移动机器人" xml:space="preserve">
     <value>ロボットを移動</value>
   </data>
+  <data name="是否移动机器人至中心点请确认安全" xml:space="preserve">
+    <value>ロボットを中心点へ移動しますか?安全を確認してください?</value>
+  </data>
   <data name="请先选择相机" xml:space="preserve">
     <value>カメラを先に選択してください!</value>
   </data>
   <data name="请先选择标定" xml:space="preserve">
     <value>キャリブレーションを先に選択してください!</value>
   </data>
-  <data name="未找到P0点请调整工件位置后重试" xml:space="preserve">
-    <value>P0 点が見つかりませんでした。ワークの位置を調整して再試行してください!</value>
+  <data name="确认通过下相机开始标定P0点" xml:space="preserve">
+    <value>下カメラで P0 点のキャリブレーションを開始しますか?</value>
   </data>
-  <data name="就绪" xml:space="preserve">
-    <value>準備完了</value>
+  <data name="移动至移动至标定块放置位置取标定块失败" xml:space="preserve">
+    <value>校正ブロック設置位置へ移動、校正ブロック取得失敗!</value>
   </data>
-  <data name="正在检测棋盘格" xml:space="preserve">
-    <value>チェッカーボードを検出中...</value>
+  <data name="移动至下相机位置失败" xml:space="preserve">
+    <value>下カメラ位置への移動に失敗しました!</value>
   </data>
-  <data name="未检测到棋盘格" xml:space="preserve">
-    <value>チェッカーボードが検出されませんでした</value>
+  <data name="未找到P0点请调整工件位置后重试" xml:space="preserve">
+    <value>P0 点が見つかりませんでした。ワークの位置を調整して再試行してください!</value>
   </data>
-  <data name="分析中" xml:space="preserve">
-    <value>分析中...</value>
+  <data name="移动至标定块放置位置放下标定块失败" xml:space="preserve">
+    <value>校正ブロック設置位置へ移動、校正ブロック載置失敗!</value>
   </data>
-  <data name="分析完成" xml:space="preserve">
-    <value>分析が完了しました</value>
+  <data name="Z轴上升至安全高度失败" xml:space="preserve">
+    <value>Z 軸を安全高さまで上昇失敗!</value>
   </data>
-  <data name="已停止" xml:space="preserve">
-    <value>停止済み</value>
+  <data name="通过下相机标定P0点完成" xml:space="preserve">
+    <value>下カメラによる P0 点キャリブレーション完了!</value>
   </data>
-  <data name="已重置" xml:space="preserve">
-    <value>リセット済み</value>
+  <data name="确认移动至下相机位置" xml:space="preserve">
+    <value>下カメラ位置へ移動しますか?</value>
   </data>
-  <data name="ROI已清除" xml:space="preserve">
-    <value>ROI をクリアしました</value>
+  <data name="移动至下相机位置成功" xml:space="preserve">
+    <value>下カメラ位置への移動成功!</value>
   </data>
-  <data name="清晰度趋势" xml:space="preserve">
-    <value>鮮明度の傾向</value>
+  <data name="确认示教下相机位置" xml:space="preserve">
+    <value>下カメラ位置を示教しますか?</value>
+  </data>
+  <data name="示教下相机位置成功" xml:space="preserve">
+    <value>下カメラ位置の示教成功!</value>
+  </data>
+  <data name="确认移动至标定块放位置" xml:space="preserve">
+    <value>校正ブロック設置位置へ移動しますか?</value>
+  </data>
+  <data name="移动至标定块放位置成功" xml:space="preserve">
+    <value>校正ブロック設置位置への移動成功!</value>
+  </data>
+  <data name="移动至标定块放位置失败" xml:space="preserve">
+    <value>校正ブロック設置位置への移動失敗!</value>
+  </data>
+  <data name="确认示教标定块放位置" xml:space="preserve">
+    <value>校正ブロック設置位置を示教しますか?</value>
+  </data>
+  <data name="示教标定块放位置成功" xml:space="preserve">
+    <value>校正ブロック設置位置の示教成功!</value>
+  </data>
+  <data name="就绪" xml:space="preserve">
+    <value>準備完了</value>
+  </data>
+  <data name="无法加载图像" xml:space="preserve">
+    <value>画像を読み込めません</value>
+  </data>
+  <data name="图像已加载" xml:space="preserve">
+    <value>画像を読み込みました</value>
+  </data>
+  <data name="加载图像失败" xml:space="preserve">
+    <value>画像の読み込みに失敗しました</value>
+  </data>
+  <data name="正在检测棋盘格" xml:space="preserve">
+    <value>チェッカーボードを検出中...</value>
+  </data>
+  <data name="检测成功" xml:space="preserve">
+    <value>検出成功</value>
+  </data>
+  <data name="未检测到棋盘格" xml:space="preserve">
+    <value>チェッカーボードが検出されませんでした</value>
+  </data>
+  <data name="检测失败" xml:space="preserve">
+    <value>検出失敗</value>
+  </data>
+  <data name="分析中" xml:space="preserve">
+    <value>分析中...</value>
+  </data>
+  <data name="分析完成" xml:space="preserve">
+    <value>分析が完了しました</value>
+  </data>
+  <data name="已停止" xml:space="preserve">
+    <value>停止済み</value>
+  </data>
+  <data name="对比度" xml:space="preserve">
+    <value>コントラスト</value>
+  </data>
+  <data name="分析错误" xml:space="preserve">
+    <value>分析エラー</value>
+  </data>
+  <data name="已重置" xml:space="preserve">
+    <value>リセット済み</value>
+  </data>
+  <data name="分析报告" xml:space="preserve">
+    <value>分析レポート</value>
+  </data>
+  <data name="报告已导出" xml:space="preserve">
+    <value>レポートをエクスポートしました</value>
+  </data>
+  <data name="导出失败" xml:space="preserve">
+    <value>エクスポート失敗</value>
+  </data>
+  <data name="ROI已清除" xml:space="preserve">
+    <value>ROI をクリアしました</value>
+  </data>
+  <data name="清晰度趋势" xml:space="preserve">
+    <value>鮮明度の傾向</value>
   </data>
   <data name="帧数" xml:space="preserve">
     <value>フレームレート</value>
@@ -2646,6 +2937,9 @@
   <data name="打开异常" xml:space="preserve">
     <value>開く異常が発生しました</value>
   </data>
+  <data name="关闭通道" xml:space="preserve">
+    <value>チャンネルを閉じる</value>
+  </data>
   <data name="关闭异常" xml:space="preserve">
     <value>閉じる異常が発生しました</value>
   </data>
@@ -2655,6 +2949,15 @@
   <data name="确认要点动距离0mm吗" xml:space="preserve">
     <value>ジョグ距離 {0} mm を確認しますか</value>
   </data>
+  <data name="相机轴下使能失败" xml:space="preserve">
+    <value>カメラ軸の出力許可に失敗しました!</value>
+  </data>
+  <data name="相机轴上使能失败" xml:space="preserve">
+    <value>カメラ軸の出力許可に失敗しました!</value>
+  </data>
+  <data name="相机轴点动失败" xml:space="preserve">
+    <value>カメラ軸のジョグ動作に失敗しました!</value>
+  </data>
   <data name="持续时长ms" xml:space="preserve">
     <value>持続時間 (ms)</value>
   </data>
@@ -2691,12 +2994,24 @@
   <data name="继续调频" xml:space="preserve">
     <value>周波数調整を続ける</value>
   </data>
+  <data name="视觉工具组不存在名称为CogToolBlockFeederCalib的ToolBlock" xml:space="preserve">
+    <value>ビジュアルツールグループには、'CogToolBlock-FeederCalib' という名前の ToolBlock が存在しません</value>
+  </data>
+  <data name="视觉工具运行失败" xml:space="preserve">
+    <value>ビジュアルツールの実行に失敗しました!</value>
+  </data>
+  <data name="CogToolBlockFeederCalib运行出错error0" xml:space="preserve">
+    <value>CogToolBlock-FeederCalib 実行エラー!error:{0}</value>
+  </data>
   <data name="视觉运行中" xml:space="preserve">
     <value>ビジョン実行中...</value>
   </data>
   <data name="添加机器人" xml:space="preserve">
     <value>ロボットを追加</value>
   </data>
+  <data name="选择要使用的光源通道" xml:space="preserve">
+    <value>使用する光源チャンネルを選択してください</value>
+  </data>
   <data name="测试进行中" xml:space="preserve">
     <value>テスト実行中...</value>
   </data>
@@ -2706,6 +3021,9 @@
   <data name="机器人未连接无法示教" xml:space="preserve">
     <value>ロボットが接続されていないため、ティーチングできません!</value>
   </data>
+  <data name="相机未连接无法示教" xml:space="preserve">
+    <value>カメラが接続されていないため、ティーチングできません!</value>
+  </data>
   <data name="测试已取消" xml:space="preserve">
     <value>テストをキャンセルしました!</value>
   </data>
@@ -2718,6 +3036,12 @@
   <data name="测试完成" xml:space="preserve">
     <value>テスト完了!</value>
   </data>
+  <data name="确定进行连续测试吗" xml:space="preserve">
+    <value>連続テストを実行してもよろしいですか?</value>
+  </data>
+  <data name="无测试数据无法导出报告" xml:space="preserve">
+    <value>テストデータがないため、レポートをエクスポートできません。</value>
+  </data>
   <data name="保存测试报告为PDF" xml:space="preserve">
     <value>試験レポートを PDF 形式で保存する</value>
   </data>
@@ -2727,9 +3051,42 @@
   <data name="设备信息" xml:space="preserve">
     <value>装置情報</value>
   </data>
+  <data name="线别" xml:space="preserve">
+    <value>ライン区分</value>
+  </data>
+  <data name="站别" xml:space="preserve">
+    <value>工程区分</value>
+  </data>
+  <data name="机台号" xml:space="preserve">
+    <value>機台番号</value>
+  </data>
   <data name="分析结果" xml:space="preserve">
     <value>分析結果</value>
   </data>
+  <data name="维度指标值" xml:space="preserve">
+    <value>次元、指標、値</value>
+  </data>
+  <data name="样本数" xml:space="preserve">
+    <value>サンプル数</value>
+  </data>
+  <data name="已示教点B" xml:space="preserve">
+    <value>ティーチングポイント B 完了</value>
+  </data>
+  <data name="已示教点A" xml:space="preserve">
+    <value>ティーチングポイント A 完了</value>
+  </data>
+  <data name="获取机器人当前位置失败无法示教点A" xml:space="preserve">
+    <value>ロボット現在位置の取得に失敗したため、ティーチングポイント A を実行できません!</value>
+  </data>
+  <data name="示教点A时出错" xml:space="preserve">
+    <value>ティーチングポイント A 実行エラー</value>
+  </data>
+  <data name="相机曝光设置失败" xml:space="preserve">
+    <value>カメラ露光設定に失敗しました</value>
+  </data>
+  <data name="相机增益设置失败" xml:space="preserve">
+    <value>カメラゲイン設定に失敗しました</value>
+  </data>
   <data name="卓越" xml:space="preserve">
     <value>すえつ</value>
   </data>
@@ -2748,6 +3105,12 @@
   <data name="视觉静态精度测试报告" xml:space="preserve">
     <value>視覚静的精度試験レポート</value>
   </data>
+  <data name="样本数为0无法计算" xml:space="preserve">
+    <value>サンプル数が 0 のため、計算できません。</value>
+  </data>
+  <data name="保存测试结果为CSV" xml:space="preserve">
+    <value>テスト結果を CSV ファイルとして保存する</value>
+  </data>
   <data name="添加光源控制器" xml:space="preserve">
     <value>光源コントローラーを追加</value>
   </data>
@@ -2757,6 +3120,9 @@
   <data name="添加螺丝供料器" xml:space="preserve">
     <value>ネジフィーダーを追加</value>
   </data>
+  <data name="修改相机" xml:space="preserve">
+    <value>カメラ変更</value>
+  </data>
   <data name="没有找到符合条件的记录" xml:space="preserve">
     <value>条件に一致するレコードが見つかりません。</value>
   </data>
@@ -2790,370 +3156,10 @@
   <data name="是否保存系统参数" xml:space="preserve">
     <value>システムパラメータを保存しますか?</value>
   </data>
-  <data name="通过下相机获取P0" xml:space="preserve">
-    <value>上下カメラ対向撮影、下カメラで P0 を取得</value>
-  </data>
-  <data name="螺丝供料器" xml:space="preserve">
-    <value>ネジ供給機</value>
-  </data>
-  <data name="通过移动至下相机拍照位置拍照计算P0" xml:space="preserve">
-    <value>下カメラ撮影位置まで移動して撮影し P0 を取得し、その後元の位置に戻す</value>
-  </data>
-  <data name="CameraMount_MobileDownIndependentXYPlatform" xml:space="preserve">
-    <value>独立 XY 移動カメラ</value>
-  </data>
-  <data name="视觉静态精度分析" xml:space="preserve">
-    <value>視覚静的精度解析</value>
-  </data>
-  <data name="独立移动相机校准" xml:space="preserve">
-    <value>- 独立移動カメラキャリブレーション</value>
-  </data>
-  <data name="独立模组X方向移动的距离" xml:space="preserve">
-    <value>独立モジュール X 方向移動距離:</value>
-  </data>
-  <data name="移动距离" xml:space="preserve">
-    <value>移動距離</value>
-  </data>
-  <data name="相机运动模组编号" xml:space="preserve">
-    <value>カメラ駆動モジュール番号</value>
-  </data>
-  <data name="选择下相机" xml:space="preserve">
-    <value>下カメラを選択:</value>
-  </data>
-  <data name="获取P0点" xml:space="preserve">
-    <value>P0 点を取得:</value>
-  </data>
-  <data name="放置产品的位置" xml:space="preserve">
-    <value>製品を載置する位置:</value>
-  </data>
-  <data name="移动至" xml:space="preserve">
-    <value>移動先</value>
-  </data>
-  <data name="ProcedureSaveImagePathModel_Month_Day_Formula_ProductSN_Time" xml:space="preserve">
-    <value>年月 / 日 / レシピ名 / 製品 SN / 製品 SN + 時間</value>
-  </data>
-  <data name="相机2轴控制" xml:space="preserve">
-    <value>カメラ 2 軸制御</value>
-  </data>
-  <data name="相机4轴控制" xml:space="preserve">
-    <value>カメラ 4 軸制御</value>
-  </data>
-  <data name="相机1轴控制" xml:space="preserve">
-    <value>カメラ 1 軸制御</value>
-  </data>
-  <data name="相机3轴控制" xml:space="preserve">
-    <value>カメラ 3 軸制御</value>
-  </data>
-  <data name="动态精度分析" xml:space="preserve">
-    <value>動的精度解析</value>
-  </data>
-  <data name="独立移动相机" xml:space="preserve">
-    <value>独立移動カメラ</value>
-  </data>
-  <data name="压力组装点位" xml:space="preserve">
-    <value>圧力組立ポイント</value>
-  </data>
-  <data name="二维码拍照点位" xml:space="preserve">
-    <value>QR コード撮影ポイント</value>
-  </data>
-  <data name="独立向下相机1取料拍照流程ID" xml:space="preserve">
-    <value>独立下方カメラ 1 ピッキング撮影フロー ID: </value>
-  </data>
-  <data name="独立向下相机2取料拍照流程ID" xml:space="preserve">
-    <value>独立下方カメラ 2 ピッキング撮影フロー ID: </value>
-  </data>
-  <data name="X位置" xml:space="preserve">
-    <value>X 位置</value>
+  <data name="延迟保存图片" xml:space="preserve">
+    <value>画像の保存を遅延</value>
   </data>
-  <data name="X速度" xml:space="preserve">
-    <value>X 速度</value>
-  </data>
-  <data name="Y位置" xml:space="preserve">
-    <value>Y 位置</value>
-  </data>
-  <data name="Y速度" xml:space="preserve">
-    <value>Y 速度</value>
-  </data>
-  <data name="Z终点位置接料位置" xml:space="preserve">
-    <value>Z 終点位置 / 材料受取位置</value>
-  </data>
-  <data name="独立向下相机4取料拍照流程ID" xml:space="preserve">
-    <value>独立下方カメラ 4 ピッキング撮影フロー ID: </value>
-  </data>
-  <data name="独立向下相机1产品拍照流程ID" xml:space="preserve">
-    <value>独立下方カメラ 1 製品撮影フロー ID: </value>
-  </data>
-  <data name="独立向下相机2产品拍照流程ID" xml:space="preserve">
-    <value>独立下方カメラ 2 製品撮影フロー ID: </value>
-  </data>
-  <data name="独立向下相机3产品拍照流程ID" xml:space="preserve">
-    <value>独立下方カメラ 3 製品撮影フロー ID: </value>
-  </data>
-  <data name="独立向下相机4产品拍照流程ID" xml:space="preserve">
-    <value>独立下方カメラ 4 製品撮影フロー ID: </value>
-  </data>
-  <data name="独立向下相机1检测拍照流程ID" xml:space="preserve">
-    <value>独立下方カメラ 1 検査撮影フロー ID: </value>
-  </data>
-  <data name="独立向下相机2检测拍照流程ID" xml:space="preserve">
-    <value>独立下方カメラ 2 検査撮影フロー ID: </value>
-  </data>
-  <data name="独立向下相机3检测拍照流程ID" xml:space="preserve">
-    <value>独立下方カメラ 3 検査撮影フロー ID: </value>
-  </data>
-  <data name="独立向下相机4检测拍照流程ID" xml:space="preserve">
-    <value>独立下方カメラ 4 検査撮影フロー ID: </value>
-  </data>
-  <data name="相机扫码拍照流程ID" xml:space="preserve">
-    <value>カメラ QR コード読取撮影フロー ID</value>
-  </data>
-  <data name="选择相机流程" xml:space="preserve">
-    <value>カメラ選択フロー</value>
-  </data>
-  <data name="选择相机拍照点" xml:space="preserve">
-    <value>カメラ撮影ポイント選択</value>
-  </data>
-  <data name="动态重复精度分析" xml:space="preserve">
-    <value>動的繰返し精度解析</value>
-  </data>
-  <data name="X方向精度" xml:space="preserve">
-    <value>X 方向精度: </value>
-  </data>
-  <data name="Y方向精度" xml:space="preserve">
-    <value>Y 方向精度: </value>
-  </data>
-  <data name="角度精度" xml:space="preserve">
-    <value>角度精度: </value>
-  </data>
-  <data name="评级" xml:space="preserve">
-    <value>評価: </value>
-  </data>
-  <data name="开始" xml:space="preserve">
-    <value>開始:</value>
-  </data>
-  <data name="下相机坐标4" xml:space="preserve">
-    <value>下部カメラ座標 4</value>
-  </data>
-  <data name="抓取运动坐标" xml:space="preserve">
-    <value>抓取運動座標</value>
-  </data>
-  <data name="放置运动坐标1" xml:space="preserve">
-    <value>載置運動座標 1</value>
-  </data>
-  <data name="放置运动坐标2" xml:space="preserve">
-    <value>載置運動座標 2</value>
-  </data>
-  <data name="放置运动坐标3" xml:space="preserve">
-    <value>載置運動座標 3</value>
-  </data>
-  <data name="放置运动坐标4" xml:space="preserve">
-    <value>載置運動座標 4</value>
-  </data>
-  <data name="设备名称" xml:space="preserve">
-    <value>装置名</value>
-  </data>
-  <data name="操作员" xml:space="preserve">
-    <value>オペレーター</value>
-  </data>
-  <data name="备注" xml:space="preserve">
-    <value>備考</value>
-  </data>
-  <data name="上一页" xml:space="preserve">
-    <value>前のページ</value>
-  </data>
-  <data name="下一页" xml:space="preserve">
-    <value>次のページ</value>
-  </data>
-  <data name="螺丝编号" xml:space="preserve">
-    <value>ネジ番号:</value>
-  </data>
-  <data name="电批程序号" xml:space="preserve">
-    <value>電動ドライバープログラム番号</value>
-  </data>
-  <data name="锁付圈数" xml:space="preserve">
-    <value>締め付け回数</value>
-  </data>
-  <data name="拍照记录查询" xml:space="preserve">
-    <value>撮影記録照会</value>
-  </data>
-  <data name="配方名" xml:space="preserve">
-    <value>レシピ名</value>
-  </data>
-  <data name="流程名" xml:space="preserve">
-    <value>プロセス名</value>
-  </data>
-  <data name="相机名" xml:space="preserve">
-    <value>カメラ名</value>
-  </data>
-  <data name="拍照编号" xml:space="preserve">
-    <value>撮影番号</value>
-  </data>
-  <data name="机器人位置" xml:space="preserve">
-    <value>ロボット位置</value>
-  </data>
-  <data name="刷卡器配置" xml:space="preserve">
-    <value>カードリーダー設定</value>
-  </data>
-  <data name="组装保压配置" xml:space="preserve">
-    <value>組立保圧設定</value>
-  </data>
-  <data name="是否开始独立移动相机位置校准" xml:space="preserve">
-    <value>独立移動カメラ位置キャリブレーションを開始しますか</value>
-  </data>
-  <data name="独立移动相机位置校准失败" xml:space="preserve">
-    <value>独立移動カメラ位置キャリブレーション失敗</value>
-  </data>
-  <data name="是否移动机器人至中心点请确认安全" xml:space="preserve">
-    <value>ロボットを中心点へ移動しますか?安全を確認してください?</value>
-  </data>
-  <data name="确认通过下相机开始标定P0点" xml:space="preserve">
-    <value>下カメラで P0 点のキャリブレーションを開始しますか?</value>
-  </data>
-  <data name="移动至移动至标定块放置位置取标定块失败" xml:space="preserve">
-    <value>校正ブロック設置位置へ移動、校正ブロック取得失敗!</value>
-  </data>
-  <data name="移动至下相机位置失败" xml:space="preserve">
-    <value>下カメラ位置への移動に失敗しました!</value>
-  </data>
-  <data name="移动至标定块放置位置放下标定块失败" xml:space="preserve">
-    <value>校正ブロック設置位置へ移動、校正ブロック載置失敗!</value>
-  </data>
-  <data name="Z轴上升至安全高度失败" xml:space="preserve">
-    <value>Z 軸を安全高さまで上昇失敗!</value>
-  </data>
-  <data name="通过下相机标定P0点完成" xml:space="preserve">
-    <value>下カメラによる P0 点キャリブレーション完了!</value>
-  </data>
-  <data name="确认移动至下相机位置" xml:space="preserve">
-    <value>下カメラ位置へ移動しますか?</value>
-  </data>
-  <data name="移动至下相机位置成功" xml:space="preserve">
-    <value>下カメラ位置への移動成功!</value>
-  </data>
-  <data name="确认示教下相机位置" xml:space="preserve">
-    <value>下カメラ位置を示教しますか?</value>
-  </data>
-  <data name="示教下相机位置成功" xml:space="preserve">
-    <value>下カメラ位置の示教成功!</value>
-  </data>
-  <data name="确认移动至标定块放位置" xml:space="preserve">
-    <value>校正ブロック設置位置へ移動しますか?</value>
-  </data>
-  <data name="移动至标定块放位置成功" xml:space="preserve">
-    <value>校正ブロック設置位置への移動成功!</value>
-  </data>
-  <data name="移动至标定块放位置失败" xml:space="preserve">
-    <value>校正ブロック設置位置への移動失敗!</value>
-  </data>
-  <data name="确认示教标定块放位置" xml:space="preserve">
-    <value>校正ブロック設置位置を示教しますか?</value>
-  </data>
-  <data name="示教标定块放位置成功" xml:space="preserve">
-    <value>校正ブロック設置位置の示教成功!</value>
-  </data>
-  <data name="无法加载图像" xml:space="preserve">
-    <value>画像を読み込めません</value>
-  </data>
-  <data name="图像已加载" xml:space="preserve">
-    <value>画像を読み込みました</value>
-  </data>
-  <data name="加载图像失败" xml:space="preserve">
-    <value>画像の読み込みに失敗しました</value>
-  </data>
-  <data name="检测成功" xml:space="preserve">
-    <value>検出成功</value>
-  </data>
-  <data name="检测失败" xml:space="preserve">
-    <value>検出失敗</value>
-  </data>
-  <data name="对比度" xml:space="preserve">
-    <value>コントラスト</value>
-  </data>
-  <data name="分析错误" xml:space="preserve">
-    <value>分析エラー</value>
-  </data>
-  <data name="分析报告" xml:space="preserve">
-    <value>分析レポート</value>
-  </data>
-  <data name="报告已导出" xml:space="preserve">
-    <value>レポートをエクスポートしました</value>
-  </data>
-  <data name="导出失败" xml:space="preserve">
-    <value>エクスポート失敗</value>
-  </data>
-  <data name="关闭通道" xml:space="preserve">
-    <value>チャンネルを閉じる</value>
-  </data>
-  <data name="相机轴下使能失败" xml:space="preserve">
-    <value>カメラ軸の出力許可に失敗しました!</value>
-  </data>
-  <data name="相机轴上使能失败" xml:space="preserve">
-    <value>カメラ軸の出力許可に失敗しました!</value>
-  </data>
-  <data name="相机轴点动失败" xml:space="preserve">
-    <value>カメラ軸のジョグ動作に失敗しました!</value>
-  </data>
-  <data name="视觉工具组不存在名称为CogToolBlockFeederCalib的ToolBlock" xml:space="preserve">
-    <value>ビジュアルツールグループには、'CogToolBlock-FeederCalib' という名前の ToolBlock が存在しません</value>
-  </data>
-  <data name="视觉工具运行失败" xml:space="preserve">
-    <value>ビジュアルツールの実行に失敗しました!</value>
-  </data>
-  <data name="CogToolBlockFeederCalib运行出错error0" xml:space="preserve">
-    <value>CogToolBlock-FeederCalib 実行エラー!error:{0}</value>
-  </data>
-  <data name="选择要使用的光源通道" xml:space="preserve">
-    <value>使用する光源チャンネルを選択してください</value>
-  </data>
-  <data name="相机未连接无法示教" xml:space="preserve">
-    <value>カメラが接続されていないため、ティーチングできません!</value>
-  </data>
-  <data name="确定进行连续测试吗" xml:space="preserve">
-    <value>連続テストを実行してもよろしいですか?</value>
-  </data>
-  <data name="无测试数据无法导出报告" xml:space="preserve">
-    <value>テストデータがないため、レポートをエクスポートできません。</value>
-  </data>
-  <data name="线别" xml:space="preserve">
-    <value>ライン区分</value>
-  </data>
-  <data name="站别" xml:space="preserve">
-    <value>工程区分</value>
-  </data>
-  <data name="机台号" xml:space="preserve">
-    <value>機台番号</value>
-  </data>
-  <data name="维度指标值" xml:space="preserve">
-    <value>次元、指標、値</value>
-  </data>
-  <data name="样本数" xml:space="preserve">
-    <value>サンプル数</value>
-  </data>
-  <data name="已示教点B" xml:space="preserve">
-    <value>ティーチングポイント B 完了</value>
-  </data>
-  <data name="已示教点A" xml:space="preserve">
-    <value>ティーチングポイント A 完了</value>
-  </data>
-  <data name="获取机器人当前位置失败无法示教点A" xml:space="preserve">
-    <value>ロボット現在位置の取得に失敗したため、ティーチングポイント A を実行できません!</value>
-  </data>
-  <data name="示教点A时出错" xml:space="preserve">
-    <value>ティーチングポイント A 実行エラー</value>
-  </data>
-  <data name="相机曝光设置失败" xml:space="preserve">
-    <value>カメラ露光設定に失敗しました</value>
-  </data>
-  <data name="相机增益设置失败" xml:space="preserve">
-    <value>カメラゲイン設定に失敗しました</value>
-  </data>
-  <data name="样本数为0无法计算" xml:space="preserve">
-    <value>サンプル数が 0 のため、計算できません。</value>
-  </data>
-  <data name="保存测试结果为CSV" xml:space="preserve">
-    <value>テスト結果を CSV ファイルとして保存する</value>
-  </data>
-  <data name="修改相机" xml:space="preserve">
-    <value>カメラ変更</value>
+  <data name="是否延迟保存图片" xml:space="preserve">
+    <value>画像の保存を遅延しますか?</value>
   </data>
 </root>

+ 8 - 0
TeamAAS-VM/Resources/Languages/Lang.resx

@@ -3258,4 +3258,12 @@
   <data name="是否保存系统参数" xml:space="preserve">
     <value>是否保存系统参数?</value>
   </data>
+  <data name="延迟保存图片" xml:space="preserve">
+    <value>延迟保存图片</value>
+    <comment>延迟保存图片</comment>
+  </data>
+  <data name="是否延迟保存图片" xml:space="preserve">
+    <value>是否延迟保存图片</value>
+    <comment>是否延迟保存图片</comment>
+  </data>
 </root>

+ 391 - 403
TeamAAS-VM/Resources/Languages/Lang.zh-TW.resx

@@ -1998,6 +1998,9 @@
   <data name="正在初始化光源控制器" xml:space="preserve">
     <value>正在初始化光源控制器</value>
   </data>
+  <data name="通过下相机获取P0" xml:space="preserve">
+    <value>上下相機對拍,下相機取得P0</value>
+  </data>
   <data name="选择下相机视觉流程" xml:space="preserve">
     <value>選擇下相機視覺流程</value>
   </data>
@@ -2016,6 +2019,54 @@
   <data name="请选择要启用的光源通道" xml:space="preserve">
     <value>請選擇要啟用的光源通道</value>
   </data>
+  <data name="是否控制光源通道亮灭" xml:space="preserve">
+    <value>是否控制光源通道亮滅</value>
+  </data>
+  <data name="CameraBrand_opt" xml:space="preserve">
+    <value>奧普特(OPT Camera Viewer)</value>
+  </data>
+  <data name="相机焦距评价" xml:space="preserve">
+    <value>相機焦距評價</value>
+  </data>
+  <data name="螺丝供料器" xml:space="preserve">
+    <value>螺絲供料器</value>
+  </data>
+  <data name="通过移动至下相机拍照位置拍照计算P0" xml:space="preserve">
+    <value>透過移動至下相機拍照位置,拍照得到P0,然後放回原位</value>
+  </data>
+  <data name="CameraMount_MobileDownIndependentXYPlatform" xml:space="preserve">
+    <value>獨立XY移動相機</value>
+  </data>
+  <data name="视觉静态精度分析" xml:space="preserve">
+    <value>視覺靜態精度分析</value>
+  </data>
+  <data name="ProcedureSaveImagePathModel_Month_Day_Formula_ProductSN_Time" xml:space="preserve">
+    <value>年月/日/配方名/產品SN/產品SN+時間</value>
+  </data>
+  <data name="独立移动相机校准" xml:space="preserve">
+    <value>-獨立移動相機校準</value>
+  </data>
+  <data name="独立模组X方向移动的距离" xml:space="preserve">
+    <value>獨立模組 X 方向移動距離:</value>
+  </data>
+  <data name="移动距离" xml:space="preserve">
+    <value>移動距離</value>
+  </data>
+  <data name="相机运动模组编号" xml:space="preserve">
+    <value>相機運動模組編號</value>
+  </data>
+  <data name="选择下相机" xml:space="preserve">
+    <value>選擇下相機:</value>
+  </data>
+  <data name="获取P0点" xml:space="preserve">
+    <value>取得 P0 點:</value>
+  </data>
+  <data name="放置产品的位置" xml:space="preserve">
+    <value>放置產品的位置:</value>
+  </data>
+  <data name="移动至" xml:space="preserve">
+    <value>移動至</value>
+  </data>
   <data name="下相机拍照的位置" xml:space="preserve">
     <value>下相機拍照的位置:</value>
   </data>
@@ -2109,6 +2160,18 @@
   <data name="关闭" xml:space="preserve">
     <value>關閉</value>
   </data>
+  <data name="相机2轴控制" xml:space="preserve">
+    <value>相機 2 軸控制</value>
+  </data>
+  <data name="相机4轴控制" xml:space="preserve">
+    <value>相機 4 軸控制</value>
+  </data>
+  <data name="相机1轴控制" xml:space="preserve">
+    <value>相機 1 軸控制</value>
+  </data>
+  <data name="相机3轴控制" xml:space="preserve">
+    <value>相機 3 軸控制</value>
+  </data>
   <data name="校准前X" xml:space="preserve">
     <value>X Before Calibration</value>
   </data>
@@ -2127,6 +2190,9 @@
   <data name="Y补偿" xml:space="preserve">
     <value>Y 補償</value>
   </data>
+  <data name="动态精度分析" xml:space="preserve">
+    <value>動態精度分析</value>
+  </data>
   <data name="取料拍照点位" xml:space="preserve">
     <value>取料拍照點位</value>
   </data>
@@ -2145,9 +2211,18 @@
   <data name="复检点位" xml:space="preserve">
     <value>複檢點位</value>
   </data>
+  <data name="独立移动相机" xml:space="preserve">
+    <value>獨立移動相機</value>
+  </data>
   <data name="撕膜点位" xml:space="preserve">
     <value>撕膜點位</value>
   </data>
+  <data name="压力组装点位" xml:space="preserve">
+    <value>Pressure Assembly Point</value>
+  </data>
+  <data name="二维码拍照点位" xml:space="preserve">
+    <value>二維碼拍照點位</value>
+  </data>
   <data name="添加点" xml:space="preserve">
     <value>添加點</value>
   </data>
@@ -2181,12 +2256,27 @@
   <data name="执行产品拍照" xml:space="preserve">
     <value>執行產品拍照</value>
   </data>
+  <data name="X位置" xml:space="preserve">
+    <value>X 位置</value>
+  </data>
+  <data name="X速度" xml:space="preserve">
+    <value>X 速度</value>
+  </data>
+  <data name="Y位置" xml:space="preserve">
+    <value>Y 位置</value>
+  </data>
+  <data name="Y速度" xml:space="preserve">
+    <value>Y 速度</value>
+  </data>
   <data name="Z起点位置" xml:space="preserve">
     <value>Z 起點位置</value>
   </data>
   <data name="Z起点速度" xml:space="preserve">
     <value>Z 起點速度</value>
   </data>
+  <data name="Z终点位置接料位置" xml:space="preserve">
+    <value>Z 終點位置 / 接料位置</value>
+  </data>
   <data name="Z终点速度" xml:space="preserve">
     <value>Z 終點速度</value>
   </data>
@@ -2214,9 +2304,48 @@
   <data name="固定向上相机2视觉流程ID" xml:space="preserve">
     <value>固定向上相機 2 視覺流程 ID:</value>
   </data>
+  <data name="独立向下相机1取料拍照流程ID" xml:space="preserve">
+    <value>獨立向下相機 1 取料拍照流程 ID: </value>
+  </data>
+  <data name="独立向下相机2取料拍照流程ID" xml:space="preserve">
+    <value>獨立向下相機 2 取料拍照流程 ID: </value>
+  </data>
+  <data name="独立向下相机4取料拍照流程ID" xml:space="preserve">
+    <value>獨立向下相機 4 取料拍照流程 ID: </value>
+  </data>
+  <data name="独立向下相机1产品拍照流程ID" xml:space="preserve">
+    <value>獨立向下相機 1 產品拍照流程 ID: </value>
+  </data>
+  <data name="独立向下相机2产品拍照流程ID" xml:space="preserve">
+    <value>獨立向下相機 2 產品拍照流程 ID: </value>
+  </data>
+  <data name="独立向下相机3产品拍照流程ID" xml:space="preserve">
+    <value>獨立向下相機 3 產品拍照流程 ID: </value>
+  </data>
+  <data name="独立向下相机4产品拍照流程ID" xml:space="preserve">
+    <value>獨立向下相機 4 產品拍照流程 ID: </value>
+  </data>
+  <data name="独立向下相机1检测拍照流程ID" xml:space="preserve">
+    <value>獨立向下相機 1 檢測拍照流程 ID: </value>
+  </data>
+  <data name="独立向下相机2检测拍照流程ID" xml:space="preserve">
+    <value>獨立向下相機 2 檢測拍照流程 ID: </value>
+  </data>
+  <data name="独立向下相机3检测拍照流程ID" xml:space="preserve">
+    <value>獨立向下相機 3 檢測拍照流程 ID: </value>
+  </data>
+  <data name="独立向下相机4检测拍照流程ID" xml:space="preserve">
+    <value>獨立向下相機 4 檢測拍照流程 ID: </value>
+  </data>
+  <data name="相机扫码拍照流程ID" xml:space="preserve">
+    <value>相機掃碼拍照流程 ID</value>
+  </data>
   <data name="Feeder取料测试" xml:space="preserve">
     <value>Feeder 取料測試</value>
   </data>
+  <data name="选择相机流程" xml:space="preserve">
+    <value>選擇相機流程</value>
+  </data>
   <data name="选择避让点" xml:space="preserve">
     <value>選擇避讓點</value>
   </data>
@@ -2226,6 +2355,9 @@
   <data name="二次定位相机测试" xml:space="preserve">
     <value>二次定位相機測試</value>
   </data>
+  <data name="选择相机拍照点" xml:space="preserve">
+    <value>選擇相機拍照點</value>
+  </data>
   <data name="创建Tool" xml:space="preserve">
     <value>建立 Tool</value>
   </data>
@@ -2346,6 +2478,21 @@
   <data name="清空数据" xml:space="preserve">
     <value>清空數據</value>
   </data>
+  <data name="动态重复精度分析" xml:space="preserve">
+    <value>動態重複精度分析</value>
+  </data>
+  <data name="X方向精度" xml:space="preserve">
+    <value>X 方向精度: </value>
+  </data>
+  <data name="Y方向精度" xml:space="preserve">
+    <value>Y 方向精度: </value>
+  </data>
+  <data name="角度精度" xml:space="preserve">
+    <value>角度精度: </value>
+  </data>
+  <data name="评级" xml:space="preserve">
+    <value>評級: </value>
+  </data>
   <data name="优秀" xml:space="preserve">
     <value>優秀</value>
   </data>
@@ -2382,6 +2529,9 @@
   <data name="组装记录查询" xml:space="preserve">
     <value>組裝記錄查詢</value>
   </data>
+  <data name="开始" xml:space="preserve">
+    <value>開始:</value>
+  </data>
   <data name="结束" xml:space="preserve">
     <value>結束:</value>
   </data>
@@ -2418,9 +2568,69 @@
   <data name="下相机坐标3" xml:space="preserve">
     <value>下相機座標 3</value>
   </data>
+  <data name="下相机坐标4" xml:space="preserve">
+    <value>下相機座標 4</value>
+  </data>
+  <data name="抓取运动坐标" xml:space="preserve">
+    <value>抓取運動座標</value>
+  </data>
+  <data name="放置运动坐标1" xml:space="preserve">
+    <value>放置運動座標 1</value>
+  </data>
+  <data name="放置运动坐标2" xml:space="preserve">
+    <value>放置運動座標 2</value>
+  </data>
+  <data name="放置运动坐标3" xml:space="preserve">
+    <value>放置運動座標 3</value>
+  </data>
+  <data name="放置运动坐标4" xml:space="preserve">
+    <value>放置運動座標 4</value>
+  </data>
+  <data name="设备名称" xml:space="preserve">
+    <value>設備名稱</value>
+  </data>
+  <data name="操作员" xml:space="preserve">
+    <value>操作員</value>
+  </data>
+  <data name="备注" xml:space="preserve">
+    <value>備註</value>
+  </data>
+  <data name="上一页" xml:space="preserve">
+    <value>上一頁</value>
+  </data>
+  <data name="下一页" xml:space="preserve">
+    <value>下一頁</value>
+  </data>
+  <data name="螺丝编号" xml:space="preserve">
+    <value>螺絲編號:</value>
+  </data>
+  <data name="电批程序号" xml:space="preserve">
+    <value>電批程序號</value>
+  </data>
+  <data name="锁付圈数" xml:space="preserve">
+    <value>鎖付圈數</value>
+  </data>
+  <data name="拍照记录查询" xml:space="preserve">
+    <value>拍照紀錄查詢</value>
+  </data>
   <data name="产品SN" xml:space="preserve">
     <value>產品 SN</value>
   </data>
+  <data name="配方名" xml:space="preserve">
+    <value>配方名</value>
+  </data>
+  <data name="流程名" xml:space="preserve">
+    <value>流程名</value>
+  </data>
+  <data name="相机名" xml:space="preserve">
+    <value>相機名</value>
+  </data>
+  <data name="拍照编号" xml:space="preserve">
+    <value>拍照編號</value>
+  </data>
+  <data name="机器人位置" xml:space="preserve">
+    <value>機器人位置</value>
+  </data>
   <data name="像素坐标" xml:space="preserve">
     <value>像素座標</value>
   </data>
@@ -2571,6 +2781,12 @@
   <data name="保存系统参数" xml:space="preserve">
     <value>儲存系統參數</value>
   </data>
+  <data name="刷卡器配置" xml:space="preserve">
+    <value>刷卡器配置</value>
+  </data>
+  <data name="组装保压配置" xml:space="preserve">
+    <value>組裝保壓配置</value>
+  </data>
   <data name="保压时间" xml:space="preserve">
     <value>保壓時間:</value>
   </data>
@@ -2583,6 +2799,12 @@
   <data name="后保压配置" xml:space="preserve">
     <value>後保壓配置</value>
   </data>
+  <data name="是否开始独立移动相机位置校准" xml:space="preserve">
+    <value>是否開始獨立移動相機位置校準</value>
+  </data>
+  <data name="独立移动相机位置校准失败" xml:space="preserve">
+    <value>獨立移動相機位置校準失敗</value>
+  </data>
   <data name="相机校准失败" xml:space="preserve">
     <value>相機校正失敗</value>
   </data>
@@ -2595,36 +2817,114 @@
   <data name="移动机器人" xml:space="preserve">
     <value>移動機器人</value>
   </data>
+  <data name="是否移动机器人至中心点请确认安全" xml:space="preserve">
+    <value>是否移動機器人至中心點?請確認安全?</value>
+  </data>
   <data name="请先选择相机" xml:space="preserve">
     <value>請先選擇相機!</value>
   </data>
   <data name="请先选择标定" xml:space="preserve">
     <value>請先選擇標定!</value>
   </data>
+  <data name="确认通过下相机开始标定P0点" xml:space="preserve">
+    <value>確認透過下相機開始標定 P0 點?</value>
+  </data>
+  <data name="移动至移动至标定块放置位置取标定块失败" xml:space="preserve">
+    <value>移動至標定塊放置位置,取標定塊失敗!</value>
+  </data>
+  <data name="移动至下相机位置失败" xml:space="preserve">
+    <value>移動至下相機位置失敗!</value>
+  </data>
   <data name="未找到P0点请调整工件位置后重试" xml:space="preserve">
     <value>未找到 P0 點,請調整工件位置後重試!</value>
   </data>
-  <data name="就绪" xml:space="preserve">
-    <value>就緒</value>
+  <data name="移动至标定块放置位置放下标定块失败" xml:space="preserve">
+    <value>移動至標定塊放置位置,放下標定塊失敗!</value>
   </data>
-  <data name="正在检测棋盘格" xml:space="preserve">
-    <value>正在檢測棋盤格...</value>
+  <data name="Z轴上升至安全高度失败" xml:space="preserve">
+    <value>Z 軸上升至安全高度失敗!</value>
   </data>
-  <data name="未检测到棋盘格" xml:space="preserve">
-    <value>未檢測到棋盤格</value>
+  <data name="通过下相机标定P0点完成" xml:space="preserve">
+    <value>透過下相機標定 P0 點完成!</value>
   </data>
-  <data name="分析中" xml:space="preserve">
-    <value>分析中...</value>
+  <data name="确认移动至下相机位置" xml:space="preserve">
+    <value>確認移動至下相機位置?</value>
   </data>
-  <data name="分析完成" xml:space="preserve">
-    <value>分析完成</value>
+  <data name="移动至下相机位置成功" xml:space="preserve">
+    <value>移動至下相機位置成功!</value>
   </data>
-  <data name="已停止" xml:space="preserve">
-    <value>已停止</value>
+  <data name="确认示教下相机位置" xml:space="preserve">
+    <value>確認示教下相機位置?</value>
+  </data>
+  <data name="示教下相机位置成功" xml:space="preserve">
+    <value>示教下相機位置成功!</value>
+  </data>
+  <data name="确认移动至标定块放位置" xml:space="preserve">
+    <value>確認移動至標定塊放置位置?</value>
+  </data>
+  <data name="移动至标定块放位置成功" xml:space="preserve">
+    <value>移動至標定塊放置位置成功!</value>
+  </data>
+  <data name="移动至标定块放位置失败" xml:space="preserve">
+    <value>移動至標定塊放置位置失敗!</value>
+  </data>
+  <data name="确认示教标定块放位置" xml:space="preserve">
+    <value>確認示教標定塊放置位置?</value>
+  </data>
+  <data name="示教标定块放位置成功" xml:space="preserve">
+    <value>示教標定塊放置位置成功!</value>
+  </data>
+  <data name="就绪" xml:space="preserve">
+    <value>就緒</value>
+  </data>
+  <data name="无法加载图像" xml:space="preserve">
+    <value>無法載入圖像</value>
+  </data>
+  <data name="图像已加载" xml:space="preserve">
+    <value>圖像已載入</value>
+  </data>
+  <data name="加载图像失败" xml:space="preserve">
+    <value>載入圖像失敗</value>
+  </data>
+  <data name="正在检测棋盘格" xml:space="preserve">
+    <value>正在檢測棋盤格...</value>
+  </data>
+  <data name="检测成功" xml:space="preserve">
+    <value>檢測成功</value>
+  </data>
+  <data name="未检测到棋盘格" xml:space="preserve">
+    <value>未檢測到棋盤格</value>
+  </data>
+  <data name="检测失败" xml:space="preserve">
+    <value>檢測失敗</value>
+  </data>
+  <data name="分析中" xml:space="preserve">
+    <value>分析中...</value>
+  </data>
+  <data name="分析完成" xml:space="preserve">
+    <value>分析完成</value>
+  </data>
+  <data name="已停止" xml:space="preserve">
+    <value>已停止</value>
+  </data>
+  <data name="对比度" xml:space="preserve">
+    <value>對比度</value>
+  </data>
+  <data name="分析错误" xml:space="preserve">
+    <value>分析錯誤</value>
   </data>
   <data name="已重置" xml:space="preserve">
     <value>已重置</value>
   </data>
+  <data name="分析报告" xml:space="preserve">
+    <value>分析報告</value>
+  </data>
+  <data name="报告已导出" xml:space="preserve">
+    <value>報告已匯出</value>
+  </data>
+  <data name="导出失败" xml:space="preserve">
+    <value>匯出失敗</value>
+  </data>
   <data name="ROI已清除" xml:space="preserve">
     <value>ROI 已清除</value>
   </data>
@@ -2646,6 +2946,9 @@
   <data name="打开异常" xml:space="preserve">
     <value>打開異常</value>
   </data>
+  <data name="关闭通道" xml:space="preserve">
+    <value>關閉通道</value>
+  </data>
   <data name="关闭异常" xml:space="preserve">
     <value>關閉異常</value>
   </data>
@@ -2655,6 +2958,15 @@
   <data name="确认要点动距离0mm吗" xml:space="preserve">
     <value>確認要點動距離 {0} mm 嗎</value>
   </data>
+  <data name="相机轴下使能失败" xml:space="preserve">
+    <value>相機軸下使能失敗!</value>
+  </data>
+  <data name="相机轴上使能失败" xml:space="preserve">
+    <value>相機軸上使能失敗!</value>
+  </data>
+  <data name="相机轴点动失败" xml:space="preserve">
+    <value>相機軸點動失敗!</value>
+  </data>
   <data name="持续时长ms" xml:space="preserve">
     <value>持續時長 (ms)</value>
   </data>
@@ -2691,12 +3003,24 @@
   <data name="继续调频" xml:space="preserve">
     <value>繼續調頻</value>
   </data>
+  <data name="视觉工具组不存在名称为CogToolBlockFeederCalib的ToolBlock" xml:space="preserve">
+    <value>視覺工具組不存在名稱為:'CogToolBlock-FeederCalib' 的 ToolBlock</value>
+  </data>
+  <data name="视觉工具运行失败" xml:space="preserve">
+    <value>視覺工具執行失敗!</value>
+  </data>
+  <data name="CogToolBlockFeederCalib运行出错error0" xml:space="preserve">
+    <value>CogToolBlock-FeederCalib 執行出錯!error:{0}</value>
+  </data>
   <data name="视觉运行中" xml:space="preserve">
     <value>視覺執行中...</value>
   </data>
   <data name="添加机器人" xml:space="preserve">
     <value>新增機器人</value>
   </data>
+  <data name="选择要使用的光源通道" xml:space="preserve">
+    <value>選擇要使用的光源通道</value>
+  </data>
   <data name="测试进行中" xml:space="preserve">
     <value>測試進行中...</value>
   </data>
@@ -2706,6 +3030,9 @@
   <data name="机器人未连接无法示教" xml:space="preserve">
     <value>機器人未連接,無法示教!</value>
   </data>
+  <data name="相机未连接无法示教" xml:space="preserve">
+    <value>相機未連接,無法示教!</value>
+  </data>
   <data name="测试已取消" xml:space="preserve">
     <value>測試已取消!</value>
   </data>
@@ -2718,6 +3045,12 @@
   <data name="测试完成" xml:space="preserve">
     <value>測試完成!</value>
   </data>
+  <data name="确定进行连续测试吗" xml:space="preserve">
+    <value>確定進行連續測試嗎?</value>
+  </data>
+  <data name="无测试数据无法导出报告" xml:space="preserve">
+    <value>無測試數據,無法匯出報告。</value>
+  </data>
   <data name="保存测试报告为PDF" xml:space="preserve">
     <value>儲存測試報告為 PDF</value>
   </data>
@@ -2727,9 +3060,42 @@
   <data name="设备信息" xml:space="preserve">
     <value>設備資訊</value>
   </data>
+  <data name="线别" xml:space="preserve">
+    <value>線別</value>
+  </data>
+  <data name="站别" xml:space="preserve">
+    <value>站別</value>
+  </data>
+  <data name="机台号" xml:space="preserve">
+    <value>機台號</value>
+  </data>
   <data name="分析结果" xml:space="preserve">
     <value>分析結果</value>
   </data>
+  <data name="维度指标值" xml:space="preserve">
+    <value>維度、指標、值</value>
+  </data>
+  <data name="样本数" xml:space="preserve">
+    <value>樣本數</value>
+  </data>
+  <data name="已示教点B" xml:space="preserve">
+    <value>已示教點 B</value>
+  </data>
+  <data name="已示教点A" xml:space="preserve">
+    <value>已示教點 A</value>
+  </data>
+  <data name="获取机器人当前位置失败无法示教点A" xml:space="preserve">
+    <value>取得機器人目前位置失敗,無法示教點 A!</value>
+  </data>
+  <data name="示教点A时出错" xml:space="preserve">
+    <value>示教點 A 時出錯</value>
+  </data>
+  <data name="相机曝光设置失败" xml:space="preserve">
+    <value>相機曝光設定失敗</value>
+  </data>
+  <data name="相机增益设置失败" xml:space="preserve">
+    <value>相機增益設定失敗</value>
+  </data>
   <data name="卓越" xml:space="preserve">
     <value>卓越</value>
   </data>
@@ -2748,6 +3114,12 @@
   <data name="视觉静态精度测试报告" xml:space="preserve">
     <value>視覺靜態精度測試報告</value>
   </data>
+  <data name="样本数为0无法计算" xml:space="preserve">
+    <value>樣本數為 0,無法計算。</value>
+  </data>
+  <data name="保存测试结果为CSV" xml:space="preserve">
+    <value>儲存測試結果為 CSV</value>
+  </data>
   <data name="添加光源控制器" xml:space="preserve">
     <value>新增光源控制器</value>
   </data>
@@ -2757,6 +3129,9 @@
   <data name="添加螺丝供料器" xml:space="preserve">
     <value>新增螺絲供料器</value>
   </data>
+  <data name="修改相机" xml:space="preserve">
+    <value>修改相機</value>
+  </data>
   <data name="没有找到符合条件的记录" xml:space="preserve">
     <value>沒有找到符合條件的記錄。</value>
   </data>
@@ -2790,397 +3165,10 @@
   <data name="是否保存系统参数" xml:space="preserve">
     <value>是否儲存系統參數?</value>
   </data>
-  <data name="通过下相机获取P0" xml:space="preserve">
-    <value>上下相機對拍,下相機取得 P0</value>
-  </data>
-  <data name="螺丝供料器" xml:space="preserve">
-    <value>螺絲供料器</value>
-  </data>
-  <data name="通过移动至下相机拍照位置拍照计算P0" xml:space="preserve">
-    <value>移動至下相機拍照位置,拍照取得 P0,然後放回原位</value>
-  </data>
-  <data name="CameraMount_MobileDownIndependentXYPlatform" xml:space="preserve">
-    <value>獨立 XY 移動相機</value>
-  </data>
-  <data name="视觉静态精度分析" xml:space="preserve">
-    <value>視覺靜態精度分析</value>
-  </data>
-  <data name="独立移动相机校准" xml:space="preserve">
-    <value>-獨立移動相機校準</value>
-  </data>
-  <data name="独立模组X方向移动的距离" xml:space="preserve">
-    <value>獨立模組 X 方向移動距離:</value>
-  </data>
-  <data name="移动距离" xml:space="preserve">
-    <value>移動距離</value>
-  </data>
-  <data name="相机运动模组编号" xml:space="preserve">
-    <value>相機運動模組編號</value>
-  </data>
-  <data name="选择下相机" xml:space="preserve">
-    <value>選擇下相機:</value>
-  </data>
-  <data name="获取P0点" xml:space="preserve">
-    <value>取得 P0 點:</value>
-  </data>
-  <data name="放置产品的位置" xml:space="preserve">
-    <value>放置產品的位置:</value>
-  </data>
-  <data name="移动至" xml:space="preserve">
-    <value>移動至</value>
-  </data>
-  <data name="ProcedureSaveImagePathModel_Month_Day_Formula_ProductSN_Time" xml:space="preserve">
-    <value>年月 / 日 / 配方名 / 產品 SN / 產品 SN + 時間</value>
-  </data>
-  <data name="相机2轴控制" xml:space="preserve">
-    <value>相機 2 軸控制</value>
-  </data>
-  <data name="相机4轴控制" xml:space="preserve">
-    <value>相機 4 軸控制</value>
-  </data>
-  <data name="相机1轴控制" xml:space="preserve">
-    <value>相機 1 軸控制</value>
-  </data>
-  <data name="相机3轴控制" xml:space="preserve">
-    <value>相機 3 軸控制</value>
-  </data>
-  <data name="动态精度分析" xml:space="preserve">
-    <value>動態精度分析</value>
-  </data>
-  <data name="独立移动相机" xml:space="preserve">
-    <value>獨立移動相機</value>
-  </data>
-  <data name="压力组装点位" xml:space="preserve">
-    <value>Pressure Assembly Point</value>
-  </data>
-  <data name="二维码拍照点位" xml:space="preserve">
-    <value>二維碼拍照點位</value>
-  </data>
-  <data name="独立向下相机1取料拍照流程ID" xml:space="preserve">
-    <value>獨立向下相機 1 取料拍照流程 ID: </value>
-  </data>
-  <data name="独立向下相机2取料拍照流程ID" xml:space="preserve">
-    <value>獨立向下相機 2 取料拍照流程 ID: </value>
-  </data>
-  <data name="X位置" xml:space="preserve">
-    <value>X 位置</value>
-  </data>
-  <data name="X速度" xml:space="preserve">
-    <value>X 速度</value>
-  </data>
-  <data name="Y位置" xml:space="preserve">
-    <value>Y 位置</value>
-  </data>
-  <data name="Y速度" xml:space="preserve">
-    <value>Y 速度</value>
-  </data>
-  <data name="Z终点位置接料位置" xml:space="preserve">
-    <value>Z 終點位置 / 接料位置</value>
-  </data>
-  <data name="独立向下相机4取料拍照流程ID" xml:space="preserve">
-    <value>獨立向下相機 4 取料拍照流程 ID: </value>
-  </data>
-  <data name="独立向下相机1产品拍照流程ID" xml:space="preserve">
-    <value>獨立向下相機 1 產品拍照流程 ID: </value>
-  </data>
-  <data name="独立向下相机2产品拍照流程ID" xml:space="preserve">
-    <value>獨立向下相機 2 產品拍照流程 ID: </value>
-  </data>
-  <data name="独立向下相机3产品拍照流程ID" xml:space="preserve">
-    <value>獨立向下相機 3 產品拍照流程 ID: </value>
-  </data>
-  <data name="独立向下相机4产品拍照流程ID" xml:space="preserve">
-    <value>獨立向下相機 4 產品拍照流程 ID: </value>
-  </data>
-  <data name="独立向下相机1检测拍照流程ID" xml:space="preserve">
-    <value>獨立向下相機 1 檢測拍照流程 ID: </value>
-  </data>
-  <data name="独立向下相机2检测拍照流程ID" xml:space="preserve">
-    <value>獨立向下相機 2 檢測拍照流程 ID: </value>
-  </data>
-  <data name="独立向下相机3检测拍照流程ID" xml:space="preserve">
-    <value>獨立向下相機 3 檢測拍照流程 ID: </value>
-  </data>
-  <data name="独立向下相机4检测拍照流程ID" xml:space="preserve">
-    <value>獨立向下相機 4 檢測拍照流程 ID: </value>
-  </data>
-  <data name="相机扫码拍照流程ID" xml:space="preserve">
-    <value>相機掃碼拍照流程 ID</value>
+  <data name="延迟保存图片" xml:space="preserve">
+    <value>延遲保存圖片</value>
   </data>
-  <data name="选择相机流程" xml:space="preserve">
-    <value>選擇相機流程</value>
-  </data>
-  <data name="选择相机拍照点" xml:space="preserve">
-    <value>選擇相機拍照點</value>
-  </data>
-  <data name="动态重复精度分析" xml:space="preserve">
-    <value>動態重複精度分析</value>
-  </data>
-  <data name="X方向精度" xml:space="preserve">
-    <value>X 方向精度: </value>
-  </data>
-  <data name="Y方向精度" xml:space="preserve">
-    <value>Y 方向精度: </value>
-  </data>
-  <data name="角度精度" xml:space="preserve">
-    <value>角度精度: </value>
-  </data>
-  <data name="评级" xml:space="preserve">
-    <value>評級: </value>
-  </data>
-  <data name="开始" xml:space="preserve">
-    <value>開始:</value>
-  </data>
-  <data name="下相机坐标4" xml:space="preserve">
-    <value>下相機座標 4</value>
-  </data>
-  <data name="抓取运动坐标" xml:space="preserve">
-    <value>抓取運動座標</value>
-  </data>
-  <data name="放置运动坐标1" xml:space="preserve">
-    <value>放置運動座標 1</value>
-  </data>
-  <data name="放置运动坐标2" xml:space="preserve">
-    <value>放置運動座標 2</value>
-  </data>
-  <data name="放置运动坐标3" xml:space="preserve">
-    <value>放置運動座標 3</value>
-  </data>
-  <data name="放置运动坐标4" xml:space="preserve">
-    <value>放置運動座標 4</value>
-  </data>
-  <data name="设备名称" xml:space="preserve">
-    <value>設備名稱</value>
-  </data>
-  <data name="操作员" xml:space="preserve">
-    <value>操作員</value>
-  </data>
-  <data name="备注" xml:space="preserve">
-    <value>備註</value>
-  </data>
-  <data name="上一页" xml:space="preserve">
-    <value>上一頁</value>
-  </data>
-  <data name="下一页" xml:space="preserve">
-    <value>下一頁</value>
-  </data>
-  <data name="螺丝编号" xml:space="preserve">
-    <value>螺絲編號:</value>
-  </data>
-  <data name="电批程序号" xml:space="preserve">
-    <value>電批程序號</value>
-  </data>
-  <data name="锁付圈数" xml:space="preserve">
-    <value>鎖付圈數</value>
-  </data>
-  <data name="拍照记录查询" xml:space="preserve">
-    <value>拍照紀錄查詢</value>
-  </data>
-  <data name="配方名" xml:space="preserve">
-    <value>配方名</value>
-  </data>
-  <data name="流程名" xml:space="preserve">
-    <value>流程名</value>
-  </data>
-  <data name="相机名" xml:space="preserve">
-    <value>相機名</value>
-  </data>
-  <data name="拍照编号" xml:space="preserve">
-    <value>拍照編號</value>
-  </data>
-  <data name="机器人位置" xml:space="preserve">
-    <value>機器人位置</value>
-  </data>
-  <data name="刷卡器配置" xml:space="preserve">
-    <value>刷卡器配置</value>
-  </data>
-  <data name="组装保压配置" xml:space="preserve">
-    <value>組裝保壓配置</value>
-  </data>
-  <data name="是否开始独立移动相机位置校准" xml:space="preserve">
-    <value>是否開始獨立移動相機位置校準</value>
-  </data>
-  <data name="独立移动相机位置校准失败" xml:space="preserve">
-    <value>獨立移動相機位置校準失敗</value>
-  </data>
-  <data name="是否移动机器人至中心点请确认安全" xml:space="preserve">
-    <value>是否移動機器人至中心點?請確認安全?</value>
-  </data>
-  <data name="确认通过下相机开始标定P0点" xml:space="preserve">
-    <value>確認透過下相機開始標定 P0 點?</value>
-  </data>
-  <data name="移动至移动至标定块放置位置取标定块失败" xml:space="preserve">
-    <value>移動至標定塊放置位置,取標定塊失敗!</value>
-  </data>
-  <data name="移动至下相机位置失败" xml:space="preserve">
-    <value>移動至下相機位置失敗!</value>
-  </data>
-  <data name="移动至标定块放置位置放下标定块失败" xml:space="preserve">
-    <value>移動至標定塊放置位置,放下標定塊失敗!</value>
-  </data>
-  <data name="Z轴上升至安全高度失败" xml:space="preserve">
-    <value>Z 軸上升至安全高度失敗!</value>
-  </data>
-  <data name="通过下相机标定P0点完成" xml:space="preserve">
-    <value>透過下相機標定 P0 點完成!</value>
-  </data>
-  <data name="确认移动至下相机位置" xml:space="preserve">
-    <value>確認移動至下相機位置?</value>
-  </data>
-  <data name="移动至下相机位置成功" xml:space="preserve">
-    <value>移動至下相機位置成功!</value>
-  </data>
-  <data name="确认示教下相机位置" xml:space="preserve">
-    <value>確認示教下相機位置?</value>
-  </data>
-  <data name="示教下相机位置成功" xml:space="preserve">
-    <value>示教下相機位置成功!</value>
-  </data>
-  <data name="确认移动至标定块放位置" xml:space="preserve">
-    <value>確認移動至標定塊放置位置?</value>
-  </data>
-  <data name="移动至标定块放位置成功" xml:space="preserve">
-    <value>移動至標定塊放置位置成功!</value>
-  </data>
-  <data name="移动至标定块放位置失败" xml:space="preserve">
-    <value>移動至標定塊放置位置失敗!</value>
-  </data>
-  <data name="确认示教标定块放位置" xml:space="preserve">
-    <value>確認示教標定塊放置位置?</value>
-  </data>
-  <data name="示教标定块放位置成功" xml:space="preserve">
-    <value>示教標定塊放置位置成功!</value>
-  </data>
-  <data name="无法加载图像" xml:space="preserve">
-    <value>無法載入圖像</value>
-  </data>
-  <data name="图像已加载" xml:space="preserve">
-    <value>圖像已載入</value>
-  </data>
-  <data name="加载图像失败" xml:space="preserve">
-    <value>載入圖像失敗</value>
-  </data>
-  <data name="检测成功" xml:space="preserve">
-    <value>檢測成功</value>
-  </data>
-  <data name="检测失败" xml:space="preserve">
-    <value>檢測失敗</value>
-  </data>
-  <data name="对比度" xml:space="preserve">
-    <value>對比度</value>
-  </data>
-  <data name="分析错误" xml:space="preserve">
-    <value>分析錯誤</value>
-  </data>
-  <data name="分析报告" xml:space="preserve">
-    <value>分析報告</value>
-  </data>
-  <data name="报告已导出" xml:space="preserve">
-    <value>報告已匯出</value>
-  </data>
-  <data name="导出失败" xml:space="preserve">
-    <value>匯出失敗</value>
-  </data>
-  <data name="关闭通道" xml:space="preserve">
-    <value>關閉通道</value>
-  </data>
-  <data name="相机轴下使能失败" xml:space="preserve">
-    <value>相機軸下使能失敗!</value>
-  </data>
-  <data name="相机轴上使能失败" xml:space="preserve">
-    <value>相機軸上使能失敗!</value>
-  </data>
-  <data name="相机轴点动失败" xml:space="preserve">
-    <value>相機軸點動失敗!</value>
-  </data>
-  <data name="视觉工具组不存在名称为CogToolBlockFeederCalib的ToolBlock" xml:space="preserve">
-    <value>視覺工具組不存在名稱為:'CogToolBlock-FeederCalib' 的 ToolBlock</value>
-  </data>
-  <data name="视觉工具运行失败" xml:space="preserve">
-    <value>視覺工具執行失敗!</value>
-  </data>
-  <data name="CogToolBlockFeederCalib运行出错error0" xml:space="preserve">
-    <value>CogToolBlock-FeederCalib 執行出錯!error:{0}</value>
-  </data>
-  <data name="选择要使用的光源通道" xml:space="preserve">
-    <value>選擇要使用的光源通道</value>
-  </data>
-  <data name="相机未连接无法示教" xml:space="preserve">
-    <value>相機未連接,無法示教!</value>
-  </data>
-  <data name="确定进行连续测试吗" xml:space="preserve">
-    <value>確定進行連續測試嗎?</value>
-  </data>
-  <data name="无测试数据无法导出报告" xml:space="preserve">
-    <value>無測試數據,無法匯出報告。</value>
-  </data>
-  <data name="线别" xml:space="preserve">
-    <value>線別</value>
-  </data>
-  <data name="站别" xml:space="preserve">
-    <value>站別</value>
-  </data>
-  <data name="机台号" xml:space="preserve">
-    <value>機台號</value>
-  </data>
-  <data name="维度指标值" xml:space="preserve">
-    <value>維度、指標、值</value>
-  </data>
-  <data name="样本数" xml:space="preserve">
-    <value>樣本數</value>
-  </data>
-  <data name="已示教点B" xml:space="preserve">
-    <value>已示教點 B</value>
-  </data>
-  <data name="已示教点A" xml:space="preserve">
-    <value>已示教點 A</value>
-  </data>
-  <data name="获取机器人当前位置失败无法示教点A" xml:space="preserve">
-    <value>取得機器人目前位置失敗,無法示教點 A!</value>
-  </data>
-  <data name="示教点A时出错" xml:space="preserve">
-    <value>示教點 A 時出錯</value>
-  </data>
-  <data name="相机曝光设置失败" xml:space="preserve">
-    <value>相機曝光設定失敗</value>
-  </data>
-  <data name="相机增益设置失败" xml:space="preserve">
-    <value>相機增益設定失敗</value>
-  </data>
-  <data name="样本数为0无法计算" xml:space="preserve">
-    <value>樣本數為 0,無法計算。</value>
-  </data>
-  <data name="保存测试结果为CSV" xml:space="preserve">
-    <value>儲存測試結果為 CSV</value>
-  </data>
-  <data name="修改相机" xml:space="preserve">
-    <value>修改相機</value>
-  </data>
-  <data name="通过下相机获取P0" xml:space="preserve">
-    <value>上下相機對拍,下相機取得P0</value>
-  </data>
-  <data name="是否控制光源通道亮灭" xml:space="preserve">
-    <value>是否控制光源通道亮滅</value>
-  </data>
-  <data name="CameraBrand_opt" xml:space="preserve">
-    <value>奧普特(OPT Camera Viewer)</value>
-  </data>
-  <data name="相机焦距评价" xml:space="preserve">
-    <value>相機焦距評價</value>
-  </data>
-  <data name="螺丝供料器" xml:space="preserve">
-    <value>螺絲供料器</value>
-  </data>
-  <data name="通过移动至下相机拍照位置拍照计算P0" xml:space="preserve">
-    <value>透過移動至下相機拍照位置,拍照得到P0,然後放回原位</value>
-  </data>
-  <data name="视觉静态精度分析" xml:space="preserve">
-    <value>視覺靜態精度分析</value>
-  </data>
-  <data name="ProcedureSaveImagePathModel_Month_Day_Formula_ProductSN_Time" xml:space="preserve">
-    <value>年月/日/配方名/產品SN/產品SN+時間</value>
-  </data>
-  <data name="CameraMount_MobileDownIndependentXYPlatform" xml:space="preserve">
-    <value>獨立XY移動相機</value>
+  <data name="是否延迟保存图片" xml:space="preserve">
+    <value>是否延遲保存圖片</value>
   </data>
 </root>

+ 6 - 0
TeamAAS-VM/Services/RemoteCommandService.cs

@@ -1549,6 +1549,7 @@ namespace TeamAAS_VP.Services
                         SaveImagePathModel = procedure.SaveImagePathModel,
                         SavePath = procedure.SavePath,
                         IsCompress = procedure.IsCompress,
+                        IsDelaySaveImage = procedure.IsDelaySaveImage,
                         ProceductName = procedure.Name,
                         ImageFileName = imgName
                     });
@@ -1588,6 +1589,8 @@ namespace TeamAAS_VP.Services
                         SaveImageModel = procedure.SaveImageModel,
                         SaveImagePathModel = procedure.SaveImagePathModel,
                         SavePath = procedure.SavePath,
+                        IsCompress = procedure.IsCompress,
+                        IsDelaySaveImage = procedure.IsDelaySaveImage,
                         ProceductName = procedure.Name,
                         ImageFileName = imgName
                     });
@@ -1687,6 +1690,7 @@ namespace TeamAAS_VP.Services
                         SaveImagePathModel = procedure.SaveImagePathModel,
                         SavePath = procedure.SavePath,
                         IsCompress = procedure.IsCompress,
+                        IsDelaySaveImage = procedure.IsDelaySaveImage,
                         ProceductName = procedure.Name,
                         ImageFileName = imgName
                     });
@@ -1727,6 +1731,8 @@ namespace TeamAAS_VP.Services
                         SaveImageModel = procedure.SaveImageModel,
                         SaveImagePathModel = procedure.SaveImagePathModel,
                         SavePath = procedure.SavePath,
+                        IsCompress = procedure.IsCompress,
+                        IsDelaySaveImage = procedure.IsDelaySaveImage,
                         ProceductName = procedure.Name,
                         ImageFileName = imgName
                     });

+ 2 - 0
TeamAAS-VM/TeamAAS-VP.csproj

@@ -536,11 +536,13 @@
     <Compile Include="Core\RectangleCenterCalculator.cs" />
     <Compile Include="Core\StabilityAnalyzer.cs" />
     <Compile Include="Core\VisionProFileHelper.cs" />
+    <Compile Include="Events\DelaySaveImageNotification.cs" />
     <Compile Include="Events\MainTabSwitchNotification.cs" />
     <Compile Include="Interfaces\IMesService.cs" />
     <Compile Include="Models\AssemblyRecord.cs" />
     <Compile Include="Models\CTQ_Data.cs" />
     <Compile Include="Models\DataFormCtq.cs" />
+    <Compile Include="Models\DelaySaveImage.cs" />
     <Compile Include="Models\DeviceInfo.cs" />
     <Compile Include="Models\Feeder\ScrewFeederInfo.cs" />
     <Compile Include="Models\PhotoCaptureRecord.cs" />

+ 76 - 14
TeamAAS-VM/Views/Home/ShowVisionRender.xaml.cs

@@ -36,6 +36,8 @@ namespace TeamAAS_VP.Views.Home
         private readonly ISystemDatabaseService _systemDatabaseService;
         private readonly IProductService _productService;
 
+        private List<DelaySaveImage> delaySaveImages = new List<DelaySaveImage>();
+
         // ======================= 【新增】保存任务控制:防闪退/防资源泄露 =======================
         private CancellationTokenSource _saveImageCts = new CancellationTokenSource();
         private readonly SemaphoreSlim _saveSemaphore = new SemaphoreSlim(2, 2);
@@ -56,6 +58,7 @@ namespace TeamAAS_VP.Views.Home
             viewModel.UpdateLayout += ViewModel_UpdateLayout;
             _eventAggregator.GetEvent<RenderUpdateNotification>().Subscribe(UpdateRenderModuleSource);
             _eventAggregator.GetEvent<ProductChangedNotification>().Subscribe(ProductChanged);
+            _eventAggregator.GetEvent<DelaySaveImageNotification>().Subscribe(UpdateDelaySaveImage);
 
             // 【可选】控件卸载时取消所有保存任务,避免页面关闭后仍在截图/保存导致闪退
             this.Unloaded += ShowVisionRender_Unloaded;
@@ -308,16 +311,35 @@ namespace TeamAAS_VP.Views.Home
                         {
                             token.ThrowIfCancellationRequested();
 
-                            SaveImage(
-                                render.SaveImageModel,
-                                render.SaveImagePathModel,
-                                render.SavePath,
-                                render.Image,
-                                clonedBitmap,
-                                render.Result,
-                                render.IsCompress,
-                                render.ImageFileName
-                            );
+                            if (render.IsDelaySaveImage)// 延迟保存(适合你那边后续有处理的场景)
+                            {
+                                // 创建延迟保存项,转移资源所有权
+                                var delayItem = new DelaySaveImage()
+                                {
+                                    SaveImageModel = render.SaveImageModel,
+                                    SaveImagePathModel = render.SaveImagePathModel,
+                                    SavePath = render.SavePath,
+                                    Image = render.Image?.CopyBase(CogImageCopyModeConstants.CopyPixels), // 深拷贝ICogImage
+                                    clonedBitmap = (Bitmap)clonedBitmap.Clone(),      // 转移所有权
+                                    Result = render.Result,
+                                    IsCompress = render.IsCompress,
+                                    ImageFileName = render.ImageFileName
+                                };
+                                delaySaveImages.Add(delayItem);
+                            }
+                            else
+                            {
+                                SaveImage(
+                                    render.SaveImageModel,
+                                    render.SaveImagePathModel,
+                                    render.SavePath,
+                                    render.Image,
+                                    clonedBitmap,
+                                    render.Result,
+                                    render.IsCompress,
+                                    render.ImageFileName
+                                );
+                            }
                         }
                         catch (OperationCanceledException)
                         {
@@ -341,16 +363,53 @@ namespace TeamAAS_VP.Views.Home
                 }
                 catch (Exception ex)
                 {
-                    //try { clonedBitmap?.Dispose(); } catch { }
+                    // try { clonedBitmap?.Dispose(); } catch { }
                     LogHelper.WriteLogError("RequestSaveImage(UI截图阶段) 出错!", ex);
                 }
             }));
         }
 
+        private void UpdateDelaySaveImage(bool isSave)
+        {
+            if (!isSave)
+            {
+                delaySaveImages.Clear();
+                return;
+            }
+
+            // 这里简单遍历保存,实际可以根据需要优化(如批量处理/分队列等)
+            foreach (var item in delaySaveImages)
+            {
+                try
+                {
+                    SaveImage(
+                        item.SaveImageModel,
+                        item.SaveImagePathModel,
+                        item.SavePath,
+                        item.Image,
+                        item.clonedBitmap,
+                        item.Result,
+                        item.IsCompress,
+                        item.ImageFileName
+                    );
+                }
+                catch (Exception ex)
+                {
+                    LogHelper.WriteLogError("UpdateDelaySaveImage 保存图像时出错!", ex);
+                }
+                finally
+                {
+                    // 保存后���放资源
+                    try { item.clonedBitmap?.Dispose(); } catch { }
+                }
+            }
+            delaySaveImages.Clear();
+        }
+
         /// <summary>
         /// 保存图像(保持你原有逻辑不变,补充 Dispose 兜底,防止压缩分支不释放导致闪退)
         /// </summary>
-        private void SaveImage(ProcedureSaveImageModel saveImageModel, ProcedureSaveImagePathModel saveImagePathModel, string path, ICogImage image, Bitmap reimage, bool result, bool isCompress,string imageFileName)
+        private void SaveImage(ProcedureSaveImageModel saveImageModel, ProcedureSaveImagePathModel saveImagePathModel, string path, ICogImage image, Bitmap reimage, bool result, bool isCompress, string imageFileName)
         {
             if (string.IsNullOrEmpty(path) || string.IsNullOrWhiteSpace(path) || !Path.IsPathRooted(path))
             {
@@ -520,8 +579,11 @@ namespace TeamAAS_VP.Views.Home
                                 formulaName = formulaName.Replace(c, '_');
 
                             string productSN = _productService.CurrentProductCode;
-                            foreach (char c in Path.GetInvalidFileNameChars())
-                                productSN = productSN.Replace(c, '_');
+                            if (!string.IsNullOrEmpty(productSN))
+                            {
+                                foreach (char c in Path.GetInvalidFileNameChars())
+                                    productSN = productSN.Replace(c, '_');
+                            }
 
                             string resultStr = result ? "OK" : "NG";
                             Originalpath = $"{path}\\Original\\{now:yyyy-MM}\\{now:MM-dd}\\{formulaName}\\{productSN}\\{resultStr}\\{imgName}.bmp";

+ 17 - 6
TeamAAS-VM/Views/Product/ProcedureParams.xaml

@@ -431,19 +431,30 @@
                               Visibility="{Binding ElementName=chbSaveImage,Path=IsChecked, Converter={StaticResource BooleanToVisibilityConverter}}"
                               IsChecked="{Binding SelectProcedure.IsCompress,Mode=TwoWay}"
                               Style="{StaticResource MaterialDesignLightCheckBox}" />
-                    <!--图片名称格式-->
+                    <!--是否延迟保存图片-->
                     <TextBlock Grid.Row="14"
+                               Grid.Column="0"
+                               Visibility="{Binding ElementName=chbSaveImage,Path=IsChecked, Converter={StaticResource BooleanToVisibilityConverter}}"
+                               Text="{lex:Loc 延迟保存图片,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}: '}" />
+                    <CheckBox Grid.Row="14"
+                              Grid.Column="1"
+                              Content="{lex:Loc 是否延迟保存图片}"
+                              Visibility="{Binding ElementName=chbSaveImage,Path=IsChecked, Converter={StaticResource BooleanToVisibilityConverter}}"
+                              IsChecked="{Binding SelectProcedure.IsDelaySaveImage,Mode=TwoWay}"
+                              Style="{StaticResource MaterialDesignLightCheckBox}" />
+                    <!--图片名称格式-->
+                    <TextBlock Grid.Row="15"
                                Grid.Column="0"
                                Visibility="{Binding ElementName=chbSaveImage,Path=IsChecked, Converter={StaticResource BooleanToVisibilityConverter}}"
                                Text="图片名称格式:" />
-                    <TextBox Grid.Row="14"
+                    <TextBox Grid.Row="15"
                              Grid.Column="1"
                              HorizontalAlignment="Stretch"
                              Visibility="{Binding ElementName=chbSaveImage,Path=IsChecked, Converter={StaticResource BooleanToVisibilityConverter}}"
                              Text="{Binding SelectProcedure.ImageFileNameFormat,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
                     </TextBox>
                     <!--示例-->
-                    <StackPanel Grid.Row="15"
+                    <StackPanel Grid.Row="16"
                                 Grid.Column="0"
                                 Grid.ColumnSpan="2"
                                 Orientation="Vertical"
@@ -466,7 +477,7 @@
                     </StackPanel>
 
                     <!--自定义参数-->
-                    <GroupBox Grid.Row="16"
+                    <GroupBox Grid.Row="17"
                               Grid.Column="0"
                               Grid.ColumnSpan="2"
                               HorizontalAlignment="Stretch"
@@ -536,10 +547,10 @@
                             </DataGrid>
                         </DockPanel>
                     </GroupBox>
-                    <TextBlock Grid.Row="17"
+                    <TextBlock Grid.Row="18"
                                Grid.Column="0"
                                Text="{lex:Loc 重写视觉处理逻辑}" />
-                    <Button Grid.Row="17"
+                    <Button Grid.Row="18"
                             Grid.Column="1"
                             Margin="0,2,0,0"
                             Command="{Binding OverrideVisionTaskCommand}">