|
@@ -2,6 +2,7 @@
|
|
|
using System.Collections.Generic;
|
|
|
using System.IO;
|
|
|
using System.Linq;
|
|
|
+using System.Threading;
|
|
|
using System.Threading.Tasks;
|
|
|
using SkiaSharp;
|
|
|
using Vinno.DataManager.Infrastructure;
|
|
@@ -71,25 +72,40 @@ namespace WingAIDiagnosisService.URMManage
|
|
|
var processorClass = UrmProcessorList.FirstOrDefault(x => x.GUID == request.GUID);
|
|
|
processorClass.LastActiveTime = DateTime.UtcNow;
|
|
|
var processor = processorClass.Processor;
|
|
|
- //赋值
|
|
|
- processor.setUrmParams(RecordParams.UrmImageType, request.UrmImageType);
|
|
|
- processor.setUrmParams(RecordParams.UrmBlend, request.UrmBlend ? 2 : 0);
|
|
|
- processor.setUrmParams(RecordParams.URMDownSampleIndex, request.DownsampleIndex);
|
|
|
- processor.setUrmParams(RecordParams.URMIntPowerDen, request.IntPowerDen);
|
|
|
- processor.setUrmParams(RecordParams.URMIntPowerDir, request.IntPowerDir);
|
|
|
- processor.setUrmParams(RecordParams.URMSigmaGauss, request.SigmaGauss);
|
|
|
- processor.setUrmParams(RecordParams.URMVessScale, request.VessScale);
|
|
|
- processor.setUrmParams(RecordParams.URMVelMaxScaler, request.VelMaxScaler);
|
|
|
- processor.setUrmParams(RecordParams.URMVelMinScaler, request.VelMinScaler);
|
|
|
- processor.setUrmParams(RecordParams.URMIterations, request.Iterations);
|
|
|
- processor.setUrmBaseParam(request.Res, processorClass.DenArray, processorClass.DirArray, processorClass.VelArray, processorClass.AngleArray, processorClass.MaskArray, request.Urmsrcwidth, request.Urmsrcheight, request.ScaleOfPixel_x, request.ScaleOfPixel_y, request.ImgProcessVer);
|
|
|
- processor.setUrmDrawParam(request.ZoomOn, request.ZoomRoix, request.ZoomRoiy, request.ZoomRoiwidth, request.ZoomRoiheight, request.Roix, request.Roiy, request.Roiwidth, request.Roiheight, request.LeftRight, request.UpDown, request.ScreenWidth, request.ScreenHeight);
|
|
|
- processor.CalTracePointMask(request.UrmTraceDPoints);
|
|
|
- imgBase64 = processor.getURMImageBase64(true, ref urmMinVal, ref urmMaxVal);
|
|
|
- processorClass.UrmMinVal = urmMinVal;
|
|
|
- processorClass.UrmMaxVal = urmMaxVal;
|
|
|
- processorClass.HasDrawed = true;
|
|
|
- Logger.WriteLineInfo("AIDiagnosis DoUrmProcess end");
|
|
|
+ using (var mutex = new Mutex(false, request.GUID + DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss:f")))//同一个人100毫秒以内无法同时访问,避免server挂掉
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ mutex.WaitOne();
|
|
|
+ //赋值
|
|
|
+ processor.setUrmParams(RecordParams.UrmImageType, request.UrmImageType);
|
|
|
+ processor.setUrmParams(RecordParams.UrmBlend, request.UrmBlend ? 2 : 0);
|
|
|
+ processor.setUrmParams(RecordParams.URMDownSampleIndex, request.DownsampleIndex);
|
|
|
+ processor.setUrmParams(RecordParams.URMIntPowerDen, request.IntPowerDen);
|
|
|
+ processor.setUrmParams(RecordParams.URMIntPowerDir, request.IntPowerDir);
|
|
|
+ processor.setUrmParams(RecordParams.URMSigmaGauss, request.SigmaGauss);
|
|
|
+ processor.setUrmParams(RecordParams.URMVessScale, request.VessScale);
|
|
|
+ processor.setUrmParams(RecordParams.URMVelMaxScaler, request.VelMaxScaler);
|
|
|
+ processor.setUrmParams(RecordParams.URMVelMinScaler, request.VelMinScaler);
|
|
|
+ processor.setUrmParams(RecordParams.URMIterations, request.Iterations);
|
|
|
+ processor.setUrmBaseParam(request.Res, processorClass.DenArray, processorClass.DirArray, processorClass.VelArray, processorClass.AngleArray, processorClass.MaskArray, request.Urmsrcwidth, request.Urmsrcheight, request.ScaleOfPixel_x, request.ScaleOfPixel_y, request.ImgProcessVer);
|
|
|
+ processor.setUrmDrawParam(request.ZoomOn, request.ZoomRoix, request.ZoomRoiy, request.ZoomRoiwidth, request.ZoomRoiheight, request.Roix, request.Roiy, request.Roiwidth, request.Roiheight, request.LeftRight, request.UpDown, request.ScreenWidth, request.ScreenHeight);
|
|
|
+ processor.CalTracePointMask(request.UrmTraceDPoints);
|
|
|
+ imgBase64 = processor.getURMImageBase64(true, ref urmMinVal, ref urmMaxVal);
|
|
|
+ processorClass.UrmMinVal = urmMinVal;
|
|
|
+ processorClass.UrmMaxVal = urmMaxVal;
|
|
|
+ processorClass.HasDrawed = true;
|
|
|
+ Logger.WriteLineInfo("AIDiagnosis DoUrmProcess end");
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ WingServerCommon.Log.Logger.WriteLineInfo($"_urmProcessAlg.CalURMImg error :{ex}");
|
|
|
+ }
|
|
|
+ finally
|
|
|
+ {
|
|
|
+ mutex.ReleaseMutex();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
@@ -326,8 +342,9 @@ namespace WingAIDiagnosisService.URMManage
|
|
|
Logger.WriteLineInfo("AIDiagnosis DoUrmProcess InitURMProcessor init"); // 参数设置
|
|
|
var UrmProcessor = new URMProcess();
|
|
|
var URMProcessInitSuccess = UrmProcessor.init(request.FamilyName, request.TypeInfo, request.NativeId);
|
|
|
+
|
|
|
Logger.WriteLineInfo("AIDiagnosis DoUrmProcess InitURMProcessor setUrmParams");
|
|
|
-
|
|
|
+
|
|
|
processorClass = new URMProcessorClass
|
|
|
{
|
|
|
GUID = request.GUID,
|