Commit 88b4c13d authored by 潘栩锋's avatar 潘栩锋 🚴
parents 3b7b11a9 452e223a
......@@ -156,6 +156,9 @@
<Setter TargetName="Path_block" Property="Canvas.Left" Value="4"/>
<Setter TargetName="Path_Background" Property="Fill" Value="#FF3B3B3B"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="Path_Background" Property="Opacity" Value="0.7"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
......
......@@ -116,6 +116,11 @@ namespace FLY.ControlLibrary
if (isRunning)
{
//重新播放!!
if (audioFile == null)
{
stopMusic();
return;
}
audioFile.Position = 0;
outputDevice.Play();
}
......
......@@ -30,6 +30,7 @@ namespace Misc
cell.IsConverted = true;
cells.Add(cell);
ValueChanged?.Invoke(this, new ParamDictionaryValueChangedEventArgs() { Key = key, Value = value });
Save();
}
else
{
......@@ -37,8 +38,8 @@ namespace Misc
if (cell.Value != value)
{
cell.Value = value;
//cell.Type = value.GetType();
ValueChanged?.Invoke(this, new ParamDictionaryValueChangedEventArgs() { Key = key, Value = value });
Save();
}
}
}
......@@ -181,7 +182,7 @@ namespace Misc
this.path = path;
Load();
}
public void Load()
void Load()
{
if (!File.Exists(path))
return;
......
......@@ -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>
......
......@@ -148,20 +148,24 @@ namespace FLY.Thick.Base.UI
{
this.jsonDist.SetValue(JSONDIST_KEY, JObject.FromObject(db));
}
/// <summary>
/// 输入密码,确认密码权限是否满足要求, level越大,要求权限越大
/// </summary>
/// <param name="pw"></param>
/// <param name="level"></param>
/// <param name="pw">密码</param>
/// <param name="level">要求级别</param>
/// <param name="pw_lv">输入密码的级别</param>
/// <returns></returns>
public AUTHORIZE_RESULT Authorize(string pw, int level)
public AUTHORIZE_RESULT Authorize(string pw, int level, out int pw_lv)
{
pw_lv = 0;
if (level <= 0)
return AUTHORIZE_RESULT.OK;
var v = from p in Db.Pws where p.Password == pw select p;
if (v.Count() > 0)
{
pw_lv = v.First().Level;
if (v.First().Level >= level)
return AUTHORIZE_RESULT.OK;
else
......@@ -175,9 +179,9 @@ namespace FLY.Thick.Base.UI
/// <param name="pw"></param>
/// <param name="uiName">界面名称</param>
/// <returns></returns>
public AUTHORIZE_RESULT Authorize(string pw, string uiName)
public AUTHORIZE_RESULT Authorize(string pw, string uiName, out int pw_lv)
{
return Authorize(pw, GetLv(uiName));
return Authorize(pw, GetLv(uiName),out pw_lv);
}
/// <summary>
/// 获取授权级别, 0级不需要密码就能通过
......
......@@ -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;
}
}
}
......@@ -28,7 +28,5 @@
<StackPanel x:Name="spSections">
</StackPanel>
</ScrollViewer>
<Button Style="{StaticResource ButtonStyle_apply}" VerticalAlignment="Bottom" Margin="0,0,20,-45"
Click="btnApplyClick"/>
</Grid>
</Page>
......@@ -45,12 +45,5 @@ namespace FLY.Thick.Base.UI
spSections.Children.Add(uc);
}
}
private void btnApplyClick(object sender, RoutedEventArgs e)
{
paramDictionary.Save();
FLY.ControlLibrary.Window_Tip.Show("成功", "",
TimeSpan.FromSeconds(2));
return;
}
}
}
......@@ -51,12 +51,12 @@ namespace FLY.Thick.Base.UI
//窗口显示数据条数
int windowSize = this.paramDictionary.GetValue<int>(ParamDistItemKeys.WindowSize, 30);
mWindow = new BufferWindow<FlyData_WarningHistory>(this.warningService.NewestList, windowSize);
mWindow.PropertyChanged += (s, e) =>
{
if (e.PropertyName == "Size")
{
this.paramDictionary.SetValue(ParamDistItemKeys.WindowSize, mWindow.Size);
this.paramDictionary.Save();
}
};
......
......@@ -182,7 +182,7 @@
</StackPanel>
<StackPanel Orientation="Horizontal">
<StackPanel Margin="{StaticResource ControlMargin}">
<TextBlock Style="{StaticResource TextBlockStyle_FieldHeaderEditable}" Text="数据有时扫描" />
<TextBlock Style="{StaticResource TextBlockStyle_FieldHeaderEditable}" Text="数据有时扫描" />
<ToggleButton Style="{StaticResource ToggleButtonStyle1}" IsChecked="{Binding AutoF1F3}" HorizontalAlignment="Left"/>
</StackPanel>
<StackPanel Margin="{StaticResource ControlMargin}">
......
......@@ -38,6 +38,10 @@ namespace FLY.Thick.Base.UI
/// </summary>
int Level = 0;
/// <summary>
/// 输入密码,查询到的级别
/// </summary>
public int PwLv { get; private set; }
/// <summary>
///
/// </summary>
......@@ -45,6 +49,18 @@ namespace FLY.Thick.Base.UI
/// <returns></returns>
public static bool Authorize(string uiName)
{
return Authorize(uiName, out int pwLv);
}
/// <summary>
///
/// </summary>
/// <param name="uiName">界面</param>
/// <param name="pwLv">当密码正确时,密码的级别</param>
/// <returns></returns>
public static bool Authorize(string uiName, out int pwLv)
{
pwLv = 0;
//从容器获取
var container = Application.Current.Properties["container"] as IUnityContainer;
if (container == null)
......@@ -56,9 +72,37 @@ namespace FLY.Thick.Base.UI
return true;
WdPassword w = new WdPassword();
w.Init(passwordAuthorize,level);
w.Init(passwordAuthorize, level);
w.Owner = Application.Current.MainWindow;
bool ret = (bool)w.ShowDialog();
pwLv = w.PwLv;
return ret;
}
/// <summary>
///
/// </summary>
/// <param name="level">要求的级别</param>
/// <param name="pwLv">当密码正确时,密码的级别</param>
/// <returns></returns>
public static bool Authorize(int level, out int pwLv)
{
pwLv = 0;
//从容器获取
var container = Application.Current.Properties["container"] as IUnityContainer;
if (container == null)
return true;
var passwordAuthorize = container.Resolve<PasswordAuthorize>();
if (level <= 0)
return true;
WdPassword w = new WdPassword();
w.Init(passwordAuthorize, level);
w.Owner = Application.Current.MainWindow;
return (bool)w.ShowDialog();
bool ret = (bool)w.ShowDialog();
pwLv = w.PwLv;
return ret;
}
private void button_apply_Click(object sender, RoutedEventArgs e)
{
......@@ -70,7 +114,8 @@ namespace FLY.Thick.Base.UI
}
AUTHORIZE_RESULT r = passwordAuthorize.Authorize(passwordbox.Password, Level);
AUTHORIZE_RESULT r = passwordAuthorize.Authorize(passwordbox.Password, Level, out int pwLv);
PwLv = pwLv;
switch (r)
{
case AUTHORIZE_RESULT.OK:
......
......@@ -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)
{
//把数据记录下来
getViewReponse = new BorderSearchGetViewReponse()
void FindFilm_Mean(int[] dat, int sensor_grid, int n2_grid, ref int borderbegin_grid, ref int borderend_grid)
{
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;
......
......@@ -20,6 +20,12 @@ namespace FLY.Thick.Base.Server
[JsonObject(MemberSerialization.OptIn)]
public class GSample : IGetSampleService
{
/// <summary>
/// 报警测试
/// </summary>
public static FLY.OBJComponents.Common.ERRNO SAMPLE_ERRNO_Failure = new FLY.OBJComponents.Common.ERRNO() { Code = 60, Descrption = "样品取样出错" };
#region IGetSampleService 接口
/// <summary>
......@@ -92,7 +98,7 @@ namespace FLY.Thick.Base.Server
TempFilter2[] tempFilters;
DIRECTION[] directions;
IGageInfoService mGageInfo;
OBJComponents.Server.WarningSystem warningSystem;
FlyAD7 flyad;
public event SampleChangedEventHandler SampleChangedEvent;
......@@ -156,9 +162,12 @@ namespace FLY.Thick.Base.Server
Load();
}
public void Init(IGageInfoService gageInfo)
public void Init(
IGageInfoService gageInfo,
OBJComponents.Server.WarningSystem warningSystem)
{
this.mGageInfo = gageInfo;
this.warningSystem = warningSystem;
}
public bool Load()
......@@ -359,7 +368,7 @@ namespace FLY.Thick.Base.Server
//取样结果,isFailure=true, 取样失败,全部复位!!!
bool isFailure = false;
if(CheckParamIsValid() == false)
if (CheckParamIsValid() == false)
return;
int grid_offset = 0;//经过相识性计算后的偏移量
......@@ -425,9 +434,9 @@ namespace FLY.Thick.Base.Server
{
SampleCell sample = Samples[i] as SampleCell;
var tempre = tempFilters[i];
if ((directions[i] == direction) && (sample.Enable) )
if ((directions[i] == direction) && (sample.Enable))
{
ad=-1;
ad = -1;
if (!isFailure)//不修要位置修正
{
//获取grid 数据
......@@ -461,7 +470,7 @@ namespace FLY.Thick.Base.Server
{
isFailure = true;
}
else if (diff / ad >= ErrPercent*0.01) //大于2% 异常
else if (diff / ad >= ErrPercent * 0.01) //大于2% 异常
{
isFailure = true;
}
......@@ -490,8 +499,12 @@ namespace FLY.Thick.Base.Server
if (isFailure)//样品获取失败,下次继续!!!
return;
{
this.warningSystem.Add(
SAMPLE_ERRNO_Failure.Code,
SAMPLE_ERRNO_Failure.Descrption,
OBJComponents.Common.ERR_STATE.ON);
}
}
/// <summary>
......
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