添加 MX-PD-盘古 项目文件

将 MX-PD-盘古 - new 目录下的所有文件添加到主仓库
This commit is contained in:
Shi.Ji
2026-05-18 11:43:09 +08:00
parent 03632a379d
commit e31d3560bb
739 changed files with 99783 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
using Maxwell.SemiFramework.DefaultConfig.Vision;
using MwFramework.Device.Model;
using SemiconductorVisionAlgorithm.SemiParams;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MainShell.Vision.Common
{
public static class CameraImageTypeConverter
{
public static SemiconductorVisionAlgorithm.SemiParams.Camera ToSemiCamera(this CameraData image)
{
Camera camera = new Camera();
if (image != null)
{
camera.Ptr = ImageHelper.GetImageHandle(image);
camera.Height = (int)image.Height;
camera.Width = (int)image.Width;
}
return camera;
}
}
}

View File

@@ -0,0 +1,23 @@
namespace MainShell.Vision
{
/// <summary>
/// 模板类视觉算法参数基类
/// </summary>
public abstract class TemplateVisionAlgorithmParameters : VisionAlgorithmParameters
{
protected TemplateVisionAlgorithmParameters()
{
MinScore = 0.8d;
}
/// <summary>
/// 模板路径
/// </summary>
public string TemplatePath { get; set; }
/// <summary>
/// 最小匹配分数
/// </summary>
public double MinScore { get; set; }
}
}

View File

@@ -0,0 +1,9 @@
namespace MainShell.Vision
{
/// <summary>
/// 视觉算法参数基类
/// </summary>
public abstract class VisionAlgorithmParameters
{
}
}

View File

