时序组包

This commit is contained in:
MoYue 2024-06-19 10:19:37 +08:00
parent d364d6cf52
commit 56a3525806
9 changed files with 280 additions and 68 deletions

View File

@ -77,7 +77,7 @@ namespace InSituLaboratory.Service
/// <returns></returns>
public IEnumerable<SysSequentialTotal> GetSysSequentialTotal(string key, int pageSize, int pageIndex, out int totalCount)
{
var pResult = this.QueryPage<SysSequentialTotal, string>(m => string.IsNullOrEmpty(key) || m.Sequential.Contains(key) || m.SequenceGroup.Contains(key) || m.SensorID.Contains(key), pageSize, pageIndex, order => order.CreateTime.ToString(), false);
var pResult = this.QueryPage<SysSequentialTotal, string>(m => string.IsNullOrEmpty(key) || m.Sequential.Contains(key) || m.SequenceGroup.Contains(key) || m.SensorID.Contains(key), pageSize, pageIndex, order => order.SequenceGroup, false);
totalCount = pResult.TotalCount;

View File

@ -304,6 +304,8 @@ namespace InSituLaboratory.ViewModels.Pages.Dialogs
}
private string totalKind;
#endregion
ISysSequentialService _sequentialService;
@ -324,6 +326,7 @@ namespace InSituLaboratory.ViewModels.Pages.Dialogs
kind = parameters.GetValue<string>("kind");
if (SequentialDetail == null)
{
this.Title = "新增时序配置";

View File

@ -60,7 +60,7 @@ namespace InSituLaboratory.ViewModels.Pages.History
DurationTime = item.DurationTime,
CreateTime = item.CreateTime,
Sequential = item.Sequential,
DeleteType = item.IsDelete == 0 ? "未删除" : "已删除",
Status = item.Status,
});
}

View File

@ -1011,19 +1011,17 @@ namespace InSituLaboratory.ViewModels.Pages
ulong hour;
ulong min;
ulong sec;
ulong minsec;
//定义消息体数组
byte[] byteaq = new byte[16];
DateTime dateTime = DateTime.Now;
year = (ulong)dateTime.Year * 10000000000000UL;
month = (ulong)dateTime.Month * 100000000000UL;
day = (ulong)dateTime.Day * 1000000000UL;
hour = (ulong)dateTime.Hour * 10000000UL;
min = (ulong)dateTime.Minute * 100000UL;
sec = (ulong)dateTime.Second * 1000UL;
minsec = (ulong)dateTime.Millisecond;
senddate = year + month + day + hour + min + sec + minsec;
year = (ulong)dateTime.Year * 10000000000UL;
month = (ulong)dateTime.Month * 100000000UL;
day = (ulong)dateTime.Day * 1000000UL;
hour = (ulong)dateTime.Hour * 10000UL;
min = (ulong)dateTime.Minute * 100UL;
sec = (ulong)dateTime.Second;
senddate = year + month + day + hour + min + sec;
byteaq[0] = 0x90;
byteaq[1] = 0x02;

View File

