Commit 37103d64 authored by 潘栩锋's avatar 潘栩锋 🚴

1.优化 profile界面 右边的列表宽度

2.优化 代码
parent 7cd952a2
......@@ -51,6 +51,6 @@ using System.Windows;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("7.3.0.0")]
[assembly: AssemblyFileVersion("7.3.0.0")]
[assembly: AssemblyVersion("7.3.4.0")]
[assembly: AssemblyFileVersion("7.3.4.0")]
[assembly: Guid("BD20A921-953E-44CA-8FAB-4619D3CBCD06")]
using FLY.Thick.FilmCasting.UI.DbViewer.Db;
using FLY.Thick.FilmCasting.Server.Model;
using FLY.Thick.FilmCasting.UI.DbViewer.Db;
using MahApps.Metro.Controls;
using MahApps.Metro.Controls.Dialogs;
using Misc;
......@@ -86,40 +87,6 @@ namespace FLY.Thick.FilmCasting.UI.DbViewer.Core
}
void ToSheet(ExcelWorksheet sheet, DataTable dataTable)
{
int from_row = 1;
int row = from_row;
//添加标题
for (int i = 0; i < dataTable.Columns.Count; i++)
{
int col = i + 1;
sheet.Cells[row, col].Value = dataTable.Columns[i].ColumnName;
//格式
sheet.Column(col).Style.Numberformat.Format = dataTable.Columns[i].Caption;
}
row++;
for (int i = 0; i < dataTable.Rows.Count; i++)
{
for (int j = 0; j < dataTable.Columns.Count; j++)
{
int col = j + 1;
sheet.Cells[row, col].Value = dataTable.Rows[i][j];
}
row++;
}
int colcnt = dataTable.Columns.Count;
int rowcnt = dataTable.Rows.Count;
var range = sheet.Cells[from_row, 1, from_row + rowcnt, colcnt];
var tbl = sheet.Tables.Add(range, dataTable.TableName);
tbl.TableStyle = TableStyles.Medium9;
sheet.Cells[sheet.Dimension.Address].AutoFitColumns();
}
void SaveToXlsxThk(ExcelPackage p, DbProfilePack profilePack)
{
if (profilePack.ScanDatas == null || profilePack.ScanDatas.Count() == 0)
......@@ -137,69 +104,52 @@ namespace FLY.Thick.FilmCasting.UI.DbViewer.Core
ExcelWorksheet sheet = GetSheet(p, "扫描数据");
DataTable dataTable = new DataTable("table_thk");
dataTable.Columns.Add(new DataColumn() { ColumnName = "开始时间", DataType = typeof(double), Caption = "yyyy-MM-dd HH:mm:ss" });
dataTable.Columns.Add(new DataColumn() { ColumnName = "结束时间", DataType = typeof(double), Caption = "HH:mm:ss" });
dataTable.Columns.Add(new DataColumn() { ColumnName = "目标值", DataType = typeof(double), Caption = "0.00" });
dataTable.Columns.Add(new DataColumn() { ColumnName = "规格线%", DataType = typeof(double), Caption = "0.0" });
dataTable.Columns.Add(new DataColumn() { ColumnName = "斜率补偿", DataType = typeof(double), Caption = "0.000" });
dataTable.Columns.Add(new DataColumn() { ColumnName = "平移补偿", DataType = typeof(double), Caption = "0.00" });
dataTable.Columns.Add(new DataColumn() { ColumnName = "纵向位置(m)", DataType = typeof(double), Caption = "0.0" });
dataTable.Columns.Add(new DataColumn() { ColumnName = "线速度(m/min)", DataType = typeof(double), Caption = "0.0" });
dataTable.Columns.Add(new DataColumn() { ColumnName = "膜宽度(mm)", DataType = typeof(double), Caption = "0" });
dataTable.Columns.Add(new DataColumn() { ColumnName = "平均值(um)", DataType = typeof(double), Caption = "0.00" });
dataTable.Columns.Add(new DataColumn() { ColumnName = "2σ(%)", DataType = typeof(double), Caption = "0.0" });
for (int i = 0; i < boltCnt; i++)
dataTable.Columns.Add(new DataColumn() { ColumnName = $"分区{i + 1}(um)", DataType = typeof(double), Caption = "0.0" });
for (int i = 0; i < sampleCnt; i++)
dataTable.Columns.Add(new DataColumn() { ColumnName = $"样品{i}AD", DataType = typeof(double), Caption = "0" });
CurrRowGrowUpReady();
for (int i = 0; i < profilePack.ScanDatas.Count(); i++)
var columnInfos = new List<ColumnInfo<Lc_ScanData>>
{
var scanData = profilePack.ScanDatas[i];
var dataRow = dataTable.NewRow();
dataRow["开始时间"] = scanData.Time.ToOADate();
dataRow["结束时间"] = scanData.EndTime.ToOADate();
dataRow["目标值"] = scanData.Target;
dataRow["规格线%"] = scanData.TolerancePercent * 100.0;
dataRow["斜率补偿"] = scanData.K;
dataRow["平移补偿"] = scanData.B;
dataRow["纵向位置(m)"] = scanData.FilmPosition;
dataRow["线速度(m/min)"] = scanData.FilmVelocity;
dataRow["膜宽度(mm)"] = scanData.FilmWidth;
double avg = scanData.Thicks.AverageNoNull();
double sigma = scanData.Thicks.Sigma();
dataRow["平均值(um)"] = avg;
if (avg > 0)
{
double sigma2p = sigma / avg * 2 * 100;
dataRow["2σ(%)"] = sigma2p;
for (int j = 0; j < boltCnt && j < scanData.Thicks.Count(); j++)
new ColumnInfo<Lc_ScanData>("开始时间", typeof(double), "yyyy-MM-dd HH:mm:ss", (sender)=>sender.Time.ToOADate()),
new ColumnInfo<Lc_ScanData>("结束时间", typeof(double), "yyyy-MM-dd HH:mm:ss", (sender)=>sender.EndTime.ToOADate()),
new ColumnInfo<Lc_ScanData>("目标值", typeof(double), "0.00", (sender)=>sender.Target),
new ColumnInfo<Lc_ScanData>("规格线%", typeof(double), "0.0", (sender)=>sender.TolerancePercent),
new ColumnInfo<Lc_ScanData>("斜率补偿", typeof(double), "0.000", (sender)=>sender.K),
new ColumnInfo<Lc_ScanData>("平移补偿", typeof(double), "0.00", (sender)=>sender.B),
new ColumnInfo<Lc_ScanData>("纵向位置(m)", typeof(double), "0.000", (sender)=>sender.FilmPosition),
new ColumnInfo<Lc_ScanData>("线速度(m/min)", typeof(double), "0.0" , (sender)=>sender.FilmVelocity),
new ColumnInfo<Lc_ScanData>("膜宽度(mm)", typeof(double), "0" , (sender)=>sender.FilmWidth),
new ColumnInfo<Lc_ScanData>("平均值(um)", typeof(double), "0.00" , (sender)=>sender.Avg),
new ColumnInfo<Lc_ScanData>("2σ(%)", typeof(double), "0.0", (sender)=>{
double avg = sender.Avg;
double sigma = sender.Thicks.Sigma();
if (avg > 0)
{
var v = scanData.Thicks[j];
if (!double.IsNaN(v))
{
dataRow[$"分区{j + 1}(um)"] = v;
}
double sigma2p = sigma / avg * 2 * 100;
return sigma2p;
}
}
if(scanData.SampleADs!=null )
for (int j = 0; j < sampleCnt && j< scanData.SampleADs.Count(); j++)
dataRow[$"样品{j}AD"] = scanData.SampleADs[j];
else{
return double.NaN;
}
}),
new ColumnInfo<Lc_ScanData>((i)=>$"分区{i + 1}(um)", typeof(double), "0.00" ,boltCnt,(sender,i)=>{
if(i<sender.Thicks.Count())
return sender.Thicks[i];
else
return null;
}),
new ColumnInfo<Lc_ScanData>((i)=>$"样品{i}AD", typeof(double), "0" ,sampleCnt,(sender,i)=>{
if(i<sender.SampleADs.Count())
return sender.SampleADs[i];
else
return null;
}),
};
dataTable.Rows.Add(dataRow);
CurrRowGrowUping(i);
}
CurrRowGrowUpReady();
DataTable dataTable = CreateDataTable(columnInfos, "table_thk", profilePack.ScanDatas, CurrRowGrowUping);
CurrRowGrowUpFinish(profilePack.ScanDatas.Count());
ToSheet(sheet, dataTable);
......@@ -225,5 +175,154 @@ namespace FLY.Thick.FilmCasting.UI.DbViewer.Core
CurrRow = _currRow + cnt;
}
#region 填表格辅助工具
class ColumnInfo<T>
{
public string ColumnName;
public Type DataType;
public string Format;
public delegate object GetValueHanlder(T sender, int itemIdx);
GetValueHanlder getValue;
public bool IsArray;
public int ItemCount;
public delegate string GetColumnNameHanlder(int itemIdx);
GetColumnNameHanlder getColumnName;
public ColumnInfo(string columnName, Type dataType, string format, Func<T, object> getValue)
{
ColumnName = columnName;
DataType = dataType;
Format = format;
this.getValue = (s, i) => getValue(s);
}
public ColumnInfo(string columnName, Type dataType, string format, GetValueHanlder getValue)
{
ColumnName = columnName;
DataType = dataType;
Format = format;
this.getValue = getValue;
}
public ColumnInfo(GetColumnNameHanlder getColumnName, Type dataType, string format, int itemCount, GetValueHanlder getValue)
{
IsArray = true;
ItemCount = itemCount;
this.getColumnName = getColumnName;
DataType = dataType;
Format = format;
this.getValue = getValue;
}
public DataColumn CreateDataColumn()
{
return new DataColumn() { ColumnName = ColumnName, DataType = DataType, Caption = Format };
}
public DataColumn CreateDataColumn(int itemIdx)
{
return new DataColumn() { ColumnName = getColumnName(itemIdx), DataType = DataType, Caption = Format };
}
public object GetValue(T sender)
{
return getValue(sender, 0);
}
public object GetValue(T sender, int index)
{
return getValue(sender, index);
}
public string GetColumnName(int index)
{
return getColumnName(index);
}
public string GetColumnName()
{
return ColumnName;
}
}
DataTable CreateDataTable<T>(List<ColumnInfo<T>> columnInfos, string tableName, IEnumerable<T> senders, Action<int> progressEvent = null)
{
DataTable dataTable = new DataTable(tableName);
for (int i = 0; i < columnInfos.Count(); i++)
{
var columnInfo = columnInfos[i];
if (!columnInfo.IsArray)
{
dataTable.Columns.Add(columnInfo.CreateDataColumn());
}
else
{
for (int k = 0; k < columnInfo.ItemCount; k++)
{
dataTable.Columns.Add(columnInfo.CreateDataColumn(k));
}
}
}
int j = 0;
foreach (var sender in senders)
{
var dataRow = dataTable.NewRow();
for (int i = 0; i < columnInfos.Count(); i++)
{
var columnInfo = columnInfos[i];
if (!columnInfo.IsArray)
{
string columnName = columnInfo.GetColumnName();
var value = columnInfo.GetValue(sender);
if (value != null)
dataRow[columnName] = value;
}
else
{
for (int k = 0; k < columnInfo.ItemCount; k++)
{
string columnName = columnInfo.GetColumnName(k);
var value = columnInfo.GetValue(sender, k);
if (value != null)
dataRow[columnName] = value;
}
}
}
dataTable.Rows.Add(dataRow);
progressEvent?.Invoke(j);
j++;
}
return dataTable;
}
void ToSheet(ExcelWorksheet sheet, DataTable dataTable)
{
int from_row = 1;
int row = from_row;
//添加标题
for (int i = 0; i < dataTable.Columns.Count; i++)
{
int col = i + 1;
sheet.Cells[row, col].Value = dataTable.Columns[i].ColumnName;
//格式
sheet.Column(col).Style.Numberformat.Format = dataTable.Columns[i].Caption;
}
row++;
for (int i = 0; i < dataTable.Rows.Count; i++)
{
for (int j = 0; j < dataTable.Columns.Count; j++)
{
int col = j + 1;
sheet.Cells[row, col].Value = dataTable.Rows[i][j];
}
row++;
}
//int colcnt = dataTable.Columns.Count;
//int rowcnt = dataTable.Rows.Count;
//var range = sheet.Cells[from_row, 1, from_row + rowcnt, colcnt];
//var tbl = sheet.Tables.Add(range, dataTable.TableName);
//tbl.TableStyle = TableStyles.Medium9;
//sheet.Cells[sheet.Dimension.Address].AutoFitColumns();
}
#endregion
}
}
......@@ -8,11 +8,11 @@ using System.Windows;
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("枫莱尔数据库浏览")]
[assembly: AssemblyDescription("枫莱尔电池测厚仪 历史数据库浏览器")]
[assembly: AssemblyDescription("枫莱尔流延测厚仪 历史数据库浏览器")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("佛山市枫莱尔自动化技术有限公司")]
[assembly: AssemblyProduct("枫莱尔数据库浏览")]
[assembly: AssemblyCopyright("Copyright © 2020 FlyAutomation")]
[assembly: AssemblyCopyright("Copyright © 2021 FlyAutomation")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
......@@ -51,6 +51,6 @@ using System.Windows;
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("6.5.0.0")]
[assembly: AssemblyFileVersion("6.5.0.0")]
[assembly: AssemblyVersion("7.0.0.0")]
[assembly: AssemblyFileVersion("7.0.0.0")]
[assembly: Guid("5FE5D848-CD2B-42CC-8EBD-2029371CDFE2")]
......@@ -7,7 +7,7 @@ using System.Windows;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("FLY.Thick.FilmCasting.UI.Server")]
[assembly: AssemblyTitle("枫莱尔--流延测厚仪服务器")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("佛山市枫莱尔自动化技术有限公司")]
......
......@@ -15,7 +15,7 @@
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.Thick.Base.UI;component/Converter/Dictionary_MyConv.xaml"/>
</ResourceDictionary.MergedDictionaries>
<Style TargetType="GroupBox"/>
<common:FilmCastingProfileParam x:Key="param" />
</ResourceDictionary>
</Page.Resources>
......@@ -50,8 +50,8 @@
</Grid.RowDefinitions>
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="338*" />
<ColumnDefinition />
<ColumnDefinition MaxWidth="400"/>
</Grid.ColumnDefinitions>
<Grid x:Name="grid_dynarea" d:DataContext="{Binding DynArea}"/>
<ScrollViewer MinWidth="550" d:DataContext="{StaticResource param}" DataContext="{Binding Param}">
......@@ -198,7 +198,7 @@
</StackPanel>
</StackPanel>
</ScrollViewer>
<ListBox Margin="{StaticResource ControlMargin}" MinWidth="400" Grid.Column="1" Background="{StaticResource Brushes.Activity}"
<ListBox Margin="{StaticResource ControlMargin}" Grid.Column="1" Background="{StaticResource Brushes.Activity}"
SelectedItem="{Binding SelectedItem}"
ItemsSource="{Binding ProfileList}">
<ListBox.Resources>
......
......@@ -6,7 +6,6 @@
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.Thick.Base.UI;component/Themes/Styles.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.Thick.Base.UI;component/Themes/GraphStyle.xaml"/>
<!--<ResourceDictionary Source="GraphStyle.xaml"/>-->
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
\ No newline at end of file
......@@ -577,7 +577,7 @@ namespace FLY.Thick.FilmCasting.UI.UiModule
bulkDb.GetFrame(
new Pack_GetFrameRequest() { Id = Number, Mix = graphparam.Mix },
(object AsyncContext, object retData) =>
(object asyncContext, object retData) =>
{
Pack_GetFrameReponse reponse = retData as Pack_GetFrameReponse;
......
......@@ -26,16 +26,20 @@ namespace FLY.Thick.FilmCasting.UI.UiModule
void SimuData()
{
graphparam = new ScanGraphItemParam();
graphparam.IsPercent = true;
graphparam.IsAutoTarget = true;
graphparam.YRangePercent = 3;
graphparam.IsLineMode = false;
profileParam = new Common.FilmCastingProfileParam();
profileParam.ScanRange = new RangeStruct(10, 110);
profileParam.DataRange = new RangeStruct(30, 90);
profileParam.Target = 150;
profileParam.TolerancePercent = 0.02;
graphparam = new ScanGraphItemParam
{
IsPercent = true,
IsAutoTarget = true,
YRangePercent = 3,
IsLineMode = false
};
profileParam = new Common.FilmCastingProfileParam
{
ScanRange = new RangeStruct(10, 110),
DataRange = new RangeStruct(30, 90),
Target = 150,
TolerancePercent = 0.02
};
#region 数据
......
......@@ -14,12 +14,11 @@ namespace FLY.Thick.FilmCasting.UI.UiModule
{
public class TrendGraphVm : ITrendGraphVm
{
const int MARKNO_TEXTUP = 1;
/// <summary>
/// 自动切换为 最新视图模式 倒计时 初始值
/// </summary>
const int AutoKeepTotalSec = 60;
const int Len = 100;
protected const int Len = 100;
/// <summary>
/// Y轴%显示,最小的中值
/// </summary>
......@@ -116,9 +115,9 @@ namespace FLY.Thick.FilmCasting.UI.UiModule
public object MapperNegative { get; protected set; }
public object MapperValue { get; protected set; }
TrendGraphItemParam graphparam;
protected TrendGraphItemParam graphparam;
IBulkDbService bulkDb;
FilmCastingProfileParam profileParam;
protected FilmCastingProfileParam profileParam;
DispatcherTimer timer;
public TrendGraphVm()
{
......@@ -268,7 +267,7 @@ namespace FLY.Thick.FilmCasting.UI.UiModule
UpdateY();
}
}
void UpdateY()
protected void UpdateY()
{
double tolerance = this.profileParam.TolerancePercent;
if (tolerance < MIN_TOLERANCE) {
......@@ -282,7 +281,7 @@ namespace FLY.Thick.FilmCasting.UI.UiModule
YMax = tolerance * graphparam.YRangePercent;
YMin = -tolerance * graphparam.YRangePercent;
}
void UpdateX()
protected void UpdateX()
{
XMax = Len;
}
......@@ -321,7 +320,7 @@ namespace FLY.Thick.FilmCasting.UI.UiModule
return 2 * v.Sigma / v.Value;
}
}
void UpdateAverage()
protected void UpdateAverage()
{
var sigma2s = this.Values.Select(v => ToSigma2Percent(v));
......
......@@ -14,107 +14,19 @@ namespace FLY.Thick.FilmCasting.UI.UiModule
{
public TrendGraphVmUt()
{
#region 与数据无关界面参数
AreaColors = new List<Brush>();
AreaColors.AddRange(FLY.ControlLibrary.Themes.Styles.AreaColors);
YFormatter = (y) =>
{
double percent = y * 100;
string text = "";
if (percent == 0d)
{
text = "0.0%";
}
else if (percent > 0)
{
text = $"+{Math.Abs(percent):F1}%";
}
else
{
text = $"-{Math.Abs(percent):F1}%";
}
return $"{text,6}";
};
XFormatter = (x) =>
{
int index = (int)x;
if (index < Values.Count() && index >= 0)
return Values[index].Time.ToString("HH:mm");
else
return "";
};
MapperPositive = Mappers.Xy<TrendValue>()
.X((value, index) =>
{
return index;
})
.Y(value => value.Sigma / value.Value)
.Fill((value) =>
{
double percent = value.Sigma / value.Value;
if ((percent > Tolerance2YMax) || (percent < -Tolerance2YMax))
{
return AreaColors[0];
}
else if ((percent > ToleranceYMax) || (percent < -ToleranceYMax))
{
return AreaColors[1];
}
else
{
return AreaColors[2];
}
});
MapperNegative = Mappers.Xy<TrendValue>()
.X((value, index) =>
{
return index;
})
.Y(value => -value.Sigma / value.Value)
.Fill((value) =>
{
double percent = value.Sigma / value.Value;
if ((percent > Tolerance2YMax) || (percent < -Tolerance2YMax))
{
return AreaColors[0];
}
else if ((percent > ToleranceYMax) || (percent < -ToleranceYMax))
{
return AreaColors[1];
}
else
{
return AreaColors[2];
}
});
MapperValue = Mappers.Xy<TrendValue>()
.X((value, index) =>
{
return index;
})
.Y(value => value.Value);
#endregion
Values.Clear();
#region 数据
double target = 150;
double tolerancePercent = 0.05;
double yRangePercent = 3;
int len = 200;
int len = Len;
DateTime startTime = DateTime.Now;
TimeSpan tsInterval = TimeSpan.FromSeconds(30);
DateTime time = startTime;
int id = 312456;
Random random = new Random();
List<TrendValue> tvs = new List<TrendValue>();
for (int i = 0; i < len; i++, time += tsInterval)
{
TrendValue tv = new TrendValue();
......@@ -122,30 +34,36 @@ namespace FLY.Thick.FilmCasting.UI.UiModule
tv.Value = target + (random.NextDouble() - 0.5) * target * tolerancePercent * 0.5;
tv.Sigma = (Math.Sin(i * Math.PI / len) * 3) * target * tolerancePercent * random.NextDouble();
Values.Add(tv);
tvs.Add(tv);
}
Values.AddRange(tvs);
#endregion
profileParam = new Common.FilmCastingProfileParam()
{
ScanRange = new RangeStruct(10, 110),
DataRange = new RangeStruct(30, 90),
Target = target,
TolerancePercent = tolerancePercent
};
graphparam = new TrendGraphItemParam()
{
YRangePercent = yRangePercent,
Mix = 2
};
#region 界面数据
XMax = len;
UpdateX();
Mix = 2;
BeginTime = Values.First().Time;
EndTime = Values.Last().Time;
Id = id;
var sigma2Percent = Values.Select(v => 2 * v.Sigma / v.Value);
Average = sigma2Percent.AverageNoNull();
Max = sigma2Percent.Max();
Min = sigma2Percent.Min();
ToleranceYMax = tolerancePercent;
ToleranceYMin = -ToleranceYMax;
Tolerance2YMax = ToleranceYMax * 2;
Tolerance2YMin = -Tolerance2YMax;
YMax = ToleranceYMax * yRangePercent;
YMin = -YMax;
UpdateAverage();
UpdateY();
#endregion
}
}
......
......@@ -47,7 +47,7 @@ namespace FLY.Thick.FilmCasting.Server
BoltMapFilmCasting boltmap, BorderSearch bordersearch, Reject reject,
DynArea dynarea, AD2ThkHandler ad2thk,
FilmCastingProfileParam profileParam, FilmCastingProfile profile, FilmPositionDetect filmPositionDetect,
HistoryDb historyDB, BulkDb bulkDB
HistoryDb historyDb, BulkDb bulkDb
)
{
base.Init(flyAd);
......@@ -67,8 +67,8 @@ namespace FLY.Thick.FilmCasting.Server
this.profile = profile;
this.filmPositionDetect = filmPositionDetect;
this.historyDb = historyDB;
this.bulkDb = bulkDB;
this.historyDb = historyDb;
this.bulkDb = bulkDb;
scanMotion.Init(flyAd, gsample, initParam, warningSystem);
......@@ -196,21 +196,22 @@ namespace FLY.Thick.FilmCasting.Server
}
};
bool ret = autoRollDown.CheckAtDataEndEvent(scanData);
if(ret)
autoRollDown.Reset();
//下辊检测
if (historyDb.localDb.IsProfileFinished)
{
//已经下辊
FinishProfile();
AddProfile();
}
else if(ret)
else
{
//需要下辊
FinishProfile();
AddProfile();
scanData.FilmPosition = 0;
if (autoRollDown.CheckAtDataEndEvent(scanData)) {
//需要下辊
FinishProfile();
AddProfile();
scanData.FilmPosition = 0;
}
}
historyDb.AddScanData(scanData);
......@@ -291,7 +292,8 @@ namespace FLY.Thick.FilmCasting.Server
bulkDb.SetTempFrame(now, now, 0, null);
#region sqlite3 历史数据保存
CheckProfile();
//检测是否新开一个profile,或者继续上一次 profile
CheckAddProfile();
profileParam.PropertyChanged += MProfileParam_PropertyChanged;
#endregion
......@@ -321,51 +323,50 @@ namespace FLY.Thick.FilmCasting.Server
nameof(FilmCastingProfileParam.TolerancePercent),
nameof(FilmCastingProfileParam.ScanRange)
};
void CheckProfile()
void CheckAddProfile()
{
if (historyDb.localDb.IsProfileFinished)
{
//上一次已经结束
AddProfile();
return;
}
//复位 膜纵向位置
filmPositionDetect.Reset(0);
autoRollDown.Reset();
if (historyDb.localDb.CurrProfile == null)
{
//没生产过
AddProfile();
return;
}
else
Db_Profile db_Profile = historyDb.localDb.CurrProfile;
//上一次还没结束
if ((db_Profile.PName != profileParam.PName) ||
(db_Profile.Batch != profileParam.Batch) ||
(db_Profile.Number != profileParam.Number))
{
Db_Profile db_Profile = historyDb.localDb.CurrProfile;
//上一次还没结束
if ((db_Profile.PName != profileParam.PName) ||
(db_Profile.Batch != profileParam.Batch) ||
(db_Profile.Number != profileParam.Number))
{
//任何一个不一致
//结束上次的
FinishProfile();
//复位 膜纵向位置
filmPositionDetect.Reset(0);
}
else if (autoRollDown.CheckAtStart())
{
//需要结束上次的
FinishProfile();
//任何一个不一致
AddProfile();
return;
}
//复位 膜纵向位置
filmPositionDetect.Reset(0);
}
else
{
//继续上一次生产!!!!
UpdateProfile();
}
if (autoRollDown.CheckAtStart())
{
//满足要求,下辊
AddProfile();
return;
}
//继续上一次生产!!!!
UpdateProfile();
}
void AddProfile()
{
//复位 换profile 检查
autoRollDown.Reset();
//复位 膜纵向位置
filmPositionDetect.Reset(0);
......@@ -403,11 +404,7 @@ namespace FLY.Thick.FilmCasting.Server
FObjBase.PollModule.Current.Poll_JustOnce(
() =>
{
if (!historyDb.localDb.IsProfileFinished)
{
FinishProfile();
}
AddProfile();//新
}, this, MARKNO_PROFILE_ADD);
}
else if (profile_propertynames_update.Contains(e.PropertyName))
......@@ -415,9 +412,7 @@ namespace FLY.Thick.FilmCasting.Server
FObjBase.PollModule.Current.Poll_JustOnce(
() =>
{
if (!historyDb.localDb.IsProfileFinished)
UpdateProfile();//修改
UpdateProfile();//修改
}, this, MARKNO_PROFILE_CHANGED);
}
}
......
......@@ -483,7 +483,6 @@ namespace FLY.Thick.FilmCasting.Server.Model
/// <param name="AsyncContext"></param>
public async void GetTrend(Pack_GetTrendRequest request, AsyncCBHandler asyncDelegate, object asyncContext)
{
//TODO 需要异步
Pack_GetTrendReponse reponse = new Pack_GetTrendReponse();
reponse.Request = request;
......
......@@ -100,6 +100,10 @@ namespace FLY.Thick.FilmCasting.Server.Model
Db_Profile profile
)
{
if (localDb.CurrProfile == null || //没有数据!!!!
localDb.IsProfileFinished == true)//生产已经结束了
return;
//添加 数据库必要的 field
profile.ID = localDb.CurrProfile.ID;
profile.StartTime = localDb.CurrProfile.StartTime;
......
Subproject commit bcbf2b66404a4f8cf5cfd0a856257f4625741344
Subproject commit 12526eaafcc6c86b46790a0d848b622144c00281
......@@ -28,7 +28,7 @@ fi
cp -rf install $install_dir
#复制 版本描述
cp 版本描述.txt $install_dir
cp 版本描述.md $install_dir
install_dir=$install_dir"/佛山市枫莱尔自动化技术有限公司/windows"
......
{
"InstallZipVersion":"7.3.3",
"InstallZipUrl":"http://server.flyautomation.net:8889/download/流延测厚仪安装包_v7.3.3_20211201.7z"
"InstallZipVersion":"7.3.4",
"InstallZipUrl":"http://server.flyautomation.net:8889/download/流延测厚仪安装包_v7.3.4_20211224.7z"
}
\ No newline at end of file
流延测厚仪安装包_v7.3.2_20211113
# 流延测厚仪安装包_v7.3.4_20211224
## 流延测厚仪客户端 v7.3.4
1. 修复 修改AD盒参数出错,原因没有重新编译
<br/>
<br/>
<br/>
# 流延测厚仪安装包_v7.3.3_20211201
## 流延测厚仪服务器 v7.3.3
1. 修复 12月数据库删除bug
## 流延测厚仪客户端 v7.3.0
1. 修复 安装包路径默认下载路径 为 D:\测厚仪软件
<br/>
<br/>
<br/>
# 流延测厚仪安装包_v7.3.2_20211113
1. 修复 流延测厚仪服务器 保存图片 很慢
2. 修复 流延测厚仪服务器 删除图片出错(不存在的文件夹)
3. 优化 AD盒参数保存在电脑。 避免AD盒 i2c 有问题。
流延测厚仪安装包_v7.3.1_20210920
<br/>
<br/>
<br/>
# 流延测厚仪安装包_v7.3.1_20210920
1. 修复 ScanData数据表 EndTime 为 DateTime.Now, 但 Time 为 flyad.Now, 导致时间错乱
2. 修复 Reflect_SeviceClient 大量数据 bug
3. 修复 测厚仪服务器,保存图片功能, livechart 的控件不会释放资源,导致14小时后,服务器占了 900Mb 内存
流延测厚仪安装包_v7.3.0_20210920
<br/>
<br/>
<br/>
# 流延测厚仪安装包_v7.3.0_20210920
1. 添加 在客户端左下角 “枫莱尔” 进入的界面菜单, 添加 【升级检测】
2. 修复 样品界面 样品直径无法保存
流延测厚仪安装包_v7.2.1_20210918
<br/>
<br/>
<br/>
# 流延测厚仪安装包_v7.2.1_20210918
1. 添加 大混合扫描图
2. 添加 在产品中, 公差可以 输入绝对值
流延测厚仪安装包_v7.1.0_20210804
<br/>
<br/>
<br/>
# 流延测厚仪安装包_v7.1.0_20210804
1. 修改 规定经过分区表后的数据,只是进行缩放而已。 数据能恢复到 cm/数据
2. 添加 扫描图 的测量版
3. 添加 纵向图 点选某个位置,下方的扫描图 number 就会改为该id
......
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