@@ -0,0 +1,234 @@
using MainShell.Common;
using System;
namespace MainShell.Vision
{
/// <summary>
/// <20>Ӿ<EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><DCB7>
/// </summary>
public enum VisionFailureCategory
{
None = 0,
Validation = 1,
Cancelled = 2,
Capture = 3,
Algorithm = 4,
Driver = 5,
}
/// <summary>
/// <20>Ӿ<EFBFBD><D3BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public enum VisionErrorCode
{
None = 0,
RequestInvalid = 1000,
TimeoutInvalid = 1001,
TemplatePathEmpty = 1002,
RoiNameEmpty = 1003,
MinScoreInvalid = 1004,
OperationCancelled = 1100,
CameraNotFound = 1200,
CameraNotOpen = 1201,
CameraNotGrabbing = 1202,
CaptureTimeout = 1203,
NoFrame = 1204,
SoftTriggerFailed = 1205,
DriverError = 1206,
ImageNull = 1207,
TemplateAlgorithmNotImplemented = 1300,
TemplateMatchFailed = 1301,
TemplateResultInvalid = 1302,
CommonAlgorithmNotSupported = 1400,
CommonAlgorithmExecutionFailed = 1401,
ChipMapSortInputInvalid = 1402,
}
/// <summary>
/// Vision <20><><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><C5B6>
/// </summary>
public static class VisionAlarmIds
{
public const int CameraNotFound = 13000;
public const int CameraNotOpen = 13001;
public const int CameraNotGrabbing = 13002;
public const int CaptureTimeout = 13003;
public const int NoFrame = 13004;
public const int SoftTriggerFailed = 13005;
public const int DriverError = 13006;
public const int ImageNull = 13007;
public const int RequestInvalid = 13008;
public const int TemplatePathEmpty = 13100;
public const int TemplateRoiInvalid = 13103;
public const int TemplateMinScoreInvalid = 13104;
public const int TemplateAlgorithmNotImplemented = 13105;
public const int TemplateMatchFailed = 13106;
public const int TemplateResultInvalid = 13107;
public const int CommonAlgorithmNotSupported = 13200;
public const int CommonAlgorithmExecutionFailed = 13201;
public const int ChipMapSortInputInvalid = 13202;
}
/// <summary>
/// Vision <20><><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public static class VisionResultMapper
{
public static VisionProcessResult CreateCaptureFailure(ImageCaptureResult captureResult)
{
if (captureResult == null)
{
return VisionProcessResult.Failure(
VisionFailureCategory.Capture,
VisionErrorCode.NoFrame,
VisionAlarmIds.NoFrame,
MessageKey.VisionNoFrameReturned,
"Vision capture result is null.");
}
switch (captureResult.Status)
{
case ImageCaptureStatus.Cancelled:
return VisionProcessResult.Failure(
VisionFailureCategory.Cancelled,
VisionErrorCode.OperationCancelled,
null,
MessageKey.VisionOperationCancelled,
captureResult.Message,
captureResult.Exception);
case ImageCaptureStatus.CameraNotFound:
return VisionProcessResult.Failure(
VisionFailureCategory.Capture,
VisionErrorCode.CameraNotFound,
VisionAlarmIds.CameraNotFound,
MessageKey.VisionCameraNotFound,
captureResult.Message,
captureResult.Exception);
case ImageCaptureStatus.CameraNotOpen:
return VisionProcessResult.Failure(
VisionFailureCategory.Capture,
VisionErrorCode.CameraNotOpen,
VisionAlarmIds.CameraNotOpen,
MessageKey.VisionCameraNotOpen,
captureResult.Message,
captureResult.Exception);
case ImageCaptureStatus.CameraNotGrabbing:
return VisionProcessResult.Failure(
VisionFailureCategory.Capture,
VisionErrorCode.CameraNotGrabbing,
VisionAlarmIds.CameraNotGrabbing,
MessageKey.VisionCameraNotGrabbing,
captureResult.Message,
captureResult.Exception);
case ImageCaptureStatus.Timeout:
return VisionProcessResult.Failure(
VisionFailureCategory.Capture,
VisionErrorCode.CaptureTimeout,
VisionAlarmIds.CaptureTimeout,
MessageKey.VisionCaptureTimeout,
captureResult.Message,
captureResult.Exception);
case ImageCaptureStatus.NoFrame:
return VisionProcessResult.Failure(
VisionFailureCategory.Capture,
VisionErrorCode.NoFrame,
VisionAlarmIds.NoFrame,
MessageKey.VisionNoFrameReturned,
captureResult.Message,
captureResult.Exception);
case ImageCaptureStatus.SoftTriggerFailed:
return VisionProcessResult.Failure(
VisionFailureCategory.Driver,
VisionErrorCode.SoftTriggerFailed,
VisionAlarmIds.SoftTriggerFailed,
MessageKey.VisionSoftTriggerFailed,
captureResult.Message,
captureResult.Exception);
default:
return VisionProcessResult.Failure(
VisionFailureCategory.Driver,
VisionErrorCode.DriverError,
VisionAlarmIds.DriverError,
MessageKey.VisionDriverError,
captureResult.Message,
captureResult.Exception);
}
}
public static int? GetAlarmId(VisionErrorCode errorCode)
{
switch (errorCode)
{
case VisionErrorCode.RequestInvalid:
case VisionErrorCode.TimeoutInvalid:
return VisionAlarmIds.RequestInvalid;
case VisionErrorCode.TemplatePathEmpty:
return VisionAlarmIds.TemplatePathEmpty;
case VisionErrorCode.RoiNameEmpty:
return VisionAlarmIds.TemplateRoiInvalid;
case VisionErrorCode.MinScoreInvalid:
return VisionAlarmIds.TemplateMinScoreInvalid;
case VisionErrorCode.CameraNotFound:
return VisionAlarmIds.CameraNotFound;
case VisionErrorCode.CameraNotOpen:
return VisionAlarmIds.CameraNotOpen;
case VisionErrorCode.CameraNotGrabbing:
return VisionAlarmIds.CameraNotGrabbing;
case VisionErrorCode.CaptureTimeout:
return VisionAlarmIds.CaptureTimeout;
case VisionErrorCode.NoFrame:
return VisionAlarmIds.NoFrame;
case VisionErrorCode.SoftTriggerFailed:
return VisionAlarmIds.SoftTriggerFailed;
case VisionErrorCode.DriverError:
return VisionAlarmIds.DriverError;
case VisionErrorCode.ImageNull:
return VisionAlarmIds.ImageNull;
case VisionErrorCode.TemplateAlgorithmNotImplemented:
return VisionAlarmIds.TemplateAlgorithmNotImplemented;
case VisionErrorCode.TemplateMatchFailed:
return VisionAlarmIds.TemplateMatchFailed;
case VisionErrorCode.TemplateResultInvalid:
return VisionAlarmIds.TemplateResultInvalid;
case VisionErrorCode.CommonAlgorithmNotSupported:
return VisionAlarmIds.CommonAlgorithmNotSupported;
case VisionErrorCode.CommonAlgorithmExecutionFailed:
return VisionAlarmIds.CommonAlgorithmExecutionFailed;
case VisionErrorCode.ChipMapSortInputInvalid:
return VisionAlarmIds.ChipMapSortInputInvalid;
default:
return null;
}
}
}
}

