| | |
| | | { |
| | | public class Total |
| | | { |
| | | /// <summary> |
| | | /// 图像计数 |
| | | /// </summary> |
| | | public int iImageCount { get; set; } = 0; |
| | | |
| | | /// <summary> |
| | | /// 扫描计数 |
| | | /// </summary> |
| | | public int iScanCount { get; set; } = 0; |
| | | |
| | | /// <summary> |
| | | /// 完整轮胎计数 |
| | | /// </summary> |
| | | public int TyreCount { get; set; } = 0; |
| | | |
| | | /// <summary> |
| | | /// 每张轮胎所需图像数(2D相机使用,默认1表示3D相机) |
| | | /// </summary> |
| | | public int ImagesPerTyre { get; set; } = 1; |
| | | |
| | | /// <summary> |
| | | /// 当前轮胎的图像序号(0~ImagesPerTyre-1) |
| | | /// </summary> |
| | | public int CurrentImageIndex { get; set; } = 0; |
| | | |
| | | /// <summary> |
| | | /// 轮胎OK计数 |
| | | /// </summary> |
| | | public int TyreOK { get; set; } = 0; |
| | | |
| | | /// <summary> |
| | | /// 轮胎NG计数 |
| | | /// </summary> |
| | | public int TyreNG { get; set; } = 0; |
| | | |
| | | /// <summary> |
| | | /// 当前轮胎ID |
| | | /// </summary> |
| | | public int CurrentTyreID { get; set; } = 1; |
| | | |
| | | public Total() { } |
| | | |
| | |
| | | this.iScanCount = iScanCount; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 添加图像并更新轮胎计数 |
| | | /// </summary> |
| | | /// <param name="imageResult">图像检测结果</param> |
| | | /// <returns>是否完成一个轮胎</returns> |
| | | public bool AddImageResult(bool imageResult) |
| | | { |
| | | iImageCount++; |
| | | CurrentImageIndex++; |
| | | |
| | | // 检查是否完成一个轮胎 |
| | | if (CurrentImageIndex >= ImagesPerTyre) |
| | | { |
| | | TyreCount++; |
| | | CurrentImageIndex = 0; |
| | | |
| | | // 更新轮胎OK/NG计数(n张中任一NG则整胎NG) |
| | | if (imageResult) |
| | | TyreOK++; |
| | | else |
| | | TyreNG++; |
| | | |
| | | CurrentTyreID++; |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取轮胎良品率 |
| | | /// </summary> |
| | | public double TyreRateOK => TyreCount > 0 ? (TyreOK / (double)TyreCount) * 100 : 0; |
| | | |
| | | public void Clear() |
| | | { |
| | | iImageCount = 0; |
| | | iScanCount = 0; |
| | | TyreCount = 0; |
| | | CurrentImageIndex = 0; |
| | | TyreOK = 0; |
| | | TyreNG = 0; |
| | | CurrentTyreID = 1; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 重置轮胎计数(保留ImagesPerTyre配置) |
| | | /// </summary> |
| | | public void ResetTyreCount() |
| | | { |
| | | TyreCount = 0; |
| | | CurrentImageIndex = 0; |
| | | TyreOK = 0; |
| | | TyreNG = 0; |
| | | CurrentTyreID = 1; |
| | | } |
| | | } |
| | | public interface ICamera : IDisposable |
| | |
| | | bool StartWith_HardTriggerModel(TriggerSource hardtriggeritem = TriggerSource.Line0); |
| | | |
| | | /// <summary> |
| | | /// 等待硬触发获取图像 |
| | | /// 等待软/硬触发获取图像 |
| | | /// </summary> |
| | | /// <param name="bitmap"></param> |
| | | /// <param name="outtime"></param> |
| | |
| | | bool GetImageWithSoftTrigger(out Bitmap bitmap, int outtime = 3000); |
| | | |
| | | /// <summary> |
| | | /// 软触发 |
| | | /// 软触发单次 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | bool SoftTrigger(); |
| | | |
| | | /// <summary> |
| | | /// 连续采集模式 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | bool StartContinuousGrab(); |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region SettingConfig |