Commit bca3ea01 authored by 潘栩锋's avatar 潘栩锋 🚴

风环添加 看到撤销记录的时间

parent cfc5fe73
......@@ -51,7 +51,7 @@ using System.Windows;
// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("4.1.0.0")]
[assembly: AssemblyFileVersion("4.1.0.0")]
[assembly: AssemblyVersion("4.2.0.0")]
[assembly: AssemblyFileVersion("4.2.0.0")]
[assembly: Guid("18607932-ECBC-4292-A3DE-5864B7FB14DB")]
......@@ -63,11 +63,14 @@
<Style TargetType="Image">
<Setter Property="Height" Value="50"/>
</Style>
<Style TargetType="TextBlock" >
<Style TargetType="TextBlock" x:Key="TitleStyle">
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="FontFamily" Value="YouYuan"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource TitleStyle}"/>
</ResourceDictionary>
</Grid.Resources>
......@@ -130,7 +133,18 @@
<TextBlock Text="{Binding UndoIdx}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="White" FontFamily="Arial" FontSize="10"/>
</Grid>
</Grid>
<TextBlock Text="撤销" />
<TextBlock >
<TextBlock.Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource TitleStyle}">
<Setter Property="Text" Value="撤销"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsInUndo}" Value="True">
<Setter Property="Text" Value="{Binding UndoTime,StringFormat={}{0:HH:mm}}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</StackPanel>
</Button>
<Button x:Name="button_clear_h" Click="button_clear_h_click" Template="{StaticResource picture_button}" >
......
......@@ -79,11 +79,6 @@ namespace FLY.FeedbackRenZiJia.UI.Client.UIModule
grid_longpress.DataContext = lpress;
}
private void Sysparam_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
throw new NotImplementedException();
}
void InitializeChart()
{
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
......@@ -713,58 +708,25 @@ namespace FLY.FeedbackRenZiJia.UI.Client.UIModule
public class LongPress : INotifyPropertyChanged
{
private int progress = 0;
/// <summary>
/// 满9
/// </summary>
public int Progress
{
get { return progress; }
set
{
if (progress != value)
{
progress = value;
NotifyPropertyChanged("Progress");
NotifyPropertyChanged("IsOK");
NotifyPropertyChanged("IsRunning");
}
}
}
public int Progress { get; set; }
public bool IsOK => (Progress == Max);
public bool IsRunning => (Progress > 0);
private int max = 360;
/// <summary>
/// Progress 最大值
/// </summary>
public int Max
{
get { return max; }
set
{
if (max != value)
{
max = value;
NotifyPropertyChanged("Max");
}
}
}
public int Max { get; set; } = 360;
private int intervalMs = 2000;
/// <summary>
/// 时间间隔
/// </summary>
public int IntervalMs
{
get { return intervalMs; }
set
{
if (intervalMs != value)
{
intervalMs = value;
NotifyPropertyChanged("IntervalMs");
}
}
}
public int IntervalMs { get; set; } = 2000;
public RoutedEventHandler LongClick;
......@@ -829,20 +791,8 @@ namespace FLY.FeedbackRenZiJia.UI.Client.UIModule
}
}
public bool IsOK
{
get
{
return (Progress == Max);
}
}
public bool IsRunning
{
get
{
return (Progress > 0);
}
}
public void Reset()
{
Progress = 0;
......@@ -851,13 +801,6 @@ namespace FLY.FeedbackRenZiJia.UI.Client.UIModule
#region INotifyPropertyChanged 成员
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(string propertyname)
{
if (PropertyChanged != null)
{
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyname));
}
}
#endregion
}
......
......@@ -51,7 +51,7 @@ using System.Windows;
// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("4.1.0.0")]
[assembly: AssemblyFileVersion("4.1.0.0")]
[assembly: AssemblyVersion("4.2.0.0")]
[assembly: AssemblyFileVersion("4.2.0.0")]
[assembly: Guid("32104657-86E9-4380-9113-606589E6D812")]
......@@ -123,16 +123,18 @@ namespace FLY.FeedbackRenZiJia.Client
#region IFeedbackHeat 函数
public void Apply()
{
FObjSys.Current.SetValueEx(
mConn, mServerID, ID,
FEEDBACK_OBJ_INTERFACE.SET_PARAMS,
new FEEDBACK_OBJ_INTERFACE.Pack_Params()
var p = new FEEDBACK_OBJ_INTERFACE.Pack_Params()
{
step = Step,
delay = Delay,
hasCheck = HasCheck,
HasCheckFilmVelocity = HasCheckFilmVelocity
}.ToBytes());
};
string json = Newtonsoft.Json.JsonConvert.SerializeObject(p);
FObjSys.Current.SetValueEx(
mConn, mServerID, ID,
FEEDBACK_OBJ_INTERFACE.SET_PARAMS,
Misc.Converter.StringToBytes(json));
}
/// <summary>
/// 保存当前加热量
......@@ -140,11 +142,10 @@ namespace FLY.FeedbackRenZiJia.Client
/// <param name="productname"></param>
public void SaveHeats(string productname)
{
FEEDBACK_OBJ_INTERFACE.Pack_String p = new FEEDBACK_OBJ_INTERFACE.Pack_String();
p.data = productname;
string json = Newtonsoft.Json.JsonConvert.SerializeObject(productname);
FObjSys.Current.CallFunctionEx(
mConn, mServerID, ID,
FEEDBACK_OBJ_INTERFACE.CALL_SAVEHEATS, p.ToBytes());
FEEDBACK_OBJ_INTERFACE.CALL_SAVEHEATS, Misc.Converter.StringToBytes(json));
}
/// <summary>
/// 获取保存的加热量文件列表 返回类型为 List&lt;string&gt;
......@@ -165,11 +166,11 @@ namespace FLY.FeedbackRenZiJia.Client
/// <param name="productname"></param>
public void DelHeatsFile(string productname)
{
FEEDBACK_OBJ_INTERFACE.Pack_String p = new FEEDBACK_OBJ_INTERFACE.Pack_String();
p.data = productname;
string json = Newtonsoft.Json.JsonConvert.SerializeObject(productname);
FObjSys.Current.CallFunctionEx(
mConn, mServerID, ID,
FEEDBACK_OBJ_INTERFACE.CALL_DEL, p.ToBytes());
FEEDBACK_OBJ_INTERFACE.CALL_DEL, Misc.Converter.StringToBytes(json));
}
/// <summary>
......@@ -178,11 +179,10 @@ namespace FLY.FeedbackRenZiJia.Client
/// <param name="filename"></param>
public void LoadHeatsFile(string productname)
{
FEEDBACK_OBJ_INTERFACE.Pack_String p = new FEEDBACK_OBJ_INTERFACE.Pack_String();
p.data = productname;
string json = Newtonsoft.Json.JsonConvert.SerializeObject(productname);
FObjSys.Current.CallFunctionEx(
mConn, mServerID, ID,
FEEDBACK_OBJ_INTERFACE.CALL_LOADHEATS, p.ToBytes());
FEEDBACK_OBJ_INTERFACE.CALL_LOADHEATS, Misc.Converter.StringToBytes(json));
}
......@@ -190,24 +190,20 @@ namespace FLY.FeedbackRenZiJia.Client
public void SetCheckEnable(bool enable)
{
CheckEnable = enable;
string json = Newtonsoft.Json.JsonConvert.SerializeObject(enable);
FObjSys.Current.SetValueEx(
mConn, mServerID, ID,
FEEDBACK_OBJ_INTERFACE.SET_CHECKENABLE,
new FEEDBACK_OBJ_INTERFACE.Pack_Enable()
{
enable = enable
}.ToBytes());
Misc.Converter.StringToBytes(json));
}
public void SetEnable(bool enable)
{
IsAuto = enable;
string json = Newtonsoft.Json.JsonConvert.SerializeObject(enable);
FObjSys.Current.SetValueEx(
mConn, mServerID, ID,
FEEDBACK_OBJ_INTERFACE.SET_ENABLE,
new FEEDBACK_OBJ_INTERFACE.Pack_Enable()
{
enable = enable
}.ToBytes());
Misc.Converter.StringToBytes(json));
}
#endregion
......@@ -243,10 +239,8 @@ namespace FLY.FeedbackRenZiJia.Client
{
case FEEDBACK_OBJ_INTERFACE.GET_PARAMS:
{
FEEDBACK_OBJ_INTERFACE.Pack_Params p = new FEEDBACK_OBJ_INTERFACE.Pack_Params();
if (!p.TryParse(infodata))
return;
string json = Misc.Converter.BytesToString(infodata);
var p = Newtonsoft.Json.JsonConvert.DeserializeObject<FEEDBACK_OBJ_INTERFACE.Pack_Params>(json);
Step = p.step;
Delay = p.delay;
......@@ -256,9 +250,9 @@ namespace FLY.FeedbackRenZiJia.Client
} break;
case FEEDBACK_OBJ_INTERFACE.GET_STATE:
{
FEEDBACK_OBJ_INTERFACE.Pack_Status p = new FEEDBACK_OBJ_INTERFACE.Pack_Status();
if (!p.TryParse(infodata))
return;
string json = Misc.Converter.BytesToString(infodata);
var p = Newtonsoft.Json.JsonConvert.DeserializeObject<FEEDBACK_OBJ_INTERFACE.Pack_Status>(json);
IsConnectedWithPLC = p.isConnected;
ChannelCnt = p.channelcnt;
NBolts = p.nbolts;
......@@ -266,27 +260,22 @@ namespace FLY.FeedbackRenZiJia.Client
} break;
case FEEDBACK_OBJ_INTERFACE.GET_CHECKENABLE:
{
FEEDBACK_OBJ_INTERFACE.Pack_Enable p = new FEEDBACK_OBJ_INTERFACE.Pack_Enable();
if (!p.TryParse(infodata))
return;
CheckEnable = p.enable;
string json = Misc.Converter.BytesToString(infodata);
var p = Newtonsoft.Json.JsonConvert.DeserializeObject<bool>(json);
CheckEnable = p;
}break;
case FEEDBACK_OBJ_INTERFACE.GET_ENABLE:
{
FEEDBACK_OBJ_INTERFACE.Pack_Enable p = new FEEDBACK_OBJ_INTERFACE.Pack_Enable();
if (!p.TryParse(infodata))
return;
IsAuto = p.enable;
string json = Misc.Converter.BytesToString(infodata);
var p = Newtonsoft.Json.JsonConvert.DeserializeObject<bool>(json);
IsAuto = p;
} break;
case FEEDBACK_OBJ_INTERFACE.GET_ERROR:
{
FEEDBACK_OBJ_INTERFACE.Pack_Error p = new FEEDBACK_OBJ_INTERFACE.Pack_Error();
if (!p.TryParse(infodata))
return;
string json = Misc.Converter.BytesToString(infodata);
var p = Newtonsoft.Json.JsonConvert.DeserializeObject<FEEDBACK_OBJ_INTERFACE.Pack_Error>(json);
HasFan = p.hasFan;
HasElectricity = p.hasEletric;
......@@ -299,18 +288,20 @@ namespace FLY.FeedbackRenZiJia.Client
case FEEDBACK_OBJ_INTERFACE.GET_PRODUCTNAME:
{
FEEDBACK_OBJ_INTERFACE.Pack_String p = new FEEDBACK_OBJ_INTERFACE.Pack_String();
if (!p.TryParse(infodata))
return;
HeatsProductName = p.data;
string json = Misc.Converter.BytesToString(infodata);
var p = Newtonsoft.Json.JsonConvert.DeserializeObject<string>(json);
HeatsProductName = p;
}break;
case FEEDBACK_OBJ_INTERFACE.GET_UNDOIDX:
{
FEEDBACK_OBJ_INTERFACE.Pack_Undo p = new FEEDBACK_OBJ_INTERFACE.Pack_Undo();
if (!p.TryParse(infodata))
return;
UndoIdx = p.undo_idx;
string json = Misc.Converter.BytesToString(infodata);
var p = Newtonsoft.Json.JsonConvert.DeserializeObject<FEEDBACK_OBJ_INTERFACE.Pack_Undo>(json);
UndoIdx = p.undoIdx;
IsInUndo = p.isInUndo;
UndoTime = p.undoTime;
}
break;
}
......@@ -321,10 +312,10 @@ namespace FLY.FeedbackRenZiJia.Client
{
case FEEDBACK_OBJ_INTERFACE.CALL_GETLIST:
{
FEEDBACK_OBJ_INTERFACE.Pack_StringList p = new FEEDBACK_OBJ_INTERFACE.Pack_StringList();
if (!p.TryParse(retdata))
return;
((AsyncCBHandler)AsyncDelegate)(AsyncState, p.list);
string json = Misc.Converter.BytesToString(retdata);
var p = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(json);
((AsyncCBHandler)AsyncDelegate)(AsyncState, p);
} break;
}
......@@ -358,26 +349,21 @@ namespace FLY.FeedbackRenZiJia.Client
#region 撤销
private int undoidx = 0;
/// <summary>
/// undo 的序号
/// </summary>
public int UndoIdx
{
get
{
return undoidx;
}
protected set
{
if (undoidx != value)
{
undoidx = value;
NotifyPropertyChanged("UndoIdx");
}
}
}
//读取 UndoIdx 的 加热
public int UndoIdx { get; private set; }
/// <summary>
/// 在撤销中
/// </summary>
public bool IsInUndo { get; private set; }
/// <summary>
/// 这次撤销动作的时间
/// </summary>
public DateTime UndoTime { get; private set; }
//UndoIdx--
public void Undo()
{
FObjSys.Current.CallFunctionEx(
......@@ -386,6 +372,14 @@ namespace FLY.FeedbackRenZiJia.Client
);
}
//UndoIdx++
public void Redo()
{
FObjSys.Current.CallFunctionEx(
mConn, mServerID, ID,
FEEDBACK_OBJ_INTERFACE.CALL_REDO, null
);
}
#endregion
......
......@@ -140,14 +140,28 @@ namespace FLY.FeedbackRenZiJia.IService
/// <param name="filename"></param>
void LoadHeatsFile(string productname);
#region 撤销
/// <summary>
/// undo 的序号
/// 撤销的序号
/// </summary>
int UndoIdx {
get;
}
//读取 UndoIdx 的 加热
int UndoIdx { get; }
/// <summary>
/// 撤销中
/// </summary>
bool IsInUndo { get; }
/// <summary>
/// 这次撤销动作的时间
/// </summary>
DateTime UndoTime { get; }
//UndoIdx--
void Undo();
/// <summary>
/// UndoIdx++
/// </summary>
void Redo();
#endregion
}
......
......@@ -13,71 +13,15 @@ namespace FLY.FeedbackRenZiJia.OBJ_INTERFACE
public class FEEDBACK_OBJ_INTERFACE
{
#region pack
public class Pack_Params : IPack
public class Pack_Params
{
public int step;
public int delay;
public bool hasCheck;
public bool HasCheckFilmVelocity;
#region IPack 成员
public byte[] ToBytes()
{
List<byte> buf = new List<byte>();
buf.AddRange(BitConverter.GetBytes(step));
buf.AddRange(BitConverter.GetBytes(delay));
buf.AddRange(BitConverter.GetBytes(hasCheck));
buf.AddRange(BitConverter.GetBytes(HasCheckFilmVelocity));
return buf.ToArray();
}
public bool TryParse(byte[] value)
{
if (value.Length < (4+4+1))
return false;
int idx = 0;
step = BitConverter.ToInt32(value, idx);
idx += 4;
delay = BitConverter.ToInt32(value, idx);
idx += 4;
hasCheck = BitConverter.ToBoolean(value, idx);
idx += 1;
HasCheckFilmVelocity = BitConverter.ToBoolean(value, idx);
idx += 1;
return true;
}
#endregion
}
public class Pack_CallSmoothRequest:IPack
{
public double thresholdHeatSigma;
#region IPack 成员
public byte[] ToBytes()
{
List<byte> buf = new List<byte>();
buf.AddRange(BitConverter.GetBytes(thresholdHeatSigma));
return buf.ToArray();
}
public bool TryParse(byte[] value)
{
if (value.Length < ( 8 ))
return false;
int idx = 0;
thresholdHeatSigma = BitConverter.ToDouble(value, idx);
idx += 8;
return true;
}
#endregion
}
public class Pack_Status : IPack
public class Pack_Status
{
public int channelcnt;
public int nbolts;
......@@ -85,281 +29,21 @@ namespace FLY.FeedbackRenZiJia.OBJ_INTERFACE
public bool isConnected;
public DateTime lastChangedTime;
#region IPack 成员
public byte[] ToBytes()
{
List<byte> buf = new List<byte>();
buf.AddRange(BitConverter.GetBytes(channelcnt));
buf.AddRange(BitConverter.GetBytes(nbolts));
buf.AddRange(BitConverter.GetBytes(isConnected));
buf.AddRange(BitConverter.GetBytes(lastChangedTime.Ticks));
return buf.ToArray();
}
public bool TryParse(byte[] value)
{
if (value.Length < (4+4+1+8))
return false;
int idx = 0;
channelcnt = BitConverter.ToInt32(value, idx);
idx += 4;
nbolts = BitConverter.ToInt32(value, idx);
idx += 4;
isConnected = BitConverter.ToBoolean(value, idx);
idx += 1;
lastChangedTime = new DateTime(BitConverter.ToInt64(value, idx));
idx += 8;
return true;
}
#endregion
}
public class Pack_Enable : IPack
{
public bool enable;
#region IPack 成员
public byte[] ToBytes()
{
List<byte> buf = new List<byte>();
buf.AddRange(BitConverter.GetBytes(enable));
return buf.ToArray();
}
public bool TryParse(byte[] value)
{
if (value.Length < 1)
return false;
int idx = 0;
enable = BitConverter.ToBoolean(value, idx);
idx += 1;
return true;
}
#endregion
}
public class Pack_Error : IPack
public class Pack_Error
{
public bool hasFan;
public bool hasEletric;
public int checkno;
public bool[] bads = null;
#region IPack 成员
public byte[] ToBytes()
{
List<byte> buf = new List<byte>();
buf.AddRange(BitConverter.GetBytes(hasFan));
buf.AddRange(BitConverter.GetBytes(hasEletric));
buf.AddRange(BitConverter.GetBytes(checkno));
if (bads != null)
{
buf.AddRange(BitConverter.GetBytes(bads.Length));
for (int i = 0; i < bads.Length; i++)
{
buf.AddRange(BitConverter.GetBytes(bads[i]));
}
}
else
{
int len = 0;
buf.AddRange(BitConverter.GetBytes(len));
}
return buf.ToArray();
}
public bool TryParse(byte[] value)
public class Pack_Undo
{
int cnt = 1*2+4*2;
if (value.Length < cnt)
return false;
int idx = 0;
hasFan = BitConverter.ToBoolean(value, idx);
idx += 1;
hasEletric = BitConverter.ToBoolean(value, idx);
idx += 1;
checkno = BitConverter.ToInt32(value, idx);
idx += 4;
int len = BitConverter.ToInt32(value, idx);
idx += 4;
cnt+=len;
if (value.Length < cnt)
return false;
if (len == 0)
{
bads = null;
}
else
{
bads = new bool[len];
for (int i = 0; i < len; i++)
{
bads[i] = BitConverter.ToBoolean(value, idx);
idx++;
}
}
return true;
}
#endregion
}
public class Pack_StringList : IPack
{
public List<string> list;
#region IPack 成员
public byte[] ToBytes()
{
List<byte> buf = new List<byte>();
byte[] bs;
buf.AddRange(BitConverter.GetBytes(list.Count()));
for (int i = 0; i < list.Count(); i++)
{
bs = Misc.Converter.StringToBytes(list[i]);
buf.AddRange(BitConverter.GetBytes(bs.Count()));
buf.AddRange(bs);
}
return buf.ToArray();
}
/// <summary>
/// 返回由字节数组中指定位置的9个字节转换来的数据。
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public bool TryParse(byte[] value)
{
int cnt = 4;
if (value.Length < cnt)
return false;
int idx = 0;
int len = BitConverter.ToInt32(value, idx);
idx += 4;
cnt += len * 4;
if (value.Length < cnt)
return false;
if (list == null)
list = new List<string>();
list.Clear();
for (int i = 0; i < len; i++)
{
int l = BitConverter.ToInt32(value, idx);
idx += 4;
cnt += l;
if (value.Length < cnt)
return false;
string s = Misc.Converter.BytesToString(value, idx, l);
idx += l;
list.Add(s);
}
return true;
}
#endregion
}
public class Pack_String
{
public string data;
#region IPack 成员
public byte[] ToBytes()
{
List<byte> buf = new List<byte>();
if (data != null)
{
byte[] bs = Misc.Converter.StringToBytes(data);
buf.AddRange(BitConverter.GetBytes(bs.Length));
buf.AddRange(bs);
}
else
{
buf.AddRange(BitConverter.GetBytes(0));
}
return buf.ToArray();
}
/// <summary>
/// 返回由字节数组中指定位置的9个字节转换来的数据。
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public bool TryParse(byte[] value, int index, int count)
{
int cnt = 4;
if (value.Length < cnt)
return false;
int idx = 0;
int len = BitConverter.ToInt32(value, idx);
idx += 4;
cnt += len;
if (value.Length < cnt)
return false;
if (len <= 0)
data = null;
else
{
data = Misc.Converter.BytesToString(value, idx, len);
idx += len;
}
return true;
}
public bool TryParse(byte[] value)
{
return TryParse(value, 0, value.Length);
}
#endregion
}
public class Pack_Undo : IPack
{
public int undo_idx;
#region IPack 成员
public byte[] ToBytes()
{
List<byte> buf = new List<byte>();
buf.AddRange(BitConverter.GetBytes(undo_idx));
return buf.ToArray();
}
public bool TryParse(byte[] value)
{
if (value.Length < 4)
return false;
int idx = 0;
undo_idx = BitConverter.ToInt32(value, idx);
idx += 4;
return true;
}
#endregion
public int undoIdx;
public bool isInUndo;
public DateTime undoTime;
}
#endregion
......@@ -449,6 +133,11 @@ namespace FLY.FeedbackRenZiJia.OBJ_INTERFACE
/// </summary>
public const UInt16 CALL_UNDO = 13;
/// <summary>
/// request:null
/// reponse:null
/// </summary>
public const UInt16 CALL_REDO = 14;
#endregion
#region Push
......
......@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// 内部版本号
// 修订号
//
[assembly: AssemblyVersion("4.1.0.0")]
[assembly: AssemblyFileVersion("4.1.0.0")]
[assembly: AssemblyVersion("4.2.0.0")]
[assembly: AssemblyFileVersion("4.2.0.0")]
......@@ -111,7 +111,9 @@ namespace FLY.FeedbackRenZiJia.Server.OBJProxy
this, FEEDBACK_OBJ_INTERFACE.PUSH_PRODUCTNAME,
buf);
}
else if (e.PropertyName == "UndoIdx")
else if ((e.PropertyName == "UndoIdx")
|| (e.PropertyName == "IsInUndo")
|| (e.PropertyName == "UndoTime"))
{
byte[] buf;
GetValue(null, 0, FEEDBACK_OBJ_INTERFACE.GET_UNDOIDX, out buf);
......@@ -130,64 +132,69 @@ namespace FLY.FeedbackRenZiJia.Server.OBJProxy
{
case FEEDBACK_OBJ_INTERFACE.GET_PARAMS:
{
infodata = new FEEDBACK_OBJ_INTERFACE.Pack_Params()
var p = new FEEDBACK_OBJ_INTERFACE.Pack_Params()
{
delay = data.Delay,
hasCheck = data.HasCheck,
step = data.Step,
HasCheckFilmVelocity = data.HasCheckFilmVelocity
}.ToBytes();
}break;
};
string json = Newtonsoft.Json.JsonConvert.SerializeObject(p);
infodata = Misc.Converter.StringToBytes(json);
}
break;
case FEEDBACK_OBJ_INTERFACE.GET_STATE:
{
infodata = new FEEDBACK_OBJ_INTERFACE.Pack_Status()
var p = new FEEDBACK_OBJ_INTERFACE.Pack_Status()
{
channelcnt = data.ChannelCnt,
nbolts = data.NBolts,
isConnected = data.IsConnectedWithPLC,
lastChangedTime = data.LastChangedTime
}.ToBytes();
}break;
};
string json = Newtonsoft.Json.JsonConvert.SerializeObject(p);
infodata = Misc.Converter.StringToBytes(json);
}
break;
case FEEDBACK_OBJ_INTERFACE.GET_ERROR:
{
infodata = new FEEDBACK_OBJ_INTERFACE.Pack_Error()
var p = new FEEDBACK_OBJ_INTERFACE.Pack_Error()
{
hasFan = data.HasFan,
hasEletric = data.HasElectricity,
checkno = data.CheckNo,
bads = data.Bads
}.ToBytes();
};
string json = Newtonsoft.Json.JsonConvert.SerializeObject(p);
infodata = Misc.Converter.StringToBytes(json);
} break;
case FEEDBACK_OBJ_INTERFACE.GET_CHECKENABLE:
{
infodata = new FEEDBACK_OBJ_INTERFACE.Pack_Enable
{
enable = data.CheckEnable
}.ToBytes();
}break;
string json = Newtonsoft.Json.JsonConvert.SerializeObject(data.CheckEnable);
infodata = Misc.Converter.StringToBytes(json);
}
break;
case FEEDBACK_OBJ_INTERFACE.GET_ENABLE:
{
infodata = new FEEDBACK_OBJ_INTERFACE.Pack_Enable
{
enable = data.IsAuto
}.ToBytes();
string json = Newtonsoft.Json.JsonConvert.SerializeObject(data.IsAuto);
infodata = Misc.Converter.StringToBytes(json);
} break;
case FEEDBACK_OBJ_INTERFACE.GET_PRODUCTNAME:
{
infodata = new FEEDBACK_OBJ_INTERFACE.Pack_String
{
data = data.HeatsProductName
}.ToBytes();
string json = Newtonsoft.Json.JsonConvert.SerializeObject(data.HeatsProductName);
infodata = Misc.Converter.StringToBytes(json);
}break;
case FEEDBACK_OBJ_INTERFACE.GET_UNDOIDX:
{
infodata = new FEEDBACK_OBJ_INTERFACE.Pack_Undo
var p = new FEEDBACK_OBJ_INTERFACE.Pack_Undo
{
undo_idx = data.UndoIdx
}.ToBytes();
undoIdx = data.UndoIdx,
isInUndo = data.IsInUndo,
undoTime = data.UndoTime
};
string json = Newtonsoft.Json.JsonConvert.SerializeObject(p);
infodata = Misc.Converter.StringToBytes(json);
}
break;
}
......@@ -198,9 +205,9 @@ namespace FLY.FeedbackRenZiJia.Server.OBJProxy
{
case FEEDBACK_OBJ_INTERFACE.SET_PARAMS:
{
FEEDBACK_OBJ_INTERFACE.Pack_Params p = new FEEDBACK_OBJ_INTERFACE.Pack_Params();
if (!p.TryParse(infodata))
return;
string json = Misc.Converter.BytesToString(infodata);
var p = Newtonsoft.Json.JsonConvert.DeserializeObject<FEEDBACK_OBJ_INTERFACE.Pack_Params>(json);
data.Step = p.step;
data.Delay = p.delay;
......@@ -210,17 +217,15 @@ namespace FLY.FeedbackRenZiJia.Server.OBJProxy
}break;
case FEEDBACK_OBJ_INTERFACE.SET_CHECKENABLE:
{
FEEDBACK_OBJ_INTERFACE.Pack_Enable p = new FEEDBACK_OBJ_INTERFACE.Pack_Enable();
if (!p.TryParse(infodata))
return;
data.CheckEnable = p.enable;
string json = Misc.Converter.BytesToString(infodata);
var p = Newtonsoft.Json.JsonConvert.DeserializeObject<bool>(json);
data.CheckEnable = p;
}break;
case FEEDBACK_OBJ_INTERFACE.SET_ENABLE:
{
FEEDBACK_OBJ_INTERFACE.Pack_Enable p = new FEEDBACK_OBJ_INTERFACE.Pack_Enable();
if (!p.TryParse(infodata))
return;
data.IsAuto = p.enable;
string json = Misc.Converter.BytesToString(infodata);
var p = Newtonsoft.Json.JsonConvert.DeserializeObject<bool>(json);
data.IsAuto = p;
} break;
}
}
......@@ -231,24 +236,21 @@ namespace FLY.FeedbackRenZiJia.Server.OBJProxy
{
case FEEDBACK_OBJ_INTERFACE.CALL_SAVEHEATS:
{
FEEDBACK_OBJ_INTERFACE.Pack_String p = new FEEDBACK_OBJ_INTERFACE.Pack_String();
if (!p.TryParse(infodata))
return;
data.SaveHeats(p.data);
string json = Misc.Converter.BytesToString(infodata);
var p = Newtonsoft.Json.JsonConvert.DeserializeObject<string>(json);
data.SaveHeats(p);
}break;
case FEEDBACK_OBJ_INTERFACE.CALL_LOADHEATS:
{
FEEDBACK_OBJ_INTERFACE.Pack_String p = new FEEDBACK_OBJ_INTERFACE.Pack_String();
if (!p.TryParse(infodata))
return;
data.LoadHeatsFile(p.data);
string json = Misc.Converter.BytesToString(infodata);
var p = Newtonsoft.Json.JsonConvert.DeserializeObject<string>(json);
data.LoadHeatsFile(p);
}break;
case FEEDBACK_OBJ_INTERFACE.CALL_DEL:
{
FEEDBACK_OBJ_INTERFACE.Pack_String p = new FEEDBACK_OBJ_INTERFACE.Pack_String();
if (!p.TryParse(infodata))
return;
data.DelHeatsFile(p.data);
string json = Misc.Converter.BytesToString(infodata);
var p = Newtonsoft.Json.JsonConvert.DeserializeObject<string>(json);
data.DelHeatsFile(p);
}break;
case FEEDBACK_OBJ_INTERFACE.CALL_GETLIST:
{
......@@ -256,8 +258,7 @@ namespace FLY.FeedbackRenZiJia.Server.OBJProxy
new AsyncCBHandler(delegate(object AsyncState, object retdata)
{
ConnContext context = (ConnContext)AsyncState;
FEEDBACK_OBJ_INTERFACE.Pack_StringList p = new FEEDBACK_OBJ_INTERFACE.Pack_StringList();
p.list = (List<string>)retdata;
string json = Newtonsoft.Json.JsonConvert.SerializeObject(retdata);
CurrObjSys.PushCallFunctionEx(
context.from,
......@@ -265,7 +266,7 @@ namespace FLY.FeedbackRenZiJia.Server.OBJProxy
ID,
context.magic,
FEEDBACK_OBJ_INTERFACE.CALL_GETLIST,
p.ToBytes());
Misc.Converter.StringToBytes(json));
}), new ConnContext(from, srcid, magic));
} break;
......
......@@ -215,8 +215,8 @@ namespace FLY.FeedbackRenZiJia.Server
//记录改变!!!!
mHeatChanged.Add(mHeatCell.Heats);
UndoIdx = mHeatChanged.mItem.Count() - 1;
//复位undo模块
resetUndo();
//记录到数据库
if (lastLcThickHeat != null)
......@@ -230,7 +230,8 @@ namespace FLY.FeedbackRenZiJia.Server
};
mHeatCell.AfterClearOffsetsEvent += (c) => {
UndoIdx = mHeatChanged.mItem.Count() - 1;
//复位undo模块
resetUndo();
};
......@@ -406,7 +407,8 @@ namespace FLY.FeedbackRenZiJia.Server
mHeatBuf.Init(NBolts, ChannelCnt);
mHeatCell.Init2(NBolts, ChannelCnt);
UndoIdx = mHeatChanged.mItem.Count() - 1;
//复位undo模块
resetUndo();
mSnapShotBuf.Init(NBolts, ChannelCnt);
}
......@@ -824,19 +826,42 @@ namespace FLY.FeedbackRenZiJia.Server
/// <summary>
/// undo 的序号
/// </summary>
public int UndoIdx { get; protected set; }
public int UndoIdx { get; private set; }
/// <summary>
/// 在撤销中
/// </summary>
public bool IsInUndo { get; private set; }
/// <summary>
/// 这次撤销动作的时间
/// </summary>
public DateTime UndoTime { get; private set; }
//读取 UndoIdx 的 加热
public void Undo()
{
int idx = UndoIdx - 1;
updateUodo(UndoIdx - 1);
}
public void Redo()
{
updateUodo(UndoIdx + 1);
}
void updateUodo(int idx)
{
if (idx < 0)
return;
else if (idx >= mHeatChanged.mItem.Count())
return;
mHeatCell.ModifyPreHeats(mHeatChanged.mItem[idx].Heats);
UndoIdx--;
UndoTime = mHeatChanged.mItem[idx].Time;
IsInUndo = idx <= mHeatChanged.mItem.Count() - 1;
UndoIdx = idx;
}
void resetUndo()
{
UndoIdx = mHeatChanged.mItem.Count() - 1;
UndoTime = DateTime.MinValue;
IsInUndo = false;
}
#endregion
......
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