View File

@@ -0,0 +1,45 @@
namespace MainShell.Vision
{
/// <summary>
/// ƥ<><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public class VisionMatchResult
{
public VisionMatchResult()
{
}
public VisionMatchResult(double offsetX, double offsetY, double angle = 0.0, double score = 1.0)
{
OffsetX = offsetX;
OffsetY = offsetY;
Angle = angle;
Score = score;
}
/// <summary>
/// X ƫ<><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public double OffsetX { get; set; }
/// <summary>
/// Y ƫ<><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public double OffsetY { get; set; }
/// <summary>
/// <20>Ƕȡ<C7B6>
/// </summary>
public double Angle { get; set; }
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public double Score { get; set; }
/// <summary>
/// <20><>ǩ<EFBFBD><C7A9>
/// </summary>
public string Tag { get; set; }
}
}

View File

@@ -0,0 +1,72 @@
using MainShell.Common;
using System;
namespace MainShell.Vision
{
/// <summary>
/// <20>Ӿ<EFBFBD><D3BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public class VisionProcessResult
{
/// <summary>
/// <20>Ƿ<EFBFBD>ִ<EFBFBD>гɹ<D0B3>
/// </summary>
public bool Succeeded { get; set; }
public VisionFailureCategory FailureCategory { get; set; }
public VisionErrorCode ErrorCode { get; set; }
public int? AlarmId { get; set; }
public MessageKey UserMessageKey { get; set; }
/// <summary>
/// <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><E9BFB4><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>Ϣ
/// </summary>
public string Message { get; set; }
/// <summary>
/// <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><ECB3A3><EFBFBD><EFBFBD>
/// </summary>
public Exception Exception { get; set; }
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public static VisionProcessResult Success()
{
return new VisionProcessResult
{
Succeeded = true,
FailureCategory = VisionFailureCategory.None,
ErrorCode = VisionErrorCode.None,
AlarmId = null,
UserMessageKey = MessageKey.None,
};
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD>
/// </summary>
public static VisionProcessResult Failure(
VisionFailureCategory failureCategory,
VisionErrorCode errorCode,
int? alarmId,
MessageKey userMessageKey,
string message,
Exception exception = null)
{
return new VisionProcessResult
{
Succeeded = false,
FailureCategory = failureCategory,
ErrorCode = errorCode,
AlarmId = alarmId,
UserMessageKey = userMessageKey,
Message = message,
Exception = exception,
};
}
}
}

View File

@@ -0,0 +1,57 @@
using MainShell.Common;
using System;
namespace MainShell.Vision
{
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>Ӿ<EFBFBD><D3BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <typeparam name="TData"><3E>Ӿ<EFBFBD><D3BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></typeparam>
public class VisionProcessResult<TData> : VisionProcessResult
{
/// <summary>
/// <20><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public TData Data { get; set; }
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public static VisionProcessResult<TData> Success(TData data)
{
return new VisionProcessResult<TData>
{
Succeeded = true,
FailureCategory = VisionFailureCategory.None,
ErrorCode = VisionErrorCode.None,
AlarmId = null,
UserMessageKey = MessageKey.None,
Data = data,
};
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD>
/// </summary>
public new static VisionProcessResult<TData> Failure(
VisionFailureCategory failureCategory,
VisionErrorCode errorCode,
int? alarmId,
MessageKey userMessageKey,
string message,
Exception exception = null)
{
return new VisionProcessResult<TData>
{
Succeeded = false,
FailureCategory = failureCategory,
ErrorCode = errorCode,
AlarmId = alarmId,
UserMessageKey = userMessageKey,
Message = message,
Exception = exception,
Data = default(TData),
};
}
}
}