@ -196,6 +196,117 @@ namespace InSituLaboratory.ViewModels.Pages
}
}
/// <summary>
/// 时序下发
/// </summary>
public override void SendS1()
{
if (sequentStatusModel.SequentialStartTime1 == null || sequentStatusModel.SequentialEndTime1 == null)
{
System.Windows.Forms.MessageBox.Show("时序1: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
DateTime startTime = (DateTime)sequentStatusModel.SequentialStartTime1;
DateTime endTime = (DateTime)sequentStatusModel.SequentialEndTime1;
ulong senddate;
ulong year;
ulong month;
ulong day;
ulong hour;
ulong min;
ulong sec;
ulong sendenddate;
ulong endyear;
ulong endmonth;
ulong endday;
ulong endhour;
ulong endmin;
ulong endsec;
//定义消息体数组
byte[] byteaq = new byte[26];
year = (ulong)startTime.Year * 10000000000UL;
month = (ulong)startTime.Month * 100000000UL;
day = (ulong)startTime.Day * 1000000UL;
hour = (ulong)startTime.Hour * 10000UL;
min = (ulong)startTime.Minute * 100UL;
sec = (ulong)startTime.Second;
senddate = year + month + day + hour + min + sec;
endyear = (ulong)endTime.Year * 10000000000UL;
endmonth = (ulong)endTime.Month * 100000000UL;
endday = (ulong)endTime.Day * 1000000UL;
endhour = (ulong)endTime.Hour * 10000UL;
endmin = (ulong)endTime.Minute * 100UL;
endsec = (ulong)endTime.Second;
sendenddate = endyear + endmonth + endday + endhour + endmin + endsec;
//消息头
byteaq[0] = 0x91;
byteaq[1] = 0x00;
byteaq[2] = 0x10;
byteaq[3] = 0x01;
byteaq[4] = 0x00;
byteaq[5] = 0x00;
byteaq[6] = 0x00;
byteaq[7] = 0x00;
//时序组号
byteaq[8] = 0x01;
//操作类型
byteaq[9] = 0x01;
//开始时间
byteaq[10] = (byte)((senddate >> 56) & 0xff);
byteaq[11] = (byte)((senddate >> 48) & 0xff);
byteaq[12] = (byte)((senddate >> 40) & 0xff);
byteaq[13] = (byte)((senddate >> 32) & 0xff);
byteaq[14] = (byte)((senddate >> 24) & 0xff);
byteaq[15] = (byte)((senddate >> 16) & 0xff);
byteaq[16] = (byte)((senddate >> 8) & 0xff);
byteaq[17] = (byte)(senddate & 0xff);
//结束时间
byteaq[18] = (byte)((sendenddate >> 56) & 0xff);
byteaq[19] = (byte)((sendenddate >> 48) & 0xff);
byteaq[20] = (byte)((sendenddate >> 40) & 0xff);
byteaq[21] = (byte)((sendenddate >> 32) & 0xff);
byteaq[22] = (byte)((sendenddate >> 24) & 0xff);
byteaq[23] = (byte)((sendenddate >> 16) & 0xff);
byteaq[24] = (byte)((sendenddate >> 8) & 0xff);
byteaq[25] = (byte)(sendenddate & 0xff);
var datalist = _sysSequentialService.Query<SysSequentialTotal>(m => m.StartTime == startTime && m.EndTime == endTime && m.IsDelete == 0 && m.Sequential == "时序1").OrderBy(n => n.SequenceGroup).ThenBy(s => s.CreateTime).ToArray();
//定义传感器个数
int num = 0;
for (int i = 0; i < datalist.Length; i++)
{
}
}
}
#endregion
#region 2
@ -677,5 +788,69 @@ namespace InSituLaboratory.ViewModels.Pages
}
#endregion
/// <summary>
/// 转义封装
/// </summary>
/// <param name="bytes"></param>
/// <returns></returns>
public List<byte> Escape(byte[] bytes)
{
//标志位
byte head = 0x7f;
//crc
byte nr_crc = 0;
nr_crc = tools.CRC(bytes.ToArray(), 0, bytes.Length);
///转义
int j = 0;
List<byte> tBuffer = bytes.ToList();
tBuffer.Add(nr_crc);
int length = tBuffer.ToArray().Length;
byte[] newAnswer = tBuffer.ToArray();
for (int i = 0; i < length; i++)
{
if (newAnswer[i] == 0x7e || newAnswer[i] == 0x7f)
{
j++;
}
}
byte[] newSendBuffer = new byte[length + j];
for (int i = 0; i < length; i++)
{
newSendBuffer[i] = newAnswer[i];
}
for (int i = 0; i < length + j; i++)
{
if (newSendBuffer[i] == 0x7e)
{
for (int k = length + j - 1; k > i + 1; k--)
{
newSendBuffer[k] = newSendBuffer[k - 1];
}
newSendBuffer[i + 1] = 0x01;
}
if (newSendBuffer[i] == 0x7f)
{
newSendBuffer[i] = 0x7e;
for (int k = length + j - 1; k > i + 1; k--)
{
newSendBuffer[k] = newSendBuffer[k - 1];
}
newSendBuffer[i + 1] = 0x02;
}
}
List<byte> buffer = new List<byte>();
buffer.Add(head);
for (int i = 0; i < newSendBuffer.Length; i++)
{
buffer.Add(newSendBuffer[i]);
}
buffer.Add(head);
return buffer;
}
}
}

View File

