Readjust design, and add touchscreen
This commit is contained in:
@@ -14,21 +14,21 @@
|
||||
</Grid.RowDefinitions>
|
||||
<Grid Grid.Row="0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="AUTO"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Label Grid.Column="0" Content="Logical State" VerticalContentAlignment="Center"/>
|
||||
<Border Grid.Column="1" BorderBrush="Black" BorderThickness="1" Margin="5">
|
||||
<TextBlock x:Name="txtLogicalState" />
|
||||
<Label Grid.Column="0" Content="Logical State :" VerticalContentAlignment="Center"/>
|
||||
<Border Grid.Column="1" BorderBrush="Black" BorderThickness="0" Margin="5">
|
||||
<Label x:Name="txtLogicalState" />
|
||||
</Border>
|
||||
|
||||
</Grid>
|
||||
<Grid Grid.Row="1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="AUTO"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Label Grid.Column="0" Content="Modbus Register" VerticalContentAlignment="Center"/>
|
||||
<Label Grid.Column="0" Content="Modbus Register :" VerticalContentAlignment="Center"/>
|
||||
<ComboBox Grid.Column="1" x:Name="cbModbusRegister" Margin="5" />
|
||||
</Grid>
|
||||
<Grid Grid.Row="2">
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace FAtoPA.Net
|
||||
InitializeComponent();
|
||||
cbModbusRegister.ItemsSource = ModbusRegisters;
|
||||
|
||||
txtLogicalState.Text = key;
|
||||
txtLogicalState.Content = key;
|
||||
cbModbusRegister.SelectedIndex = ModbusRegisters.IndexOf(value);
|
||||
|
||||
|
||||
|
||||
227
MainWindow.xaml
227
MainWindow.xaml
@@ -9,10 +9,14 @@
|
||||
Closing="Window_Closing"
|
||||
Title="MainWindow"
|
||||
MinWidth="800"
|
||||
MaxWidth="1024"
|
||||
MinHeight="480"
|
||||
WindowState="Maximized" >
|
||||
MaxHeight="600"
|
||||
WindowState="Maximized"
|
||||
IsManipulationEnabled="True">
|
||||
|
||||
<Window.Resources>
|
||||
|
||||
<!-- Style for Rounded Buttons -->
|
||||
<Style TargetType="Button">
|
||||
<Setter Property="Template">
|
||||
@@ -62,7 +66,7 @@
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="1 1 1 0"
|
||||
CornerRadius="10,10,0,0"
|
||||
Padding="8"
|
||||
Padding="12"
|
||||
Margin="2 2 0 0">
|
||||
<ContentPresenter
|
||||
x:Name="HeaderContent"
|
||||
@@ -80,15 +84,16 @@
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter TargetName="Border" Property="Background" Value="LightGray" />
|
||||
</Trigger>
|
||||
<Trigger Property="AreAnyTouchesCaptured" Value="True">
|
||||
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
|
||||
|
||||
<Grid>
|
||||
<Grid IsManipulationEnabled="True">
|
||||
<DockPanel>
|
||||
<StatusBar DockPanel.Dock="Bottom" Height="30">
|
||||
<StatusBar.ItemsPanel>
|
||||
@@ -106,7 +111,6 @@
|
||||
<StatusBarItem Grid.Column="0" HorizontalContentAlignment="Center" BorderBrush="Black" BorderThickness="1">
|
||||
<TextBlock x:Name="firealarmstatusbar" Text="Fire Alarm Status" Margin="5 0"/>
|
||||
</StatusBarItem>
|
||||
|
||||
<StatusBarItem Grid.Column="1" HorizontalContentAlignment="Center" BorderBrush="Black" BorderThickness="1">
|
||||
<TextBlock x:Name="modbusstatusbar" Text="Modbus Status" Margin="5 0"/>
|
||||
</StatusBarItem>
|
||||
@@ -117,16 +121,16 @@
|
||||
<TextBlock x:Name="datetimebar" Text="Date and Time" Margin="5 0"/>
|
||||
</StatusBarItem>
|
||||
</StatusBar>
|
||||
<TabControl>
|
||||
<TabItem Header="Fire Alarm">
|
||||
<TabControl x:Name="mainTab" SelectionChanged="mainTab_SelectionChanged" IsManipulationEnabled="True">
|
||||
<TabItem Header="Fire Alarm" TouchDown="TabItem_TouchDown">
|
||||
<DockPanel>
|
||||
<Grid DockPanel.Dock="Top" Height="75">
|
||||
<Grid DockPanel.Dock="Top" Height="70">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="170"/>
|
||||
<ColumnDefinition Width="300"/>
|
||||
<ColumnDefinition Width="430"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Button Margin="5" Padding="5,0" x:Name="btnStartStopFSM" Content="Start FSM Connection" Grid.Column="0" Click="btnStartStopFSM_Click" />
|
||||
<Button Margin="5" Padding="5,0" x:Name="btnStartStopFSM" Content="Start FSM Connection" Grid.Column="0" Click="btnStartStopFSM_Click" TouchEnter="btnStartStopFSM_TouchEnter" />
|
||||
<Grid Grid.Column="1" Margin="0,5">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
@@ -180,14 +184,13 @@
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Button Grid.Column="0" Margin="5,0" Padding="5,0" x:Name="btnDelSIID" Content="Remove From Table" Click="btnDelSIID_Click"/>
|
||||
<Button Grid.Column="1" Margin="5,0" Padding="5,0" x:Name="btnClearSIID" Content="Clear Table" Click="btnClearSIID_Click"/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<DockPanel DockPanel.Dock="Left" Width="400">
|
||||
<Label Content="Detected SIID" Margin="5,0" DockPanel.Dock="Top" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontWeight="Bold"/>
|
||||
<DockPanel DockPanel.Dock="Left" Width="300">
|
||||
<Label Content="Detected SIID" Margin="5,0" DockPanel.Dock="Top" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontWeight="Bold" HorizontalAlignment="Left"/>
|
||||
<Grid DockPanel.Dock="Bottom" Height="50" Margin="5">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
@@ -196,20 +199,21 @@
|
||||
<Label Content="Count : 0" Margin="5,0" Grid.Column="0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" x:Name="DetectedSIIDCount"/>
|
||||
<Button Content="Add Selected to Table" Margin="5,0" Padding="5,0" Grid.Column="1" HorizontalAlignment="Stretch" Click="AddSelectedSIID" />
|
||||
</Grid>
|
||||
|
||||
<ListBox x:Name="DetectedSIID" Margin="5" />
|
||||
<ListBox x:Name="DetectedSIID" Margin="5"/>
|
||||
</DockPanel>
|
||||
<DataGrid Margin="5" MinRowHeight="50" x:Name="FSMTable" AutoGenerateColumns="True" AutoGeneratingColumn="FSMTable_AutoGeneratingColumn" />
|
||||
|
||||
<DockPanel >
|
||||
<Label Content="FSM Status" DockPanel.Dock="Top" FontWeight="Bold" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" HorizontalAlignment="Left"/>
|
||||
<DataGrid Margin="5" MinRowHeight="50" x:Name="FSMTable" AutoGenerateColumns="True" AutoGeneratingColumn="FSMTable_AutoGeneratingColumn" ColumnWidth="*" />
|
||||
|
||||
</DockPanel>
|
||||
</DockPanel>
|
||||
</TabItem>
|
||||
<TabItem Header="Modbus">
|
||||
<TabItem Header="Modbus" TouchDown="TabItem_TouchDown">
|
||||
<DockPanel>
|
||||
<Grid DockPanel.Dock="Top" Height="75">
|
||||
<Grid DockPanel.Dock="Top" Height="70">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="170"/>
|
||||
<ColumnDefinition Width="430"/>
|
||||
<ColumnDefinition Width="300"/>
|
||||
<ColumnDefinition Width="280"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Button Margin="5" Padding="5,0" x:Name="btnStartStopModbus" Content="Start Modbus Connection" Grid.Column="0" Click="btnStartStopModbus_Click"/>
|
||||
@@ -226,21 +230,25 @@
|
||||
<ComboBox Grid.Column="3" x:Name="ModbusRegister" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="5" ItemsSource="{Binding ModbusRegisters, IsAsync=True}" SelectedIndex="0" />
|
||||
</Grid>
|
||||
<Grid Grid.Column="2">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="3*"/>
|
||||
<RowDefinition Height="4*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Button Grid.Column="0" Margin="5" Padding="5,0" x:Name="btnAddModbus" Content="Add To Table" Click="btnAddModbus_Click"/>
|
||||
<Button Grid.Column="1" Margin="5" Padding="5,0" x:Name="btnDelModbus" Content="Remove From Table" Click="btnDelModbus_Click"/>
|
||||
<Button Grid.Column="2" Margin="5" Padding="5,0" x:Name="btnClearModbus" Content="Clear Table" Click="btnClearModbus_Click"/>
|
||||
<Button Grid.Column="0" Margin="5,5,5,5" Padding="5,0" x:Name="btnAddModbus" Content="Add To Table" Click="btnAddModbus_Click" Grid.RowSpan="2"/>
|
||||
<Button Grid.Column="1" Margin="5,5,5,5" Padding="5,0" x:Name="btnDelModbus" Content="Remove From Table" Click="btnDelModbus_Click" Grid.RowSpan="2"/>
|
||||
<Button Grid.Column="2" Margin="5,5,5,5" Padding="5,0" x:Name="btnClearModbus" Content="Clear Table" Click="btnClearModbus_Click" Grid.RowSpan="2"/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<DockPanel DockPanel.Dock="Left" Width="400">
|
||||
<DockPanel DockPanel.Dock="Left" Width="300">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="2*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<DockPanel Grid.Row="0">
|
||||
<Grid DockPanel.Dock="Top">
|
||||
@@ -248,38 +256,39 @@
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="AUTO"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<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,5,0" Content="Connected Modbus Client" Grid.Column="0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontWeight="Bold" Height="26" VerticalAlignment="Top" HorizontalAlignment="Left"/>
|
||||
<Label Margin="5,0" Content="Count : 0" Grid.Column="1" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" x:Name="ConnectedModbusCount"/>
|
||||
</Grid>
|
||||
|
||||
<ListBox x:Name="ConnectedModbusClients" Margin="5,0" />
|
||||
</DockPanel>
|
||||
<DockPanel Grid.Row="1">
|
||||
<Label Content="FA Status to Register Definition" DockPanel.Dock="Top" HorizontalContentAlignment="Center" FontWeight="Bold"/>
|
||||
<Grid DockPanel.Dock="Bottom" Height="50">
|
||||
<Label Content="FA Status to Register Definition" DockPanel.Dock="Top" HorizontalContentAlignment="Center" FontWeight="Bold" HorizontalAlignment="Left"/>
|
||||
<Grid DockPanel.Dock="Bottom" Height="60">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Button x:Name="SetFSMtoModbusTranslationTable" Grid.Column="0" Content="Set Value" Margin="5,5,5,0" Padding="5,0" Click="SetFSMtoModbusTranslationTable_Click" Height="40" VerticalAlignment="Top"/>
|
||||
<Button x:Name="ResetFSMtoModbusTranslationTable" Grid.Column="1" Content="Reset Default" Margin="5" Padding="5,0" Click="ResetFSMtoModbusTranslationTable_Click"/>
|
||||
<Button x:Name="SetFSMtoModbusTranslationTable" Grid.Column="0" Content="Set Value" Margin="5,5,5,0" Padding="5,0" Click="SetFSMtoModbusTranslationTable_Click" Height="50" VerticalAlignment="Top"/>
|
||||
<Button x:Name="ResetFSMtoModbusTranslationTable" Grid.Column="1" Content="Reset Default" Margin="5" Padding="5,0" Click="ResetFSMtoModbusTranslationTable_Click" Height="50"/>
|
||||
</Grid>
|
||||
<DataGrid x:Name="FSMtoModbusTranslationTable" MouseDoubleClick="FSMtoModbusTranslationTable_MouseDoubleClick" AutoGenerateColumns="True" Margin="5,0" AutoGeneratingColumn="FSMtoModbusTranslationTable_AutoGeneratingColumn"/>
|
||||
|
||||
|
||||
<DataGrid x:Name="FSMtoModbusTranslationTable" MouseDoubleClick="FSMtoModbusTranslationTable_MouseDoubleClick" AutoGenerateColumns="True" Margin="5,0" ColumnWidth="*" AutoGeneratingColumn="FSMtoModbusTranslationTable_AutoGeneratingColumn" RowHeight="30"/>
|
||||
</DockPanel>
|
||||
</Grid>
|
||||
</DockPanel>
|
||||
<DockPanel>
|
||||
<Label Content="Modbus Table" HorizontalAlignment="Left" DockPanel.Dock="Top" FontWeight="Bold"/>
|
||||
<DataGrid MinRowHeight="50" x:Name="ModbusTable" AutoGenerateColumns="True" AutoGeneratingColumn="ModbusTable_AutoGeneratingColumn" ColumnWidth="*"/>
|
||||
|
||||
</DockPanel>
|
||||
<DataGrid MinRowHeight="50" x:Name="ModbusTable" AutoGenerateColumns="True" AutoGeneratingColumn="ModbusTable_AutoGeneratingColumn" />
|
||||
</DockPanel>
|
||||
</TabItem>
|
||||
<TabItem Header="TOA VX-3000">
|
||||
<TabItem Header="TOA VX-3000" TouchDown="TabItem_TouchDown">
|
||||
<DockPanel>
|
||||
<Grid DockPanel.Dock="Top" Height="75">
|
||||
<Grid DockPanel.Dock="Top" Height="70">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="170"/>
|
||||
<ColumnDefinition Width="430"/>
|
||||
<ColumnDefinition Width="300"/>
|
||||
<ColumnDefinition Width="290"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Button Margin="5,5,5,5" x:Name="btnStartStopVX" Padding="5,0" Content="Start VX-3000 Connection" Grid.Column="0" Click="btnStartStopVX_Click" />
|
||||
@@ -311,111 +320,108 @@
|
||||
</Grid>
|
||||
</Grid>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<DockPanel Grid.Row="0">
|
||||
<Label Content="TOA VX-3000" FontWeight="Bold" DockPanel.Dock="Top"/>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="300"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<DockPanel Grid.Column="1">
|
||||
<Label Content="TOA VX-3000" FontWeight="Bold" DockPanel.Dock="Top" HorizontalAlignment="Left"/>
|
||||
<DataGrid MinRowHeight="50" x:Name="VXTable" AutoGenerateColumns="True" AutoGeneratingColumn="VXTable_AutoGeneratingColumn"/>
|
||||
|
||||
</DockPanel>
|
||||
<DockPanel Grid.Row="1">
|
||||
<Label Content="FSM Condition" FontWeight="Bold" DockPanel.Dock="Top"/>
|
||||
<Grid DockPanel.Dock="Bottom" Height="75">
|
||||
<DockPanel Grid.Column="0">
|
||||
<Label Content="FSM Condition" FontWeight="Bold" DockPanel.Dock="Top" HorizontalAlignment="Left"/>
|
||||
<Grid DockPanel.Dock="Bottom" Height="50">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Button x:Name="btnResetFSMCon" Content="Reset Table" Height="65" Click="btnResetFSMCon_Click" Grid.Column="0"/>
|
||||
<Button x:Name="btnSetFSMCon" Content="Set Table" Height="65" Click="btnSetFSMCon_Click" Grid.Column="1"/>
|
||||
<Button x:Name="btnResetFSMCon" Content="Reset Table" Height="50" Click="btnResetFSMCon_Click" Grid.Column="0"/>
|
||||
<Button x:Name="btnSetFSMCon" Content="Set Table" Height="50" Click="btnSetFSMCon_Click" Grid.Column="1"/>
|
||||
</Grid>
|
||||
<DataGrid MinRowHeight="50" x:Name="ConditionTable" AutoGenerateColumns="True" AutoGeneratingColumn="ConditionTable_AutoGeneratingColumn" DockPanel.Dock="Top"/>
|
||||
|
||||
<DataGrid x:Name="ConditionTable" AutoGenerateColumns="True" AutoGeneratingColumn="ConditionTable_AutoGeneratingColumn" DockPanel.Dock="Top" ColumnWidth="*" RowHeight="30"/>
|
||||
</DockPanel>
|
||||
|
||||
</Grid>
|
||||
</DockPanel>
|
||||
</TabItem>
|
||||
<TabItem Header="Settings">
|
||||
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel Orientation="Vertical">
|
||||
<GroupBox>
|
||||
<GroupBox.Header>
|
||||
<TextBlock Text="Fire Alarm Settings" FontWeight="Bold" />
|
||||
</GroupBox.Header>
|
||||
<DockPanel>
|
||||
<Button x:Name="btnApplyFSMConfig" Content="Apply Config" Click="ApplyFSMConfig" DockPanel.Dock="Right" Margin="5,0" Padding="5,0"/>
|
||||
<StackPanel Orientation="Vertical">
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Content="NetGroup" Width="150"/>
|
||||
<TextBox x:Name="FSMConfig_NetGroup" Text="1" Padding="5,0" MinWidth="30" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="FSMConfig_NetGroup_PreviewTextInput" TextChanged="FSMConfig_NetGroup_TextChanged"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Content="NetNode" Width="150"/>
|
||||
<TextBox x:Name="FSMConfig_NetNode" Padding="5,0" Text="1" MinWidth="30" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="FSMConfig_NetNode_PreviewTextInput" TextChanged="FSMConfig_NetNode_TextChanged"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Content="PNA" Width="150"/>
|
||||
<TextBox x:Name="FSMConfig_PNA" Padding="5,0" Text="1" MinWidth="30" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="FSMConfig_PNA_PreviewTextInput" TextChanged="FSMConfig_PNA_TextChanged"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Content="Local IP Address" Width="150"/>
|
||||
<TextBox x:Name="FSMConfig_LocalIP" Padding="5,0" Text="0.0.0.0" MinWidth="75" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="FSMConfig_LocalIP_PreviewTextInput" TextChanged="FSMConfig_LocalIP_TextChanged"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Content="Use Multicast" Width="150"/>
|
||||
<CheckBox x:Name="FSM_UseMulticast" Content="No" IsChecked="False" VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Content="Multicast Address" Width="150"/>
|
||||
<TextBox x:Name="FSMConfig_MulticastAddress" Padding="5,0" Text="239.192.0.1" MinWidth="75" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="FSMConfig_MulticastAddress_PreviewTextInput" TextChanged="FSMConfig_MulticastAddress_TextChanged"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Content="Multicast Port" Width="150"/>
|
||||
<TextBox x:Name="FSMConfig_MulticastPort" Padding="5,0" Text="25000" MinWidth="50" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="FSMConfig_MulticastPort_PreviewTextInput" TextChanged="FSMConfig_MulticastPort_TextChanged"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</DockPanel>
|
||||
<TabItem Header="Settings" TouchDown="TabItem_TouchDown">
|
||||
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" IsDeferredScrollingEnabled="True" ScrollViewer.PanningMode="Both" >
|
||||
|
||||
</GroupBox>
|
||||
<StackPanel Orientation="Vertical" MinWidth="800" HorizontalAlignment="Stretch">
|
||||
<GroupBox>
|
||||
<GroupBox.Header>
|
||||
<TextBlock Text="Modbus Setting" FontWeight="Bold" />
|
||||
<TextBlock Text="Fire Alarm Settings" FontWeight="Bold" FontSize="20"/>
|
||||
</GroupBox.Header>
|
||||
<DockPanel>
|
||||
<Button x:Name="btnApplyModbusConfig" Content="Apply Config" Click="ApplyModbusConfig" DockPanel.Dock="Right" Margin="5,0" Padding="5,0"/>
|
||||
<StackPanel Orientation="Vertical">
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Width="150" Content="Listen Port"/>
|
||||
<TextBox x:Name="ModbusListenPort" Text="502" Padding="5,0" MinWidth="50" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="ModbusListenPort_PreviewTextInput" TextChanged="ModbusListenPort_TextChanged"/>
|
||||
<Label Content="NetGroup" Width="250"/>
|
||||
<TextBox x:Name="FSMConfig_NetGroup" Text="1" Padding="5,0" MinWidth="30" Width="500" Height="35" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="FSMConfig_NetGroup_PreviewTextInput" TextChanged="FSMConfig_NetGroup_TextChanged"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Width="150" Content="Device ID"/>
|
||||
<TextBox x:Name="ModbusDeviceID" Padding="5,0" Text="1" MinWidth="50" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="ModbusDeviceID_PreviewTextInput" TextChanged="ModbusDeviceID_TextChanged"/>
|
||||
<Label Content="NetNode" Width="250"/>
|
||||
<TextBox x:Name="FSMConfig_NetNode" Padding="5,0" Text="1" MinWidth="30" Width="500" Height="35" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="FSMConfig_NetNode_PreviewTextInput" TextChanged="FSMConfig_NetNode_TextChanged"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Width="150" Content="Max. Register"/>
|
||||
<TextBox x:Name="ModbusMaxRegister" Padding="5,0" Text="2000" MinWidth="50" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="ModbusMaxRegister_PreviewTextInput" TextChanged="ModbusMaxRegister_TextChanged"/>
|
||||
<Label Content="PNA" Width="250"/>
|
||||
<TextBox x:Name="FSMConfig_PNA" Padding="5,0" Text="1" MinWidth="30" Width="500" Height="35" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="FSMConfig_PNA_PreviewTextInput" TextChanged="FSMConfig_PNA_TextChanged"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Content="Local IP Address" Width="250"/>
|
||||
<TextBox x:Name="FSMConfig_LocalIP" Padding="5,0" Text="0.0.0.0" MinWidth="75" Width="500" Height="35" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="FSMConfig_LocalIP_PreviewTextInput" TextChanged="FSMConfig_LocalIP_TextChanged"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Content="Use Multicast" Width="250"/>
|
||||
<CheckBox x:Name="FSM_UseMulticast" Content="No" Width="500" Height="35" IsChecked="False" VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Content="Multicast Address" Width="250"/>
|
||||
<TextBox x:Name="FSMConfig_MulticastAddress" Padding="5,0" Text="239.192.0.1" MinWidth="75" Width="500" Height="35" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="FSMConfig_MulticastAddress_PreviewTextInput" TextChanged="FSMConfig_MulticastAddress_TextChanged"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Content="Multicast Port" Width="250"/>
|
||||
<TextBox x:Name="FSMConfig_MulticastPort" Padding="5,0" Text="25000" MinWidth="50" Width="500" Height="35" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="FSMConfig_MulticastPort_PreviewTextInput" TextChanged="FSMConfig_MulticastPort_TextChanged"/>
|
||||
</StackPanel>
|
||||
<Button x:Name="btnApplyFSMConfig" Content="Apply Config" Click="ApplyFSMConfig" DockPanel.Dock="Bottom" Margin="250,0" Padding="5,0" Width="500" Height="50" HorizontalAlignment="Left"/>
|
||||
</StackPanel>
|
||||
</DockPanel>
|
||||
</GroupBox>
|
||||
<GroupBox>
|
||||
<GroupBox.Header>
|
||||
<TextBlock Text="VX-3000" FontWeight="Bold" />
|
||||
<TextBlock Text="Modbus Setting" FontWeight="Bold" FontSize="20" HorizontalAlignment="Center"/>
|
||||
</GroupBox.Header>
|
||||
<DockPanel>
|
||||
<StackPanel Orientation="Vertical">
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Width="250" Content="Listen Port"/>
|
||||
<TextBox x:Name="ModbusListenPort" Text="502" Padding="5,0" MinWidth="50" Width="500" Height="35" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="ModbusListenPort_PreviewTextInput" TextChanged="ModbusListenPort_TextChanged"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Width="250" Content="Device ID"/>
|
||||
<TextBox x:Name="ModbusDeviceID" Padding="5,0" Text="1" MinWidth="50" Width="500" Height="35" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="ModbusDeviceID_PreviewTextInput" TextChanged="ModbusDeviceID_TextChanged"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Width="250" Content="Max. Register"/>
|
||||
<TextBox x:Name="ModbusMaxRegister" Padding="5,0" Text="2000" MinWidth="50" Height="35" Width="500" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="ModbusMaxRegister_PreviewTextInput" TextChanged="ModbusMaxRegister_TextChanged"/>
|
||||
</StackPanel>
|
||||
<Button x:Name="btnApplyModbusConfig" Content="Apply Config" Click="ApplyModbusConfig" DockPanel.Dock="Bottom" Margin="250,0" Padding="5,0" Width="500" Height="50" HorizontalAlignment="Left"/>
|
||||
</StackPanel>
|
||||
</DockPanel>
|
||||
</GroupBox>
|
||||
<GroupBox>
|
||||
<GroupBox.Header>
|
||||
<TextBlock Text="VX-3000" FontWeight="Bold" FontSize="20" DockPanel.Dock="Top" HorizontalAlignment="Center"/>
|
||||
</GroupBox.Header>
|
||||
<DockPanel Margin="-1,0,1,0">
|
||||
<Button x:Name="btnApplyVX3KConfig" Content="Apply Config" Margin="5,0" Padding="5,0" Click="ApplyVX3KConfig" DockPanel.Dock="Right"/>
|
||||
<StackPanel Orientation="Vertical">
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Width="150" Content="VX-3000 IP" />
|
||||
<TextBox x:Name="VX3K_IP" Padding="5,0" Text="192.168.14.1" MinWidth="75" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="VX3K_IP_PreviewTextInput" TextChanged="VX3K_IP_TextChanged"/>
|
||||
<Label Width="250" Content="VX-3000 IP" />
|
||||
<TextBox x:Name="VX3K_IP" Padding="5,0" Text="192.168.14.1" MinWidth="75" Width="500" Height="35" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="VX3K_IP_PreviewTextInput" TextChanged="VX3K_IP_TextChanged"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5">
|
||||
<Label Width="150" Content="VX-3000 Port" />
|
||||
<TextBox x:Name="VX3K_Port" Padding="5,0" Text="5000" MinWidth="50" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="VX3K_Port_PreviewTextInput" TextChanged="VX3K_Port_TextChanged" />
|
||||
<Label Width="250" Content="VX-3000 Port" />
|
||||
<TextBox x:Name="VX3K_Port" Padding="5,0" Text="5000" MinWidth="50" Width="500" Height="35" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="VX3K_Port_PreviewTextInput" TextChanged="VX3K_Port_TextChanged" />
|
||||
</StackPanel>
|
||||
<Button x:Name="btnApplyVX3KConfig" Content="Apply Config" Margin="250,0" Padding="5,0" Click="ApplyVX3KConfig" DockPanel.Dock="Bottom" Width="500" Height="50" HorizontalAlignment="Left"/>
|
||||
</StackPanel>
|
||||
</DockPanel>
|
||||
</GroupBox>
|
||||
@@ -423,7 +429,6 @@
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
|
||||
</DockPanel>
|
||||
</Grid>
|
||||
</Window>
|
||||
|
||||
@@ -213,6 +213,7 @@ namespace FAtoPA.Net
|
||||
String json = JsonSerializer.Serialize(ModbusTranslationTable);
|
||||
File.WriteAllText("ModbusTranslationTable.json", json);
|
||||
Debug.WriteLine("ModbusTranslationTable saved");
|
||||
FSMtoModbusTranslationTable.ItemsSource = ModbusTranslationTable;
|
||||
} catch (Exception e)
|
||||
{
|
||||
Debug.WriteLine("Error saving ModbusTranslationTable : " + e.Message);
|
||||
@@ -302,6 +303,7 @@ namespace FAtoPA.Net
|
||||
String json = JsonSerializer.Serialize(FSMConditionTable);
|
||||
File.WriteAllText("FSMConditionTable.json", json);
|
||||
Debug.WriteLine("FSMConditionTable saved");
|
||||
ConditionTable.ItemsSource = FSMConditionTable;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -403,7 +405,7 @@ namespace FAtoPA.Net
|
||||
fsm.AddListener(new FSMTableUpdater(FsmTableMember, DetectedSIID, DetectedSIIDCount));
|
||||
fsm.AddListener(new ModbusTriggerFromFSM(FsmTableMember, ModbusTableMember, modbusSlave, ModbusTranslationTable));
|
||||
fsm.AddListener(new VXTriggerFromFSM(FsmTableMember, VXTableMember, vx3k, ConditionON, ConditionOFF));
|
||||
VerifyDataGridBinding(ConditionTable);
|
||||
|
||||
}
|
||||
|
||||
private void Timer1s_Tick(object sender, EventArgs e)
|
||||
@@ -1329,6 +1331,8 @@ namespace FAtoPA.Net
|
||||
var result = MessageBox.Show($"Reset FSM to Modbus Translation Table ?", "Reset FSM to Modbus Translation Table", MessageBoxButton.YesNo);
|
||||
if (result == MessageBoxResult.Yes)
|
||||
{
|
||||
if (ModbusTranslationTable != null) ModbusTranslationTable.Clear();
|
||||
|
||||
Create_Default_ModbusTranslationTable();
|
||||
}
|
||||
|
||||
@@ -1363,6 +1367,7 @@ namespace FAtoPA.Net
|
||||
var result = MessageBox.Show($"Reset FSM Condition Table ?", "Reset FSM Condition Table", MessageBoxButton.YesNo);
|
||||
if (result == MessageBoxResult.Yes)
|
||||
{
|
||||
if (FSMConditionTable != null) FSMConditionTable.Clear();
|
||||
Create_Default_ConditionTable();
|
||||
}
|
||||
}
|
||||
@@ -1375,31 +1380,30 @@ namespace FAtoPA.Net
|
||||
Save_ConditionTable();
|
||||
}
|
||||
}
|
||||
// Method to verify if the DataGrid is correctly bound to the data source
|
||||
private void VerifyDataGridBinding(DataGrid dataGrid)
|
||||
|
||||
private void btnStartStopFSM_TouchEnter(object sender, TouchEventArgs e)
|
||||
{
|
||||
if (dataGrid.ItemsSource == null)
|
||||
{
|
||||
Debug.WriteLine("DataGrid is not bound to any data source.");
|
||||
return;
|
||||
}
|
||||
btnStartStopFSM_Click(sender, e);
|
||||
}
|
||||
|
||||
var dataSourceType = dataGrid.ItemsSource.GetType();
|
||||
Debug.WriteLine($"DataGrid is bound to data source of type: {dataSourceType.Name}");
|
||||
|
||||
// Check if the data source is an ObservableCollection
|
||||
if (dataSourceType.IsGenericType && dataSourceType.GetGenericTypeDefinition() == typeof(ObservableCollection<>))
|
||||
private void TabItem_TouchDown(object sender, TouchEventArgs e)
|
||||
{
|
||||
if (sender is TabItem touchedTabItem)
|
||||
{
|
||||
Debug.WriteLine("DataGrid is bound to an ObservableCollection.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.WriteLine("DataGrid is bound to a different type of collection.");
|
||||
// Set the touched TabItem as the selected one
|
||||
mainTab.SelectedItem = touchedTabItem;
|
||||
e.Handled = true; // Mark the event as handled
|
||||
}
|
||||
}
|
||||
|
||||
private void mainTab_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <summary>e
|
||||
/// Event Handler for VX3K
|
||||
/// </summary>
|
||||
class VX3KEvent : EventInterface
|
||||
|
||||
Reference in New Issue
Block a user