From 3322022068ab818912d6f5d9e5eb31f51cc639c2 Mon Sep 17 00:00:00 2001 From: patrick.xu <patrick.xu@broconcentric.com> Date: 星期四, 24 二月 2022 09:12:30 +0800 Subject: [PATCH] 添加配置文件的DataShift2 --- src/Bro.Common.Device/DeviceBase/CameraBase.cs | 94 +++++++++++++++++++++++++--------------------- 1 files changed, 51 insertions(+), 43 deletions(-) diff --git a/src/Bro.Common.Device/DeviceBase/CameraBase.cs b/src/Bro.Common.Device/DeviceBase/CameraBase.cs index a7f721c..6a5accc 100644 --- a/src/Bro.Common.Device/DeviceBase/CameraBase.cs +++ b/src/Bro.Common.Device/DeviceBase/CameraBase.cs @@ -152,10 +152,10 @@ set.IsOriginSaved = !set.ImageSaveOption.IsSaveOriginImage; set.IsFitSaved = !set.ImageSaveOption.IsSaveFitImage; - set.IsAddtionalSaved = !string.IsNullOrWhiteSpace(set.ImageSaveOption.AddtionalSaveType); - set.OnImageSetTimeout += ImageSet_OnImageSetTimeout; + set.IsAddtionalSaved = string.IsNullOrWhiteSpace(set.ImageSaveOption.AddtionalSaveType); + //set.OnImageSetTimeout += ImageSet_OnImageSetTimeout; - _imageSetList.Add(set); + _imageSetList[set.Id] = set; } /// <summary> @@ -175,15 +175,16 @@ #endregion #region 鍥剧墖缂撳瓨/淇濆瓨 - public readonly ConcurrentBag<IImageSet> _imageSetList = new ConcurrentBag<IImageSet>(); + //public readonly ConcurrentBag<IImageSet> _imageSetList = new ConcurrentBag<IImageSet>(); + protected Dictionary<string, IImageSet> _imageSetList = new Dictionary<string, IImageSet>(); public void NewImageSet(IImageSet set) { set.IsOriginSaved = !set.ImageSaveOption.IsSaveOriginImage; set.IsFitSaved = !set.ImageSaveOption.IsSaveFitImage; - set.IsAddtionalSaved = !string.IsNullOrWhiteSpace(set.ImageSaveOption.AddtionalSaveType); - set.OnImageSetTimeout += ImageSet_OnImageSetTimeout; - _imageSetList.Add(set); + set.IsAddtionalSaved = string.IsNullOrWhiteSpace(set.ImageSaveOption.AddtionalSaveType); + //set.OnImageSetTimeout += ImageSet_OnImageSetTimeout; + _imageSetList[set.Id] = set; } //public virtual async void UpdateFitElements(List<IShapeElement> eleList, string imgSetId) @@ -201,7 +202,7 @@ OnImageUpdated?.Invoke(this, showImage, imgSetId); }); - IImageSet set = _imageSetList.FirstOrDefault(u => u.Id == imgSetId); + IImageSet set = _imageSetList[imgSetId]; if (set == null) return; @@ -236,7 +237,7 @@ if (eleList.Count > 0) OnElementsUpdated?.BeginInvoke(this, eleList, imgSetId, null, null); - IImageSet set = _imageSetList.FirstOrDefault(u => u.Id == imgSetId); + IImageSet set = _imageSetList[imgSetId]; if (set == null) return; @@ -300,7 +301,7 @@ { await Task.Run(() => { - IImageSet set = _imageSetList.FirstOrDefault(u => u.Id == imgSetId); + IImageSet set = _imageSetList[imgSetId]; if (set == null) return; @@ -366,7 +367,7 @@ //private Timer clearImageSetTimer = null; - public void ClearImageSet(IImageSet set) + public virtual void ClearImageSet(IImageSet set) { try { @@ -375,9 +376,10 @@ // && (!set.ImageSaveOption.IsSaveNGImage || set.IsNGSaved)) if (set.IsOriginSaved && set.IsFitSaved && set.IsAddtionalSaved) { - _imageSetList.TryTake(out set); set.Dispose(); - //LogAsync(DateTime.Now, $"绉婚櫎鍥剧墖淇℃伅锛屽綋鍓嶇紦瀛樻暟閲忥細{_imageSetList.Count}", ""); + + _imageSetList.Remove(set.Id); + LogAsync(DateTime.Now, $"绉婚櫎鍥剧墖淇℃伅锛屽綋鍓嶇紦瀛樻暟閲忥細{_imageSetList.Count}", ""); } //bool flag = false; @@ -395,17 +397,17 @@ } } - public void ClearImageSet(string imgSetId) - { - IImageSet set = _imageSetList.First(u => u.Id == imgSetId); - if (set != null) - ClearImageSet(set); - } + //public void ClearImageSet(string imgSetId) + //{ + // IImageSet set = _imageSetList[imgSetId]; + // if (set != null) + // ClearImageSet(set); + //} - private void ImageSet_OnImageSetTimeout(ImageSet set) - { - ClearImageSet(set); - } + //private void ImageSet_OnImageSetTimeout(ImageSet set) + //{ + // ClearImageSet(set); + //} //private void ClearImageSetPeriodically() //{ @@ -539,11 +541,11 @@ }); } - protected async void Generate16GrayImageByPointer(int width, int height, IntPtr dataPtr, string imgSetId) + protected async Task Generate16GrayImageByPointer(int width, int height, IntPtr dataPtr, string imgSetId) { await Task.Run(() => { - Thread.Sleep(1000); + //Thread.Sleep(1000); int widthIn4 = (int)Math.Ceiling(width / 4.0) * 4; Bitmap bmp = new Bitmap(widthIn4, height, PixelFormat.Format48bppRgb); @@ -783,7 +785,7 @@ [Category("鍥剧墖淇濆瓨")] [Description("鏄惁淇濆瓨鍘熷鍥剧墖")] [DisplayName("淇濆瓨鍘熷鍥剧墖")] - public bool IsSaveOriginImage { get; set; } = true; + public bool IsSaveOriginImage { get; set; } = false; [Category("鍥剧墖淇濆瓨")] [Description("鍥剧墖淇濆瓨鏍煎紡")] @@ -833,7 +835,7 @@ } } - public interface IImageSet : IDisposable + public interface IImageSet:IDisposable { DateTime InitialTime { get; set; } string Id { get; } @@ -847,7 +849,12 @@ bool IsFitSaved { get; set; } bool IsAddtionalSaved { get; set; } - event Action<ImageSet> OnImageSetTimeout; + //event Action<ImageSet> OnImageSetTimeout; + + /// <summary> + /// 搴忓垪鍖栨搷浣滅殑鍥惧儚淇℃伅 + /// </summary> + string ImageData { get; set; } } public class ImageSet : IImageSet @@ -887,29 +894,30 @@ public object SaveLock { get; set; } = new object(); - public event Action<ImageSet> OnImageSetTimeout; - private Timer autoDisposeTimer = null; + public virtual string ImageData { get; set; } - private void OnAutoDispose(object state) - { - OnImageSetTimeout?.Invoke(this); - } + //public event Action<ImageSet> OnImageSetTimeout; + //private Timer autoDisposeTimer = null; - public ImageSet() + public void Dispose(object state) { - autoDisposeTimer = new Timer(OnAutoDispose, null, -1, 10 * 1000); + //OnImageSetTimeout?.Invoke(this); + + //autoDisposeTimer.Change(-1, -1); + //autoDisposeTimer.Dispose(); + + Image?.Dispose(); + Image = null; } public virtual void Dispose() { - autoDisposeTimer.Change(-1, -1); - autoDisposeTimer.Dispose(); + Dispose(null); + } - Image?.Dispose(); - Image = null; - - HImage?.Dispose(); - HImage = null; + public ImageSet() + { + //autoDisposeTimer = new Timer(Dispose, null, 10 * 1000, -1); } #endregion } -- Gitblit v1.8.0