@ -65,33 +65,43 @@ namespace InSituLaboratory.ViewModels.Pages
public DelegateCommand SynchronizationCommand { get; set; }//时间同步
#region 1-5 /
#region 1-5 /
public DelegateCommand RefreshS1Command { get; set; }
public DelegateCommand SendS1Command { get; set; }
public DelegateCommand<object> ModifyS1Command { get; set; }
public DelegateCommand<object> DeleteS1Command { get; set; }
public DelegateCommand BeginS1Command { get; set; }
public DelegateCommand SuspendS1Command { get; set; }
public DelegateCommand RefreshS2Command { get; set; }
public DelegateCommand SendS2Command { get; set; }
public DelegateCommand<object> ModifyS2Command { get; set; }
public DelegateCommand<object> DeleteS2Command { get; set; }
public DelegateCommand BeginS2Command { get; set; }
public DelegateCommand SuspendS2Command { get; set; }
public DelegateCommand RefreshS3Command { get; set; }
public DelegateCommand SendS3Command { get; set; }
public DelegateCommand<object> ModifyS3Command { get; set; }
public DelegateCommand<object> DeleteS3Command { get; set; }
public DelegateCommand BeginS3Command { get; set; }
public DelegateCommand SuspendS3Command { get; set; }
public DelegateCommand RefreshS4Command { get; set; }
public DelegateCommand SendS4Command { get; set; }
public DelegateCommand<object> ModifyS4Command { get; set; }
public DelegateCommand<object> DeleteS4Command { get; set; }
public DelegateCommand BeginS4Command { get; set; }
public DelegateCommand SuspendS4Command { get; set; }
public DelegateCommand RefreshS5Command { get; set; }
public DelegateCommand SendS5Command { get; set; }
public DelegateCommand<object> ModifyS5Command { get; set; }
public DelegateCommand<object> DeleteS5Command { get; set; }
public DelegateCommand BeginS5Command { get; set; }
public DelegateCommand SuspendS5Command { get; set; }
#endregion
@ -110,32 +120,42 @@ namespace InSituLaboratory.ViewModels.Pages
StartCommand = new DelegateCommand(DoStart);
SynchronizationCommand = new DelegateCommand(DoSynchronization);
#region 1-5 /
#region 1-5 /
RefreshS1Command = new DelegateCommand(RefreshS1);
SendS1Command = new DelegateCommand(SendS1);
ModifyS1Command = new DelegateCommand<object>(DoModifyS1);
DeleteS1Command = new DelegateCommand<object>(DoDeleteS1);
BeginS1Command = new DelegateCommand(BeginS1);
SuspendS1Command = new DelegateCommand(SuspendS1);
RefreshS2Command = new DelegateCommand(RefreshS2);
SendS2Command = new DelegateCommand(SendS2);
ModifyS2Command = new DelegateCommand<object>(DoModifyS2);
DeleteS2Command = new DelegateCommand<object>(DoDeleteS2);
BeginS2Command = new DelegateCommand(BeginS2);
SuspendS2Command = new DelegateCommand(SuspendS2);
RefreshS3Command = new DelegateCommand(RefreshS3);
SendS3Command = new DelegateCommand(SendS3);
ModifyS3Command = new DelegateCommand<object>(DoModifyS3);
DeleteS3Command = new DelegateCommand<object>(DoDeleteS3);
BeginS3Command = new DelegateCommand(BeginS3);
SuspendS3Command = new DelegateCommand(SuspendS3);
RefreshS4Command = new DelegateCommand(RefreshS4);
SendS4Command = new DelegateCommand(SendS4);
ModifyS4Command = new DelegateCommand<object>(DoModifyS4);
DeleteS4Command = new DelegateCommand<object>(DoDeleteS4);
BeginS4Command = new DelegateCommand(BeginS4);
SuspendS4Command = new DelegateCommand(SuspendS4);
RefreshS5Command = new DelegateCommand(RefreshS5);
SendS5Command = new DelegateCommand(SendS5);
ModifyS5Command = new DelegateCommand<object>(DoModifyS5);
DeleteS5Command = new DelegateCommand<object>(DoDeleteS5);
BeginS5Command = new DelegateCommand(BeginS5);
SuspendS5Command = new DelegateCommand(SuspendS5);
#endregion
}
@ -161,36 +181,46 @@ namespace InSituLaboratory.ViewModels.Pages
private string PageName { get; set; }
#region 1-5 /
#region 1-5 /
public virtual void RefreshS1() { }
public virtual void SendS1() { }
public virtual void DoModifyS1(object model) { }
public virtual void DoDeleteS1(object model) { }
public virtual void BeginS1() { }
public virtual void SuspendS1() { }
public virtual void RefreshS2() { }
public virtual void SendS2() { }
public virtual void DoModifyS2(object model) { }
public virtual void DoDeleteS2(object model) { }
public virtual void BeginS2() { }
public virtual void SuspendS2() { }
public virtual void RefreshS3() { }
public virtual void SendS3() { }
public virtual void DoModifyS3(object model) { }
public virtual void DoDeleteS3(object model) { }
public virtual void BeginS3() { }
public virtual void SuspendS3() { }
public virtual void RefreshS4() { }
public virtual void SendS4() { }
public virtual void DoModifyS4(object model) { }
public virtual void DoDeleteS4(object model) { }
public virtual void BeginS4() { }
public virtual void SuspendS4() { }
public virtual void RefreshS5() { }
public virtual void SendS5() { }
public virtual void DoModifyS5(object model) { }
public virtual void DoDeleteS5(object model) { }
public virtual void BeginS5() { }
public virtual void SuspendS5() { }
#endregion

