Commit 3dfc2a4d authored by 潘栩锋's avatar 潘栩锋 🚴

添加 扫描测厚 在PgBlowingExt 添加原始扫描图的查看

parent 6da8155f
......@@ -15,7 +15,7 @@ namespace FLY.FeedbackRenZiJia.Server
/// </summary>
class HeatCheck:IHeatCheck,INotifyPropertyChanged
{
const int HEAT_WAIT = 3;//3s
//const int HEAT_WAIT = 3;//3s
HeatCell mHeatCell;
enum CHECK_MODE
......@@ -187,7 +187,7 @@ namespace FLY.FeedbackRenZiJia.Server
#endregion
#endregion
public int HEAT_WAIT { get; set; } = 3;
public void Init(HeatCell heatCell)
{
mHeatCell = heatCell;
......
......@@ -187,12 +187,21 @@ namespace FLY.Thick.BlowingScan.UI.Client
markdata.StartTime = scanInfo.StartTime;
markdata.ThicksDT = scanInfo.ThicksDT;
markdata.Thks = scanInfo.thks;
double avg = scanInfo.thks.AverageNoNull();
if (!double.IsNaN(avg) && avg > 10)
markdata.Sigma2Percent = scanInfo.thks.Sigma() * 2 / avg * 100;
else
markdata.Sigma2Percent = double.NaN;
markdata.R = scanInfo.R;
markdata.Direction = scanInfo.Direction;
markdata.Border = flydata.FilmRange;
markdata.PosOfGrid = flydata.PosOfGrid;
markdata.Time = flydata.Time;
markdata.Frame = flydata.Thks;
markdata.FrameAvg = scanInfo.frame.Select(spc => spc.thk).AverageNoNull();
}
else
{
......@@ -1431,7 +1440,7 @@ namespace FLY.Thick.BlowingScan.UI.Client
ScanInfoList[i].IsFocus2 = false;
}
if (idx1 > 0)
if (idx1 >= 0)
{
ScanInfoList[idx1].IsFocus = true;
foreach (int i in ScanInfoList[idx1].solveMember)
......@@ -1440,7 +1449,7 @@ namespace FLY.Thick.BlowingScan.UI.Client
}
}
if (idx2 > 0)
if (idx2 >= 0)
{
ScanInfoList[idx2].IsFocus2 = true;
foreach (int i in ScanInfoList[idx2].solveMember)
......@@ -1574,12 +1583,24 @@ namespace FLY.Thick.BlowingScan.UI.Client
/// <summary>
/// 一幅数据
/// 解方程后的 一幅数据
/// </summary>
[PropertyChanged.DoNotCheckEquality]
public double[] Thks { get; set; }
/// <summary>
/// Thks 的 2sigma %
/// </summary>
public double Sigma2Percent { get; set; }
/// <summary>
/// 横向扫描图, 数据颗粒度 是 grid
/// </summary>
public double[] Frame { get; set; }
/// <summary>
/// 横向扫描图 的均值
/// </summary>
public double FrameAvg { get; set; }
/// <summary>
/// 膜边界,单位脉冲
/// </summary>
......
......@@ -30,6 +30,8 @@ namespace FLY.Thick.BlowingScan.UI.Client
#region 曲线
public XYRangeSlider FrameGraphYRangeSlider { get; private set; }
/// <summary>
/// 画在图上的 速度曲线,限制最多100个数据
/// </summary>
......@@ -67,6 +69,16 @@ namespace FLY.Thick.BlowingScan.UI.Client
/// </summary>
public ChartValues<double> Solve2Values { get; } = new ChartValues<double>();
/// <summary>
/// 记录1 横向图
/// </summary>
public ChartValues<double> Frame1Values { get; } = new ChartValues<double>();
/// <summary>
/// 记录2 横向图
/// </summary>
public ChartValues<double> Frame2Values { get; } = new ChartValues<double>();
/// <summary>
/// 转向信号
/// </summary>
......@@ -165,6 +177,8 @@ namespace FLY.Thick.BlowingScan.UI.Client
public RelayCommand ApplyFilmLength3DCmd { get; private set; }
public RelayCommand ClearFilmLength3DCmd { get; private set; }
public RelayCommand AutoFrameGraphYRangeCmd { get; private set; }
#endregion
public CalFilmLen Cfl { get; protected set; }
......@@ -178,6 +192,8 @@ namespace FLY.Thick.BlowingScan.UI.Client
public PgBlowingExtVm() {
#region 界面配置
FrameGraphYRangeSlider = new XYRangeSlider() { MinRange = 5, SliderMax = 500, SliderMin = -10 };
FrameGraphYRangeSlider.Init();
MapperTv = Mappers.Xy<TimeValue>()
.X(value => value.Time.Ticks)
.Y(value => value.Value);
......@@ -212,6 +228,7 @@ namespace FLY.Thick.BlowingScan.UI.Client
UpdateFilmLength3DCmd = new RelayCommand(UpdateFilmLength3D);
ApplyFilmLength3DCmd = new RelayCommand(ApplyFilmLength3D);
ClearFilmLength3DCmd = new RelayCommand(ClearFilmLength3D);
AutoFrameGraphYRangeCmd = new RelayCommand(AutoFrameGraphYRange);
}
......@@ -390,12 +407,17 @@ namespace FLY.Thick.BlowingScan.UI.Client
if (markdata.IsValid == false)
{
dispatcherObject.Dispatcher.Invoke(new Action<MarkData>(UpdateSolveGraph), markdata);
dispatcherObject.Dispatcher.Invoke(new Action<MarkData>(UpdateFrameGragh), markdata);
}
}
if (e.PropertyName == nameof(MarkData.Thks))
else if (e.PropertyName == nameof(MarkData.Thks))
{
dispatcherObject.Dispatcher.Invoke(new Action<MarkData>(UpdateSolveGraph), markdata);
}
else if (e.PropertyName == nameof(MarkData.Frame))
{
dispatcherObject.Dispatcher.Invoke(new Action<MarkData>(UpdateFrameGragh), markdata);
}
}
/// <summary>
......@@ -403,26 +425,80 @@ namespace FLY.Thick.BlowingScan.UI.Client
/// </summary>
void UpdateSolveGraph(MarkData markdata)
{
ChartValues<double> solveValues;
if (markdata == Anaylze.MarkNo1)
{
solveValues = Solve1Values;
}
else {
solveValues = Solve2Values;
}
solveValues.Clear();
ChartValues<double> values = (markdata == Anaylze.MarkNo1) ? Solve1Values : Solve2Values;
values.Clear();
if (!markdata.IsValid)
return;
//TODO 需要转为%吗?
double[] datas = markdata.Thks;
if (datas.Any(d => double.IsNaN(d)))
return;
solveValues.AddRange(datas);
values.AddRange(datas);
}
void UpdateFrameGragh(MarkData markdata)
{
ChartValues<double> values = (markdata == Anaylze.MarkNo1) ? Frame1Values : Frame2Values;
values.Clear();
if (!markdata.IsValid)
return;
double[] datas = markdata.Frame;
values.AddRange(datas);
updateFrameGraphYRange();
}
void updateFrameGraphYRange()
{
List<double> datas = new List<double>();
datas.AddRange(Frame1Values.Where(d => !double.IsNaN(d)));
datas.AddRange(Frame2Values.Where(d => !double.IsNaN(d)));
if (datas.Count() <=10 )
return;//异常
//设置Y轴范围
double max = datas.Max();
double min = datas.Min();
double mid = (max + min) / 2;
//扩大1.5倍显示
double range = max - min;
if (range < 1)//异常
return;
range *= 1.5;
FrameGraphYRangeSlider.SliderMin = mid - range / 2;
FrameGraphYRangeSlider.SliderMax = mid + range / 2;
//FrameGraphYRangeSlider.SetLowerUpper(min - range / 4, max + range / 4);
}
void AutoFrameGraphYRange()
{
List<double> datas = new List<double>();
datas.AddRange(Frame1Values.Where(d => !double.IsNaN(d)));
datas.AddRange(Frame2Values.Where(d => !double.IsNaN(d)));
if (datas.Count() <= 10)
return;//异常
//设置Y轴范围
double max = datas.Max();
double min = datas.Min();
double mid = (max + min) / 2;
//扩大1.5倍显示
double range = max - min;
if (range < 1)//异常
return;
range *= 1.5;
FrameGraphYRangeSlider.SliderMin = mid - range / 2;
FrameGraphYRangeSlider.SliderMax = mid + range / 2;
FrameGraphYRangeSlider.SetFullView();
}
void UpdateIsRunning()
{
if (Anaylze.IsStep2Ing || Cfl.IsDownloading)
......@@ -739,4 +815,90 @@ namespace FLY.Thick.BlowingScan.UI.Client
}
#endregion
}
/// <summary>
/// 范围调整器
/// </summary>
public class XYRangeSlider : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// 拖拉条 最大值
/// </summary>
public double SliderMax { get; set; }
/// <summary>
/// 拖拉条 最小值
/// </summary>
public double SliderMin { get; set; }
/// <summary>
/// 拖拉条 当前上值
/// </summary>
public double SliderUpperValue { get; set; }
/// <summary>
/// 拖拉条 当前下值
/// </summary>
public double SliderLowerValue { get; set; }
public double Max { get; private set; }
public double Min { get; private set; }
public double MinRange { get; set; } = 100;
#region
public void Init()
{
SetLowerUpper(SliderMin, SliderMax);
}
void update()
{
if (Math.Abs(SliderUpperValue - SliderLowerValue) < MinRange)
{
//异常,不能小于100
int avg = (int)((SliderUpperValue + SliderLowerValue) / 2);
SliderUpperValue = avg + MinRange / 2;
SliderLowerValue = avg - MinRange / 2;
}
Max = SliderUpperValue;
Min = SliderLowerValue;
}
public void SetLowerUpper(double lower, double upper)
{
this.PropertyChanged -= YRangeSliderUpperLowerValue_PropertyChanged;
SliderLowerValue = lower;
SliderUpperValue = upper;
update();
this.PropertyChanged += YRangeSliderUpperLowerValue_PropertyChanged;
}
public void SetFullView()
{
SetLowerUpper(SliderMin, SliderMax);
}
private void YRangeSliderUpperLowerValue_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(SliderUpperValue))
{
update();
}
else if (e.PropertyName == nameof(SliderLowerValue))
{
update();
}
else if (e.PropertyName == nameof(SliderMax))
{
if (SliderUpperValue > SliderMax)
SliderUpperValue = SliderMax;
}
else if (e.PropertyName == nameof(SliderMin))
{
if (SliderLowerValue < SliderMin)
SliderLowerValue = SliderMin;
}
}
#endregion
}
}
{
"InstallZipVersion":"7.8.0.0",
"InstallZipUrl":"http://server.flyautomation.net:8889/download/和美安装包_v7.8.0.0_20230228.7z"
"InstallZipUrl":"http://server.flyautomation.net:8889/download/和美安装包_v7.8.0.0_20230323.7z"
}
\ No newline at end of file
......@@ -12,7 +12,6 @@
<register type="IUiModule2" mapTo="UiModule2_DynAreaWinder" name="winder_da" />
<register type="IUiModule2" mapTo="UiModule2_MainPanel" name="winder_mp" />
<register type="IUiModule2" mapTo="UiModule2_CenterWinderPanel" name="winder_cwp" />
<register type="IUiModule2" mapTo="UiModule2_MainPanel2" name="winder_mp2" />
</container>
</unity>
</configuration>
\ No newline at end of file
......@@ -12,7 +12,6 @@
<register type="IUiModule2" mapTo="UiModule2_DynAreaWinder" name="winder_da" />
<register type="IUiModule2" mapTo="UiModule2_MainPanel" name="winder_mp" />
<register type="IUiModule2" mapTo="UiModule2_CenterWinderPanel" name="winder_cwp" />
<register type="IUiModule2" mapTo="UiModule2_MainPanel2" name="winder_mp2" />
</container>
</unity>
</configuration>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment