Commit 290ed8de authored by 潘栩锋's avatar 潘栩锋 🚴

增加 边界查找添加期望宽度,当没穿过阀值线,肯定边界在有效范围外面,此时会用另一边测到的边界与期望宽度 推算出 有效范围外的边界位置

parent 715ebee6
......@@ -149,6 +149,9 @@
<Compile Include="OnInit\OnInitLanguage.cs" />
<Compile Include="OnInit\OnInitOSK.cs" />
<Compile Include="PasswordAuthorize.cs" />
<Compile Include="PgBorderSearchPlastic.xaml.cs">
<DependentUpon>PgBorderSearchPlastic.xaml</DependentUpon>
</Compile>
<Compile Include="PgBorderSearch.xaml.cs">
<DependentUpon>PgBorderSearch.xaml</DependentUpon>
</Compile>
......@@ -299,6 +302,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="PgBorderSearchPlastic.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="PgBorderSearch.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
......
......@@ -301,6 +301,25 @@
</StackPanel>
</StackPanel>
<StackPanel Margin="5">
<TextBlock Style="{StaticResource TextBlockStyle_FieldHeader}" Text="期望膜宽" />
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource TextBlockStyle_FieldContent}">
<Run Text="{Binding ProductWidth,Mode=OneWay}"/>
</TextBlock>
<TextBlock Style="{StaticResource TextBlockStyle_FieldContent_mm_interval}" Text="|"/>
<TextBlock Style="{StaticResource TextBlockStyle_FieldContent_mm}" >
<Run >
<MultiBinding Converter="{StaticResource p2mmconv}" Mode="OneWay" StringFormat="{}{0:F0}">
<Binding Path="ProductWidth" />
<Binding Path="DataContext.Encoder1_mmpp" ElementName="grid_initparam"/>
</MultiBinding>
</Run>
<Run Text="mm"/>
</TextBlock>
</StackPanel>
</StackPanel>
</WrapPanel>
<WindowsFormsHost Grid.Row="1" Margin="5">
<Chr:Chart x:Name="chart1"/>
......
......@@ -42,8 +42,8 @@ namespace FLY.Thick.Base.UI
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series_datas = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.Series series_border_forw = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.Series series_border_backw = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.Series series_border = new System.Windows.Forms.DataVisualization.Charting.Series();
//
// chart1
......@@ -128,44 +128,24 @@ namespace FLY.Thick.Base.UI
series_datas.ShadowColor = System.Drawing.Color.Black;
series_datas.ShadowOffset = 2;
series_border.Name = "series_border";
series_border.LegendText = "边界点";
series_border.ChartArea = chartArea1.Name;
series_border.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
series_border.Color = System.Drawing.Color.Violet;
series_border.BorderColor = System.Drawing.Color.DarkViolet;
series_border.BorderWidth = 3;
series_border_forw.Name = "series_border_forw";
series_border_forw.LegendText = "正向边界点";
series_border_forw.ChartArea = chartArea1.Name;
series_border_forw.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
series_border_forw.Color = System.Drawing.Color.Green;
series_border_forw.BorderColor = System.Drawing.Color.DarkGreen;
series_border_forw.BorderWidth = 3;
series_border_forw.MarkerSize = 6;
series_border_forw.MarkerStyle = System.Windows.Forms.DataVisualization.Charting.MarkerStyle.Circle;
series_border_forw.MarkerBorderColor = System.Drawing.Color.DarkGreen;
series_border_forw.MarkerColor = System.Drawing.Color.Green;
series_border_forw.ShadowColor = System.Drawing.Color.Black;
series_border_forw.ShadowOffset = 2;
series_border_backw.Name = "series_border_backw";
series_border_backw.LegendText = "反向边界点";
series_border_backw.ChartArea = chartArea1.Name;
series_border_backw.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
series_border_backw.Color = System.Drawing.Color.Orange;
series_border_backw.BorderColor = System.Drawing.Color.DarkOrange;
series_border_backw.BorderWidth = 3;
series_border_backw.MarkerSize = 6;
series_border_backw.MarkerStyle = System.Windows.Forms.DataVisualization.Charting.MarkerStyle.Circle;
series_border_backw.MarkerBorderColor = System.Drawing.Color.Orange;
series_border_backw.MarkerColor = System.Drawing.Color.DarkOrange;
series_border_backw.ShadowColor = System.Drawing.Color.Black;
series_border_backw.ShadowOffset = 2;
series_border.MarkerSize = 6;
series_border.MarkerStyle = System.Windows.Forms.DataVisualization.Charting.MarkerStyle.Circle;
series_border.MarkerBorderColor = System.Drawing.Color.DarkViolet;
series_border.MarkerColor = System.Drawing.Color.Violet;
series_border.ShadowColor = System.Drawing.Color.Black;
series_border.ShadowOffset = 2;
chart1.Series.Add(series_datas);
chart1.Series.Add(series_border_forw);
chart1.Series.Add(series_border_backw);
chart1.Series.Add(series_border);
#endregion
chart1.Name = "chart1";
......@@ -296,18 +276,6 @@ namespace FLY.Thick.Base.UI
BorderSearchService.PropertyChanged += MBorderSearchService_PropertyChanged;
BorderSearchService.Border_Forw.PropertyChanged += (s, e) =>
{
FObjBase.PollModule.Current.Poll_JustOnce(
UpdateBorder, this, MARKNO_UPDATE_BORDER);
};
BorderSearchService.Border_Backw.PropertyChanged += (s, e) =>
{
FObjBase.PollModule.Current.Poll_JustOnce(
UpdateBorder, this, MARKNO_UPDATE_BORDER);
};
InitParamService.PropertyChanged += MInitParamService_PropertyChanged;
UpdateX();
......@@ -341,8 +309,8 @@ namespace FLY.Thick.Base.UI
{
this.getViewReponse = retData as BorderSearchGetViewReponse;
UpdateDatas();
FObjBase.PollModule.Current.Poll_JustOnce(
UpdateBorder, this, MARKNO_UPDATE_BORDER);
UpdateBorder();
UpdateSensorWidth();
}, this);
}
private void Chart1_PrePaint(object sender, ChartPaintEventArgs e)
......@@ -510,11 +478,20 @@ namespace FLY.Thick.Base.UI
}
void UpdateBorder(System.Windows.Forms.DataVisualization.Charting.Series series, Misc.Range border)
void UpdateBorder()
{
System.Windows.Forms.DataVisualization.Charting.Series series = chart1.Series["series_border"];
series.Points.Clear();
if (getViewReponse == null)
return;
Misc.Range border = getViewReponse.border;
if (border == null)
return;
if (!border.IsValid)
return;
if (!UpdateBorder_pos(series, border.Begin))
return;
......@@ -522,33 +499,32 @@ namespace FLY.Thick.Base.UI
return;
}
void UpdateBorder()
{
UpdateBorder(chart1.Series["series_border_forw"], BorderSearchService.Border_Forw);
UpdateBorder(chart1.Series["series_border_backw"], BorderSearchService.Border_Backw);
UpdateSensorWidth();
}
void UpdateSensorWidth()
{
StripLinesCollection stripLines = chart1.ChartAreas[0].AxisX.StripLines;
stripLines.Clear();
if (getViewReponse == null)
return;
Misc.Range border = getViewReponse.border;
if (!BorderSearchService.Border_Forw.IsValid)
if (border == null)
return;
if (!border.IsValid)
return;
StripLine stripline = new StripLine();
stripline.BackColor = System.Drawing.Color.FromArgb(64, System.Drawing.Color.Green);
stripline.Interval = 0;
stripline.IntervalOffset = BorderSearchService.Border_Forw.Begin;
stripline.IntervalOffset = border.Begin;
stripline.StripWidth = BorderSearchService.SensorWidth;
stripLines.Add(stripline);
stripline = new StripLine();
stripline.BackColor = System.Drawing.Color.FromArgb(64, System.Drawing.Color.Green);
stripline.Interval = 0;
stripline.IntervalOffset = BorderSearchService.Border_Forw.End - BorderSearchService.SensorWidth;
stripline.IntervalOffset = border.End - BorderSearchService.SensorWidth;
stripline.StripWidth = BorderSearchService.SensorWidth;
stripLines.Add(stripline);
}
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Net;
using FLY.Thick.Base.Client;
using System.Windows.Forms.DataVisualization.Charting;
using System.Drawing;
using Unity;
using FLY.Thick.Base.IService;
using System.ComponentModel;
using Misc;
using GalaSoft.MvvmLight.Command;
using FLY.Thick.Base.Server;
namespace FLY.Thick.Base.UI
{
/// <summary>
/// Page_BorderSearch.xaml 的交互逻辑
/// </summary>
public partial class PgBorderSearchPlastic : Page
{
PgBorderSearchVm viewModel;
public PgBorderSearchPlastic()
{
InitializeComponent();
InitializeChart();
}
void InitializeChart()
{
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series_datas = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.Series series_border_forw = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.Series series_border_backw = new System.Windows.Forms.DataVisualization.Charting.Series();
//
// chart1
//
//this.chart1.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(211)), ((System.Byte)(223)), ((System.Byte)(240)));
//this.chart1.BackSecondaryColor = System.Drawing.Color.White;
//this.chart1.BackGradientStyle = System.Windows.Forms.DataVisualization.Charting.GradientStyle.TopBottom;
//this.chart1.BorderlineColor = System.Drawing.Color.FromArgb(((System.Byte)(26)), ((System.Byte)(59)), ((System.Byte)(105)));
//this.chart1.BorderlineDashStyle = System.Windows.Forms.DataVisualization.Charting.ChartDashStyle.Solid;
//this.chart1.BorderlineWidth = 2;
//this.chart1.BorderSkin.SkinStyle = System.Windows.Forms.DataVisualization.Charting.BorderSkinStyle.Emboss;
#region chartArea
#region chartArea1
chartArea1.Name = "chartArea1";
chartArea1.AxisX.IsLabelAutoFit = false;
chartArea1.AxisX.LabelStyle.Font = new System.Drawing.Font("Trebuchet MS", 8.25F, System.Drawing.FontStyle.Bold);
//chartArea1.AxisX.LabelStyle.IsEndLabelVisible = false;
chartArea1.AxisX.LineColor = System.Drawing.Color.FromArgb(((System.Byte)(64)), ((System.Byte)(64)), ((System.Byte)(64)), ((System.Byte)(64)));
chartArea1.AxisX.MajorGrid.LineColor = System.Drawing.Color.FromArgb(((System.Byte)(64)), ((System.Byte)(64)), ((System.Byte)(64)), ((System.Byte)(64)));
chartArea1.AxisX.Title = "位置(脉冲)";
chartArea1.AxisY.IsLabelAutoFit = false;
chartArea1.AxisY.LabelStyle.Font = new System.Drawing.Font("Trebuchet MS", 8.25F, System.Drawing.FontStyle.Bold);
chartArea1.AxisY.LineColor = System.Drawing.Color.FromArgb(((System.Byte)(64)), ((System.Byte)(64)), ((System.Byte)(64)), ((System.Byte)(64)));
chartArea1.AxisY.MajorGrid.LineColor = System.Drawing.Color.FromArgb(((System.Byte)(64)), ((System.Byte)(64)), ((System.Byte)(64)), ((System.Byte)(64)));
chartArea1.AxisY.Title = "AD值";
//chartArea1.AxisY.IsStartedFromZero = false;
chartArea1.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(64)), ((System.Byte)(165)), ((System.Byte)(191)), ((System.Byte)(228)));
chartArea1.BackSecondaryColor = System.Drawing.Color.White;
chartArea1.BackGradientStyle = System.Windows.Forms.DataVisualization.Charting.GradientStyle.TopBottom;
chartArea1.BorderColor = System.Drawing.Color.FromArgb(((System.Byte)(64)), ((System.Byte)(64)), ((System.Byte)(64)), ((System.Byte)(64)));
chartArea1.BorderDashStyle = System.Windows.Forms.DataVisualization.Charting.ChartDashStyle.Solid;
chartArea1.CursorX.IsUserEnabled = true;
chartArea1.CursorX.IsUserSelectionEnabled = true;
chartArea1.CursorX.SelectionColor = System.Drawing.SystemColors.Highlight;
chartArea1.CursorY.IsUserEnabled = true;
chartArea1.CursorY.IsUserSelectionEnabled = true;
chartArea1.CursorY.SelectionColor = System.Drawing.SystemColors.Highlight;
chartArea1.Position.Auto = true;
chartArea1.ShadowColor = System.Drawing.Color.Transparent;
#endregion
this.chart1.ChartAreas.Add(chartArea1);
#endregion
#region legend
legend1.Name = "legend1";
legend1.Docking = System.Windows.Forms.DataVisualization.Charting.Docking.Right;
legend1.Alignment = System.Drawing.StringAlignment.Far;
legend1.LegendStyle = LegendStyle.Column;
legend1.IsDockedInsideChartArea = true;
legend1.DockedToChartArea = chartArea1.Name;
legend1.IsTextAutoFit = false;
legend1.BackColor = System.Drawing.Color.Transparent;
legend1.Font = new System.Drawing.Font("Trebuchet MS", 8.25F, System.Drawing.FontStyle.Bold);
legend1.Position.Auto = true;
chart1.Legends.Add(legend1);
#endregion
#region series
series_datas.Name = "series_datas";
series_datas.BorderColor = System.Drawing.Color.FromArgb(((System.Byte)(180)), ((System.Byte)(26)), ((System.Byte)(59)), ((System.Byte)(105)));
series_datas.BorderWidth = 2;
series_datas.ChartArea = chartArea1.Name;
series_datas.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
series_datas.Color = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(65)))), ((int)(((byte)(140)))), ((int)(((byte)(240)))));
series_datas.LegendText = "AD数据";
series_datas.IsVisibleInLegend = true;
series_datas.XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Int32;
series_datas.YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Int32;
series_datas.ShadowColor = System.Drawing.Color.Black;
series_datas.ShadowOffset = 2;
series_border_forw.Name = "series_border_forw";
series_border_forw.LegendText = "正向边界点";
series_border_forw.ChartArea = chartArea1.Name;
series_border_forw.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
series_border_forw.Color = System.Drawing.Color.Green;
series_border_forw.BorderColor = System.Drawing.Color.DarkGreen;
series_border_forw.BorderWidth = 3;
series_border_forw.MarkerSize = 6;
series_border_forw.MarkerStyle = System.Windows.Forms.DataVisualization.Charting.MarkerStyle.Circle;
series_border_forw.MarkerBorderColor = System.Drawing.Color.DarkGreen;
series_border_forw.MarkerColor = System.Drawing.Color.Green;
series_border_forw.ShadowColor = System.Drawing.Color.Black;
series_border_forw.ShadowOffset = 2;
series_border_backw.Name = "series_border_backw";
series_border_backw.LegendText = "反向边界点";
series_border_backw.ChartArea = chartArea1.Name;
series_border_backw.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
series_border_backw.Color = System.Drawing.Color.Orange;
series_border_backw.BorderColor = System.Drawing.Color.DarkOrange;
series_border_backw.BorderWidth = 3;
series_border_backw.MarkerSize = 6;
series_border_backw.MarkerStyle = System.Windows.Forms.DataVisualization.Charting.MarkerStyle.Circle;
series_border_backw.MarkerBorderColor = System.Drawing.Color.Orange;
series_border_backw.MarkerColor = System.Drawing.Color.DarkOrange;
series_border_backw.ShadowColor = System.Drawing.Color.Black;
series_border_backw.ShadowOffset = 2;
chart1.Series.Add(series_datas);
chart1.Series.Add(series_border_forw);
chart1.Series.Add(series_border_backw);
#endregion
chart1.Name = "chart1";
chart1.Palette = System.Windows.Forms.DataVisualization.Charting.ChartColorPalette.BrightPastel;
//chart1.Location = new System.Drawing.Point(0, 0);
//chart1.PrePaint += Chart1_PrePaint;
}
[InjectionMethod]
public void Init(IBorderSearchService borderSearchService, IInitParamService initParamService,IDynAreaService dynAreaService)
{
viewModel = new PgBorderSearchVm();
viewModel.Init(borderSearchService, initParamService, dynAreaService, chart1);
this.DataContext = viewModel;
}
}
}
......@@ -96,6 +96,11 @@ namespace FLY.Thick.Base.Client
public int N3 { get; set; }
/// <summary>
/// 产品宽度,设置值 单位:脉冲
/// 当膜超过范围(没有经过阀值),就使用它,猜边界在哪
/// </summary>
public int ProductWidth { get; set; }
#endregion
......@@ -105,19 +110,7 @@ namespace FLY.Thick.Base.Client
}
public void Apply()
{
var p = new BORDERSEARCH_OBJ_INTERFACE.Pack_Params();
p.Enable = Enable;
p.TempADBySet = TempADBySet;
p.TempAD = TempAD;
p.TempRange = TempRange;
p.N = N;
p.N2 = N2;
p.N3 = N3;
p.Valid = Valid;
p.SensorWidth = SensorWidth;
p.IsBreakDetect = IsBreakDetect;
p.IsTempRangeByPercent = IsTempRangeByPercent;
p.TempRangePercent = TempRangePercent;
var p = BORDERSEARCH_OBJ_INTERFACE.Mapper.Map<BORDERSEARCH_OBJ_INTERFACE.Pack_Params>(this);
string json = Newtonsoft.Json.JsonConvert.SerializeObject(p);
//获取所有数据,设置推送
......
......@@ -99,6 +99,12 @@ namespace FLY.Thick.Base.IService
/// 数据更新时间
/// </summary>
DateTime UpdateTime { get; }
/// <summary>
/// 产品宽度,设置值 单位:脉冲
/// 当膜超过范围(没有经过阀值),就使用它,猜边界在哪
/// </summary>
int ProductWidth { get; }
#endregion
......@@ -122,5 +128,6 @@ namespace FLY.Thick.Base.IService
public int posOfGrid;
public int gridBegin;
public int[] dat;
public Range border;
}
}
......@@ -41,7 +41,7 @@ namespace FLY.Thick.Base.OBJ_INTERFACE
public int Width;
public int Mid;
public DateTime UpdateTime;
public int ProductWidth;
}
#endregion
#region GetValue
......
......@@ -18,61 +18,30 @@ namespace FLY.Thick.Base.Server
{
}
/// <summary>
/// 放入grid数据,分析边界
/// 找空气与膜均值的 中间位置
/// </summary>
/// <param name="direction"></param>
/// <param name="posOfGrid"></param>
/// <param name="gridBegin"></param>
/// <param name="dat"></param>
/// <returns></returns>
public override bool FindFilm(DIRECTION direction, int posOfGrid, int gridBegin, int[] dat)
void FindFilm_Mean(int[] dat, int sensor_grid, int n2_grid, ref int borderbegin_grid, ref int borderend_grid)
{
//把数据记录下来
getViewReponse = new BorderSearchGetViewReponse()
{
direction = direction,
posOfGrid = posOfGrid,
gridBegin = gridBegin,
dat = dat
};
UpdateTime = DateTime.Now;
//这些是AD值
//转为 dat 的序号
int validbegin_grid = Valid.Begin / posOfGrid - gridBegin;
int validend_grid = Valid.End / posOfGrid - gridBegin;
int borderbegin_grid;//validbegin_grid;
int borderend_grid;//validend_grid;
if (!FindFilm_Threshold(dat, validbegin_grid, validend_grid, TempAD, TempRange, out borderbegin_grid, out borderend_grid))
return false;
//N2 只是用来判断一下膜够不够宽而已,没用
int N2_grid = (N2 * 3 + SensorWidth) / posOfGrid;
if ((borderend_grid - borderbegin_grid) < N2_grid)//膜太短
return false;
Range r1_grid = new Range();
//算膜中间的平均值
r1_grid.Begin = borderbegin_grid+(SensorWidth + N2) / posOfGrid;
r1_grid.End = borderend_grid-(SensorWidth + N2) / posOfGrid;
r1_grid.Begin = borderbegin_grid + sensor_grid + n2_grid;
r1_grid.End = borderend_grid - (sensor_grid + n2_grid);
int avg = MyMath.Avg(dat, r1_grid.Begin, r1_grid.End);
//算空气的平均值
Range r2_grid = new Range();
r2_grid.Begin = borderbegin_grid - (SensorWidth) / posOfGrid;
r2_grid.End = borderend_grid + (SensorWidth) / posOfGrid;
r2_grid.Begin = borderbegin_grid - sensor_grid;
r2_grid.End = borderend_grid + sensor_grid;
if (r2_grid.Begin < 0)
r2_grid.Begin = 0;
if (r2_grid.End > dat.Length - 1)
r2_grid.End = dat.Length - 1;
int avg1 = MyMath.Avg(dat, 0,r1_grid.Begin);
int avg2 = MyMath.Avg(dat, r1_grid.End, dat.Length-1);
int avg1 = MyMath.Avg(dat, 0, r1_grid.Begin);
int avg2 = MyMath.Avg(dat, r1_grid.End, dat.Length - 1);
int threshold;
if ((Misc.MyBase.ISVALIDATA(avg1)) && (Misc.MyBase.ISVALIDATA(avg2)))
{
......@@ -113,23 +82,70 @@ namespace FLY.Thick.Base.Server
}
}
}
}
/// <summary>
/// 放入grid数据,分析边界
/// </summary>
/// <param name="direction"></param>
/// <param name="posOfGrid"></param>
/// <param name="gridBegin"></param>
/// <param name="dat"></param>
/// <returns></returns>
public override bool FindFilm(DIRECTION direction, int posOfGrid, int gridBegin, int[] dat)
{
//把数据记录下来
getViewReponse = new BorderSearchGetViewReponse()
{
direction = direction,
posOfGrid = posOfGrid,
gridBegin = gridBegin,
dat = dat
};
UpdateTime = DateTime.Now;
//这些是AD值
//转为 dat 的序号
int validbegin_grid = Valid.Begin / posOfGrid - gridBegin;
int validend_grid = Valid.End / posOfGrid - gridBegin;
if (!FindFilm_Threshold(dat,
validbegin_grid, validend_grid,
out int borderbegin_grid, out int borderend_grid,
out bool isBorderBeginOk, out bool isBorderEndOk))
{
return false;
}
//N2 只是用来判断一下膜够不够宽而已,没用
int N2_grid = (N2 * 3 + SensorWidth) / posOfGrid;
if ((borderend_grid - borderbegin_grid) < N2_grid)//膜太短
return false;
FindFilm_Mean(dat, SensorWidth / posOfGrid, N2 / posOfGrid, ref borderbegin_grid, ref borderend_grid);
int idx = (direction == DIRECTION.FORWARD) ? 0 : 1;
var border = borders[idx];
int idx = 0;
if (direction == DIRECTION.BACKWARD)
idx = 1;
//转为 脉冲
border[idx].Begin = (borderbegin_grid + gridBegin) * posOfGrid - SensorWidth / 2;
border[idx].End = (borderend_grid + gridBegin) * posOfGrid + SensorWidth / 2;
border.value.Begin = (borderbegin_grid + gridBegin) * posOfGrid;
border.value.End = (borderend_grid + gridBegin) * posOfGrid;
border.isBeginOk = true;
border.isEndOk = true;
border.UpdateReal(SensorWidth);
getViewReponse.border = border.value;
if (border.All(b => b.IsValid))
if (borders.All(b => b.value.IsValid))
{
Border.Begin = (int)(border.Average(b => b.Begin) + SensorWidth / 2.0);
Border.End = (int)(border.Average(b => b.End) - SensorWidth / 2.0);
Border.Begin = (int)borders.Average(b => b.real.Begin);
Border.End = (int)borders.Average(b => b.real.End);
}
else if (border[idx].IsValid)
else if (border.value.IsValid)
{
Border.Begin = border[idx].Begin + SensorWidth / 2;
Border.End = border[idx].End - SensorWidth / 2;
Border.Copy(border.real);
}
Width = Border.Width;
Mid = Border.Mid;
......
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