View File

@ -25,13 +25,13 @@
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="70"/>
<ColumnDefinition Width="90"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="配置" Grid.Row="0" VerticalAlignment="Center" Foreground="#888" />
<TextBlock Text="传感器设备" Grid.Row="1" VerticalAlignment="Center" Foreground="#888"/>
<TextBlock Text="工作时长(s)" Grid.Row="2" VerticalAlignment="Center" Foreground="#888"/>
<TextBlock Text="循环间(s)" Grid.Row="3" VerticalAlignment="Center" Foreground="#888"/>
<TextBlock Text="子时序号" Grid.Row="0" VerticalAlignment="Center" Foreground="#888" />
<TextBlock Text="设备编号" Grid.Row="1" VerticalAlignment="Center" Foreground="#888"/>
<TextBlock Text="设备工作时间(s)" Grid.Row="2" VerticalAlignment="Center" Foreground="#888"/>
<TextBlock Text="循环间隔时长(s)" Grid.Row="3" VerticalAlignment="Center" Foreground="#888"/>
<hc:ComboBox Grid.Row="0" Name="pb" Margin="0,9,0,8" Grid.Column="1" IsEditable="False" ItemsSource="{Binding DeviceNodes}" DisplayMemberPath="Id" SelectedValuePath="Id" SelectedValue="{Binding SequenceGroup}" RenderTransformOrigin="0.498,0.193"/>
<hc:ComboBox Grid.Row="1" Margin="0,9,0,8" Grid.Column="1" IsEditable="False" ItemsSource="{Binding DeviceNodes}" DisplayMemberPath="DeviceName" SelectedValuePath="DeviceName" SelectedValue="{Binding SensorID}" RenderTransformOrigin="0.498,0.193"/>

View File

@ -22,11 +22,11 @@
<DataGridTextColumn Header="创建时间" Width="155" Binding="{Binding CreateTime,StringFormat=yyyy-MM-dd HH:mm:ss}"/>
<DataGridTextColumn Header="开始时间" Width="155" Binding="{Binding StartTime,StringFormat=yyyy-MM-dd HH:mm:ss}"/>
<DataGridTextColumn Header="结束时间" Width="155" Binding="{Binding EndTime,StringFormat=yyyy-MM-dd HH:mm:ss}"/>
<DataGridTextColumn Header="配置号" Width="70" Binding="{Binding SequenceGroup}"/>
<DataGridTextColumn Header="传感器" Width="170" Binding="{Binding SensorID}"/>
<DataGridTextColumn Header="工作时长/s" Width="110" Binding="{Binding WorkTime}"/>
<DataGridTextColumn Header="循环时长/s" Width="100" Binding="{Binding DurationTime}"/>
<DataGridTextColumn Header="是否已删除" Width="100" Binding="{Binding DeleteType}"/>
<DataGridTextColumn Header="子时序号" Width="70" Binding="{Binding SequenceGroup}"/>
<DataGridTextColumn Header="设备编号" Width="170" Binding="{Binding SensorID}"/>
<DataGridTextColumn Header="设备工作时长/s" Width="110" Binding="{Binding WorkTime}"/>
<DataGridTextColumn Header="子序列循环间隔时长/s" Width="180" Binding="{Binding DurationTime}"/>
<DataGridTextColumn Header="状态" Width="100" Binding="{Binding Status}"/>
</DataGrid.Columns>
</DataGrid>
</ScrollViewer>

