Add FMS Condition Table, and half way create database

This commit is contained in:
2024-11-28 17:12:54 +07:00
parent f33ba0127f
commit fd4caf028b
3 changed files with 160 additions and 83 deletions

View File

@@ -22,6 +22,7 @@ namespace FAtoPA
CreateFSMTable(); CreateFSMTable();
CreateModbusTable(); CreateModbusTable();
CreateVXTable(); CreateVXTable();
CreateConditionTable();
} }
private bool CreateFSMTable() private bool CreateFSMTable()
@@ -312,6 +313,27 @@ namespace FAtoPA
} }
} }
private bool CreateConditionTable()
{
using (var connection = new SQLiteConnection(connectionString))
{
try
{
connection.Open();
var conFMSCmd = connection.CreateCommand();
conFMSCmd.CommandText = "CREATE TABLE IF NOT EXISTS ConditionTable (No INTEGER AUTO INCREMENT, Condition TEXT, PASStatus TEXT)";
conFMSCmd.ExecuteNonQuery();
Debug.WriteLine("CreateConditionTable success");
return true;
}
catch (Exception ex)
{
Debug.WriteLine("Error CreateConditionTable, Exception : " + ex.Message);
return false;
}
}
}
private bool CreateVXTable() private bool CreateVXTable()
{ {
//Debug.WriteLine("About to execute CreateVXTable"); //Debug.WriteLine("About to execute CreateVXTable");

View File

@@ -62,10 +62,10 @@
BorderBrush="{TemplateBinding BorderBrush}" BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="1 1 1 0" BorderThickness="1 1 1 0"
CornerRadius="10,10,0,0" CornerRadius="10,10,0,0"
Padding="8" Padding="8"
Margin="2 2 0 0"> Margin="2 2 0 0">
<ContentPresenter <ContentPresenter
x:Name="HeaderContent"
ContentSource="Header" ContentSource="Header"
HorizontalAlignment="Center" HorizontalAlignment="Center"
VerticalAlignment="Center" /> VerticalAlignment="Center" />
@@ -187,7 +187,7 @@
</Grid> </Grid>
</Grid> </Grid>
<DockPanel DockPanel.Dock="Left" Width="400"> <DockPanel DockPanel.Dock="Left" Width="400">
<Label Content="Detected SIID" Margin="5,0" DockPanel.Dock="Top" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/> <Label Content="Detected SIID" Margin="5,0" DockPanel.Dock="Top" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontWeight="Bold"/>
<Grid DockPanel.Dock="Bottom" Height="50" Margin="5"> <Grid DockPanel.Dock="Bottom" Height="50" Margin="5">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/>
@@ -221,9 +221,9 @@
<ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Label Grid.Column="0" Content="SIID" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/> <Label Grid.Column="0" Content="SIID" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<ComboBox Grid.Column="1" x:Name="ModbusSIIDComboBox" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="5,0,5,0" ItemsSource="{Binding FSMSIID, IsAsync=True}" SelectedIndex="0"/> <ComboBox Grid.Column="1" x:Name="ModbusSIIDComboBox" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="5" ItemsSource="{Binding FSMSIID, IsAsync=True}" SelectedIndex="0"/>
<Label Grid.Column="2" Content="Register" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/> <Label Grid.Column="2" Content="Register" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<ComboBox Grid.Column="3" x:Name="ModbusRegister" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="5,0,5,0" ItemsSource="{Binding ModbusRegisters, IsAsync=True}" SelectedIndex="0" /> <ComboBox Grid.Column="3" x:Name="ModbusRegister" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="5" ItemsSource="{Binding ModbusRegisters, IsAsync=True}" SelectedIndex="0" />
</Grid> </Grid>
<Grid Grid.Column="2"> <Grid Grid.Column="2">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
@@ -248,14 +248,14 @@
<ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/>
<ColumnDefinition Width="AUTO"/> <ColumnDefinition Width="AUTO"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Label Margin="5,0" Content="Connected Modbus Client" Grid.Column="0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/> <Label Margin="5,0,5,0" Content="Connected Modbus Client" Grid.Column="0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontWeight="Bold" Height="26" VerticalAlignment="Top"/>
<Label Margin="5,0" Content="Count : 0" Grid.Column="1" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" x:Name="ConnectedModbusCount"/> <Label Margin="5,0" Content="Count : 0" Grid.Column="1" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" x:Name="ConnectedModbusCount"/>
</Grid> </Grid>
<ListBox x:Name="ConnectedModbusClients" Margin="5,0" /> <ListBox x:Name="ConnectedModbusClients" Margin="5,0" />
</DockPanel> </DockPanel>
<DockPanel Grid.Row="1"> <DockPanel Grid.Row="1">
<Label Content="FA Status to Register Definition" DockPanel.Dock="Top" HorizontalContentAlignment="Center"/> <Label Content="FA Status to Register Definition" DockPanel.Dock="Top" HorizontalContentAlignment="Center" FontWeight="Bold"/>
<Grid DockPanel.Dock="Bottom" Height="50"> <Grid DockPanel.Dock="Bottom" Height="50">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/>
@@ -293,11 +293,11 @@
<ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Label Grid.Column="0" Content="SIID" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/> <Label Grid.Column="0" Content="SIID" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<ComboBox Grid.Column="1" x:Name="VXSIIDComboBox" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="5,0" ItemsSource="{Binding FSMSIID, IsAsync=True}" SelectedIndex="0"/> <ComboBox Grid.Column="1" x:Name="VXSIIDComboBox" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="5" ItemsSource="{Binding FSMSIID, IsAsync=True}" SelectedIndex="0"/>
<Label Grid.Column="2" Content="Frame" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/> <Label Grid.Column="2" Content="Frame" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<ComboBox Grid.Column="3" x:Name="VXFrame" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="5,0" ItemsSource="{Binding VX3KID, IsAsync=True}" SelectedIndex="0"/> <ComboBox Grid.Column="3" x:Name="VXFrame" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="5" ItemsSource="{Binding VX3KID, IsAsync=True}" SelectedIndex="0"/>
<Label Grid.Column="4" Content="C-IN" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/> <Label Grid.Column="4" Content="C-IN" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<ComboBox Grid.Column="5" x:Name="VXCIN" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="5,0" ItemsSource="{Binding VX3KCIN, IsAsync=True}" SelectedIndex="0" /> <ComboBox Grid.Column="5" x:Name="VXCIN" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="5" ItemsSource="{Binding VX3KCIN, IsAsync=True}" SelectedIndex="0" />
</Grid> </Grid>
<Grid Grid.Column="2"> <Grid Grid.Column="2">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
@@ -310,13 +310,32 @@
<Button Grid.Column="2" Margin="5" x:Name="btnClearVX" Padding="5,0" Content="Clear Table" Click="btnClearVX_Click"/> <Button Grid.Column="2" Margin="5" x:Name="btnClearVX" Padding="5,0" Content="Clear Table" Click="btnClearVX_Click"/>
</Grid> </Grid>
</Grid> </Grid>
<DataGrid MinRowHeight="50" x:Name="VXTable" AutoGenerateColumns="True" AutoGeneratingColumn="VXTable_AutoGeneratingColumn" /> <Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<DockPanel Grid.Row="0">
<Label Content="TOA VX-3000" FontWeight="Bold" DockPanel.Dock="Top"/>
<DataGrid MinRowHeight="50" x:Name="VXTable" AutoGenerateColumns="True" AutoGeneratingColumn="VXTable_AutoGeneratingColumn" SelectionChanged="VXTable_SelectionChanged" />
</DockPanel>
<DockPanel Grid.Row="1">
<Label Content="FSM Condition" FontWeight="Bold" DockPanel.Dock="Top"/>
<DataGrid MinRowHeight="50" Grid.Row="1" x:Name="ConditionTable" AutoGenerateColumns="True" AutoGeneratingColumn="ConditionTable_AutoGeneratingColumn"/>
</DockPanel> </DockPanel>
</Grid>
</DockPanel>
</TabItem> </TabItem>
<TabItem Header="Settings"> <TabItem Header="Settings">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<StackPanel Orientation="Vertical"> <StackPanel Orientation="Vertical">
<GroupBox Header="Fire Alarm Settings"> <GroupBox>
<GroupBox.Header>
<TextBlock Text="Fire Alarm Settings" FontWeight="Bold" />
</GroupBox.Header>
<DockPanel> <DockPanel>
<Button x:Name="btnApplyFSMConfig" Content="Apply Config" Click="ApplyFSMConfig" DockPanel.Dock="Right" Margin="5,0" Padding="5,0"/> <Button x:Name="btnApplyFSMConfig" Content="Apply Config" Click="ApplyFSMConfig" DockPanel.Dock="Right" Margin="5,0" Padding="5,0"/>
<StackPanel Orientation="Vertical"> <StackPanel Orientation="Vertical">
@@ -352,7 +371,10 @@
</DockPanel> </DockPanel>
</GroupBox> </GroupBox>
<GroupBox Header="Modbus Setting"> <GroupBox>
<GroupBox.Header>
<TextBlock Text="Modbus Setting" FontWeight="Bold" />
</GroupBox.Header>
<DockPanel> <DockPanel>
<Button x:Name="btnApplyModbusConfig" Content="Apply Config" Click="ApplyModbusConfig" DockPanel.Dock="Right" Margin="5,0" Padding="5,0"/> <Button x:Name="btnApplyModbusConfig" Content="Apply Config" Click="ApplyModbusConfig" DockPanel.Dock="Right" Margin="5,0" Padding="5,0"/>
<StackPanel Orientation="Vertical"> <StackPanel Orientation="Vertical">
@@ -371,7 +393,10 @@
</StackPanel> </StackPanel>
</DockPanel> </DockPanel>
</GroupBox> </GroupBox>
<GroupBox Header="VX-3000"> <GroupBox>
<GroupBox.Header>
<TextBlock Text="VX-3000" FontWeight="Bold" />
</GroupBox.Header>
<DockPanel Margin="-1,0,1,0"> <DockPanel Margin="-1,0,1,0">
<Button x:Name="btnApplyVX3KConfig" Content="Apply Config" Margin="5,0" Padding="5,0" Click="ApplyVX3KConfig" DockPanel.Dock="Right"/> <Button x:Name="btnApplyVX3KConfig" Content="Apply Config" Margin="5,0" Padding="5,0" Click="ApplyVX3KConfig" DockPanel.Dock="Right"/>
<StackPanel Orientation="Vertical"> <StackPanel Orientation="Vertical">
@@ -387,6 +412,7 @@
</DockPanel> </DockPanel>
</GroupBox> </GroupBox>
</StackPanel> </StackPanel>
</ScrollViewer>
</TabItem> </TabItem>
</TabControl> </TabControl>

View File

@@ -299,6 +299,12 @@ namespace FAtoPA.Net
List<String> ConditionON = new List<string>(); List<String> ConditionON = new List<string>();
List<String> ConditionOFF = new List<string>(); List<String> ConditionOFF = new List<string>();
//add for example. delete if database condition done.
ConditionON.Add(SILogicalState.FIRE.ToString());
ConditionON.Add(SILogicalState.SMOKE.ToString());
ConditionOFF.Add(SILogicalState.NORMAL.ToString());
fsm.AddListener(new FSMTableUpdater(FsmTableMember, DetectedSIID, DetectedSIIDCount)); fsm.AddListener(new FSMTableUpdater(FsmTableMember, DetectedSIID, DetectedSIIDCount));
fsm.AddListener(new ModbusTriggerFromFSM(FsmTableMember, ModbusTableMember, modbusSlave, ModbusTranslationTable)); fsm.AddListener(new ModbusTriggerFromFSM(FsmTableMember, ModbusTableMember, modbusSlave, ModbusTranslationTable));
@@ -1085,7 +1091,6 @@ namespace FAtoPA.Net
break; break;
case "LastUpdate": case "LastUpdate":
e.Column.Width = DataGridLength.Auto; e.Column.Width = DataGridLength.Auto;
break; break;
} }
} }
@@ -1113,6 +1118,8 @@ namespace FAtoPA.Net
} }
} }
private void VXTable_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) private void VXTable_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{ {
Debug.WriteLine("VXTable_AutoGeneratingColumn : " + e.PropertyName); Debug.WriteLine("VXTable_AutoGeneratingColumn : " + e.PropertyName);
@@ -1243,6 +1250,28 @@ namespace FAtoPA.Net
} }
} }
private void ConditionTable_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
Debug.WriteLine("ConditionTable_AutoGeneratingColumn : " + e.PropertyName);
switch (e.PropertyName)
{
case "No":
e.Column.Width = DataGridLength.Auto;
break;
case "Condition":
e.Column.Width = DataGridLength.Auto;
break;
case "PAS Status":
e.Column.Width = DataGridLength.Auto;
break;
}
}
private void VXTable_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
} }
/// <summary> /// <summary>