View File

@ -148,7 +148,6 @@
<hc:DateTimePicker hc:InfoElement.ShowClearButton="True" hc:InfoElement.TitleWidth="100" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource DateTimePickerPlus}" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="15,3" hc:InfoElement.Title="开始时间:" Foreground="Black" FontSize="15" Width="288" Background="Transparent" BorderBrush="White" SelectedDateTime="{Binding sequentStatusModel.SequentialStartTime1,Mode=TwoWay}"/>
<hc:DateTimePicker hc:InfoElement.ShowClearButton="True" hc:InfoElement.TitleWidth="100" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource DateTimePickerPlus}" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="15,5" hc:InfoElement.Title="结束时间:" Foreground="Black" FontSize="15" Width="288" Background="Transparent" BorderBrush="White" SelectedDateTime="{Binding sequentStatusModel.SequentialEndTime1,Mode=TwoWay}"/>
<TextBlock Text="循环时长 -同一配置设备全部运行后等待时长" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="Red"/>
</StackPanel>
<!--刷新 新建 下发-->
@ -164,7 +163,9 @@
</LinearGradientBrush>
</Button.Background>
</Button>
<Button Content="下发" Style="{StaticResource NormalButtonStyle}" Command="{Binding SendS1Command}" Width="60" Margin="5,0" Background="#88409EFE"/>
<Button Content="下发" Style="{StaticResource NormalButtonStyle}" Command="{Binding SendS1Command}" Width="60" Margin="5,0" Background="#FFA07A"/>
<Button Content="启动" Style="{StaticResource NormalButtonStyle}" Command="{Binding BeginS1Command}" Width="60" Margin="5,0" Background="#9400D3"/>
<Button Content="暂停" Style="{StaticResource NormalButtonStyle}" Command="{Binding SuspendS1Command}" Width="60" Margin="5,0" Background="#CDC0B0"/>
</StackPanel>
<!--数据源-->
@ -181,10 +182,10 @@
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="配置" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="循环时长(s)" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="传感器设备(以下设备同一配置依次运行)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="工作时长(s)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子时序号" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备编号(以下设备同一配置依次运行)" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备工作时间(s)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子序列循环间隔时长(s)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="操作" Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
@ -220,9 +221,9 @@
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding SequenceGroup}" FontSize="14" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding DurationTime}" FontSize="14" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding SensorID}" FontSize="14" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding WorkTime}" FontSize="14" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding SensorID}" FontSize="14" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding WorkTime}" FontSize="14" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding DurationTime}" FontSize="14" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<!--操作-->
<StackPanel Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal">
@ -281,7 +282,9 @@
</LinearGradientBrush>
</Button.Background>
</Button>
<Button Content="下发" Style="{StaticResource NormalButtonStyle}" Command="{Binding SendS2Command}" Width="60" Margin="5,0" Background="#88409EFE"/>
<Button Content="下发" Style="{StaticResource NormalButtonStyle}" Command="{Binding SendS2Command}" Width="60" Margin="5,0" Background="#FFA07A"/>
<Button Content="启动" Style="{StaticResource NormalButtonStyle}" Command="{Binding BeginS2Command}" Width="60" Margin="5,0" Background="#9400D3"/>
<Button Content="暂停" Style="{StaticResource NormalButtonStyle}" Command="{Binding SuspendS2Command}" Width="60" Margin="5,0" Background="#CDC0B0"/>
</StackPanel>
@ -299,10 +302,10 @@
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="配置" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="循环时长(s)" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="传感器设备(以下设备同一配置依次运行)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="工作时长(s)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子时序号" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备编号(以下设备同一配置依次运行)" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备工作时间(s)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子序列循环间隔时长(s)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="操作" Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
@ -338,10 +341,9 @@
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding SequenceGroup}" FontSize="14" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding DurationTime}" FontSize="14" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding SensorID}" FontSize="14" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding WorkTime}" FontSize="14" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding SensorID}" FontSize="14" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding WorkTime}" FontSize="14" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding DurationTime}" FontSize="14" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<!--操作-->
<StackPanel Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal">
@ -400,7 +402,9 @@
</LinearGradientBrush>
</Button.Background>
</Button>
<Button Content="下发" Style="{StaticResource NormalButtonStyle}" Command="{Binding SendS3Command}" Width="60" Margin="5,0" Background="#88409EFE"/>
<Button Content="下发" Style="{StaticResource NormalButtonStyle}" Command="{Binding SendS3Command}" Width="60" Margin="5,0" Background="#FFA07A"/>
<Button Content="启动" Style="{StaticResource NormalButtonStyle}" Command="{Binding BeginS3Command}" Width="60" Margin="5,0" Background="#9400D3"/>
<Button Content="暂停" Style="{StaticResource NormalButtonStyle}" Command="{Binding SuspendS3Command}" Width="60" Margin="5,0" Background="#CDC0B0"/>
</StackPanel>
<!--数据源-->
@ -417,10 +421,10 @@
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="配置" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="循环时长(s)" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="传感器设备(以下设备同一配置依次运行)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="工作时长(s)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子时序号" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备编号(以下设备同一配置依次运行)" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备工作时间(s)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子序列循环间隔时长(s)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="操作" Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
@ -456,9 +460,9 @@
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding SequenceGroup}" FontSize="14" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding DurationTime}" FontSize="14" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding SensorID}" FontSize="14" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding WorkTime}" FontSize="14" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding SensorID}" FontSize="14" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding WorkTime}" FontSize="14" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding DurationTime}" FontSize="14" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<!--操作-->
<StackPanel Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal">
@ -517,7 +521,9 @@
</LinearGradientBrush>
</Button.Background>
</Button>
<Button Content="下发" Style="{StaticResource NormalButtonStyle}" Command="{Binding SendS4Command}" Width="60" Margin="5,0" Background="#88409EFE"/>
<Button Content="下发" Style="{StaticResource NormalButtonStyle}" Command="{Binding SendS4Command}" Width="60" Margin="5,0" Background="#FFA07A"/>
<Button Content="启动" Style="{StaticResource NormalButtonStyle}" Command="{Binding BeginS4Command}" Width="60" Margin="5,0" Background="#9400D3"/>
<Button Content="暂停" Style="{StaticResource NormalButtonStyle}" Command="{Binding SuspendS4Command}" Width="60" Margin="5,0" Background="#CDC0B0"/>
</StackPanel>
<!--数据源-->
@ -534,10 +540,10 @@
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="配置" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="循环时长(s)" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="传感器设备(以下设备同一配置依次运行)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="工作时长(s)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子时序号" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备编号(以下设备同一配置依次运行)" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备工作时间(s)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子序列循环间隔时长(s)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="操作" Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
@ -573,10 +579,9 @@
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding SequenceGroup}" FontSize="14" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding DurationTime}" FontSize="14" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding SensorID}" FontSize="14" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding WorkTime}" FontSize="14" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding SensorID}" FontSize="14" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding WorkTime}" FontSize="14" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding DurationTime}" FontSize="14" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<!--操作-->
<StackPanel Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal">
@ -635,7 +640,9 @@
</LinearGradientBrush>
</Button.Background>
</Button>
<Button Content="下发" Style="{StaticResource NormalButtonStyle}" Command="{Binding SendS5Command}" Width="60" Margin="5,0" Background="#88409EFE"/>
<Button Content="下发" Style="{StaticResource NormalButtonStyle}" Command="{Binding SendS5Command}" Width="60" Margin="5,0" Background="#FFA07A"/>
<Button Content="启动" Style="{StaticResource NormalButtonStyle}" Command="{Binding BeginS5Command}" Width="60" Margin="5,0" Background="#9400D3"/>
<Button Content="暂停" Style="{StaticResource NormalButtonStyle}" Command="{Binding SuspendS5Command}" Width="60" Margin="5,0" Background="#CDC0B0"/>
</StackPanel>
<!--数据源-->
@ -652,10 +659,10 @@
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="配置" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="循环时长(s)" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="传感器设备(以下设备同一配置依次运行)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="工作时长(s)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子时序号" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备编号(以下设备同一配置依次运行)" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备工作时间(s)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子序列循环间隔时长(s)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="操作" Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
@ -691,10 +698,9 @@
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding SequenceGroup}" FontSize="14" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding DurationTime}" FontSize="14" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding SensorID}" FontSize="14" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding WorkTime}" FontSize="14" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding SensorID}" FontSize="14" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding WorkTime}" FontSize="14" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding DurationTime}" FontSize="14" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<!--操作-->
<StackPanel Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal">
<TextBlock VerticalAlignment="Center">