Delete and Clear button in tables

This commit is contained in:
2024-11-22 13:38:21 +07:00
parent 092429cec8
commit c34aa59ed1
3 changed files with 54 additions and 109 deletions

View File

@@ -110,7 +110,7 @@
<Button Grid.Column="2" Margin="5" x:Name="btnClearSIID" Content="Clear Table" Click="btnClearSIID_Click"/> <Button Grid.Column="2" Margin="5" x:Name="btnClearSIID" Content="Clear Table" Click="btnClearSIID_Click"/>
</Grid> </Grid>
</Grid> </Grid>
<DockPanel DockPanel.Dock="Left" Width="300"> <DockPanel DockPanel.Dock="Left" Width="400">
<Label Content="Detected SIID" DockPanel.Dock="Top" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/> <Label Content="Detected SIID" DockPanel.Dock="Top" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<Grid DockPanel.Dock="Bottom" Height="50"> <Grid DockPanel.Dock="Bottom" Height="50">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
@@ -161,7 +161,7 @@
<Button Grid.Column="2" Margin="5" x:Name="btnClearModbus" Content="Clear Table" Click="btnClearModbus_Click"/> <Button Grid.Column="2" Margin="5" x:Name="btnClearModbus" Content="Clear Table" Click="btnClearModbus_Click"/>
</Grid> </Grid>
</Grid> </Grid>
<DockPanel DockPanel.Dock="Left" Width="200"> <DockPanel DockPanel.Dock="Left" Width="400">
<Label Content="Connected Modbus Client" DockPanel.Dock="Top" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/> <Label Content="Connected Modbus Client" DockPanel.Dock="Top" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<Label Content="Count : 0" DockPanel.Dock="Bottom" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" x:Name="ConnectedModbusCount"/> <Label Content="Count : 0" DockPanel.Dock="Bottom" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" x:Name="ConnectedModbusCount"/>
<ListBox x:Name="ConnectedModbusClients" /> <ListBox x:Name="ConnectedModbusClients" />

View File

@@ -817,21 +817,21 @@ namespace FAtoPA.Net
private void btnDelSIID_Click(object sender, RoutedEventArgs e) private void btnDelSIID_Click(object sender, RoutedEventArgs e)
{ {
//int selectedindex = FSMTable.SelectedIndex; if (FSMTable != null)
//if (selectedindex >= 0) {
//{ var selected = FSMTable.SelectedItem as FSMData;
// FSMData selected = (FSMData)FSMTable.Items[selectedindex]; if (selected != null)
// MessageBoxResult result = MessageBox.Show("Delete SIID " + selected.ToString() + " ?", "Delete SIID", MessageBoxButton.YesNo); {
// if (result == MessageBoxResult.Yes) MessageBoxResult result = MessageBox.Show($"Are you sure want to delete SIID={selected.SIID}, Label={selected.Label}, Type={selected.Type} ?", "Delete SIID", MessageBoxButton.YesNo);
// { if (result == MessageBoxResult.Yes)
// FsmTableMember.Remove(selected); {
// database.RemoveFSMDatabySIID(selected.SIID); FsmTableMember.Remove(selected);
// FSMSIID.Remove(selected.SIID); database.RemoveFSMDatabySIID(selected.SIID);
// } FSMSIID.Remove(selected.SIID);
//} }
//else MessageBox.Show("Select a row in table to delete"); }
else MessageBox.Show("Select a row in table to delete");
}
} }
private void btnClearSIID_Click(object sender, RoutedEventArgs e) private void btnClearSIID_Click(object sender, RoutedEventArgs e)
@@ -919,37 +919,21 @@ namespace FAtoPA.Net
private void btnDelModbus_Click(object sender, RoutedEventArgs e) private void btnDelModbus_Click(object sender, RoutedEventArgs e)
{ {
String ssid = ""; if (ModbusTable != null)
String reg = "";
if (ModbusSIIDComboBox.SelectedItem != null)
{ {
ssid = (string)ModbusSIIDComboBox.SelectedItem; var selected = ModbusTable.SelectedItem as ModbusData;
} if (selected != null)
else
{ {
MessageBox.Show("Invalid SIID"); return; MessageBoxResult xx = MessageBox.Show($"Are you sure want to delete SIID={selected.SIID}, Register={selected.Register} ?", "Delete SIID", MessageBoxButton.YesNo);
} if (xx == MessageBoxResult.Yes)
if (ModbusRegister.SelectedItem != null)
{ {
reg = (String)ModbusRegister.SelectedItem; database.RemoveModbusDatabySIID(selected.SIID);
ModbusTableMember.Remove(selected);
} }
else
{
MessageBox.Show("Invalid Register"); return;
} }
MessageBoxResult result = MessageBox.Show("Delete SIID " + ssid + " Link with Register " + reg + " ?", "Delete Modbus Linkage", MessageBoxButton.YesNo); else MessageBox.Show("Select a row in Table to delete");
if (result == MessageBoxResult.Yes)
{
if (database != null)
{
if (database.RemoveModbusDatabySIID(ssid))
{
ModbusTable.ItemsSource = database.GetModbusDatas();
}
else MessageBox.Show("Failed to delete from database");
}
else MessageBox.Show("Database is null");
} }
} }
private void btnClearModbus_Click(object sender, RoutedEventArgs e) private void btnClearModbus_Click(object sender, RoutedEventArgs e)
@@ -957,15 +941,8 @@ namespace FAtoPA.Net
MessageBoxResult result = MessageBox.Show("Clear all Modbus Linkage ?", "Clear Modbus Linkage", MessageBoxButton.YesNo); MessageBoxResult result = MessageBox.Show("Clear all Modbus Linkage ?", "Clear Modbus Linkage", MessageBoxButton.YesNo);
if (result == MessageBoxResult.Yes) if (result == MessageBoxResult.Yes)
{ {
if (database != null) database.ClearModbusTable();
{ ModbusTableMember.Clear();
if (database.ClearModbusTable())
{
ModbusTable.ItemsSource = database.GetModbusDatas();
}
else MessageBox.Show("Failed to clear database");
}
else MessageBox.Show("Database is null");
} }
} }
@@ -1017,45 +994,19 @@ namespace FAtoPA.Net
private void btnDelVX_Click(object sender, RoutedEventArgs e) private void btnDelVX_Click(object sender, RoutedEventArgs e)
{ {
String ssid = ""; if (VXTable != null)
int id = 0;
int cin = 0;
if (VXSIIDComboBox.SelectedItem != null)
{ {
ssid = (string)VXSIIDComboBox.SelectedItem; var selected = VXTable.SelectedItem as VXData;
} if (selected != null)
else
{ {
MessageBox.Show("Invalid SIID"); return; var result = MessageBox.Show($"Delete SIID={selected.SIID}, ID={selected.FrameID}, CIN={selected.CIN} ?", "Delete SIID", MessageBoxButton.YesNo);
}
if (VXFrame.SelectedItem != null)
{
id = (int)VXFrame.SelectedItem;
}
else
{
MessageBox.Show("Invalid ID"); return;
}
if (VXCIN.SelectedItem != null)
{
cin = (int)VXCIN.SelectedItem;
}
else
{
MessageBox.Show("Invalid CIN"); return;
}
MessageBoxResult result = MessageBox.Show("Delete SIID " + ssid + " Link with Frame " + id + " CIN " + cin + " ?", "Delete VX Linkage", MessageBoxButton.YesNo);
if (result == MessageBoxResult.Yes) if (result == MessageBoxResult.Yes)
{ {
if (database != null) database.RemoveVXDatabySIID(selected.SIID);
{ VXTableMember.Remove(selected);
if (database.RemoveVXDatabySIID(ssid))
{
VXTable.ItemsSource = database.GetVXDatas();
} }
else MessageBox.Show("Failed to delete from database");
} }
else MessageBox.Show("Database is null"); else MessageBox.Show("Select a row in Table to delete");
} }
} }
@@ -1064,15 +1015,8 @@ namespace FAtoPA.Net
MessageBoxResult result = MessageBox.Show("Clear all VX Linkage ?", "Clear VX Linkage", MessageBoxButton.YesNo); MessageBoxResult result = MessageBox.Show("Clear all VX Linkage ?", "Clear VX Linkage", MessageBoxButton.YesNo);
if (result == MessageBoxResult.Yes) if (result == MessageBoxResult.Yes)
{ {
if (database != null) database.ClearVXTable();
{ VXTableMember.Clear();
if (database.ClearVXTable())
{
VXTable.ItemsSource = database.GetVXDatas();
}
else MessageBox.Show("Failed to clear database");
}
else MessageBox.Show("Database is null");
} }
} }
@@ -1234,6 +1178,7 @@ namespace FAtoPA.Net
l.Margin = new Thickness(5, 0, 5, 0); l.Margin = new Thickness(5, 0, 5, 0);
l.TextWrapping = TextWrapping.Wrap; l.TextWrapping = TextWrapping.Wrap;
UpdateLabel(l, client); UpdateLabel(l, client);
l.Tag = client;
connectedlist.Items.Add(l); connectedlist.Items.Add(l);
} }
@@ -1266,6 +1211,7 @@ namespace FAtoPA.Net
public void TXRXStatusUpdate(ModbusClientRecord client) public void TXRXStatusUpdate(ModbusClientRecord client)
{ {
connectedlist.Dispatcher.Invoke(() => {
foreach (var item in connectedlist.Items) foreach (var item in connectedlist.Items)
{ {
TextBlock l = (TextBlock)item; TextBlock l = (TextBlock)item;
@@ -1275,11 +1221,14 @@ namespace FAtoPA.Net
return; return;
} }
} }
});
} }
private void UpdateLabel(TextBlock l, ModbusClientRecord client) private void UpdateLabel(TextBlock l, ModbusClientRecord client)
{ {
l.Text = client.remoteEP + " TX: " + client.TXBytes + " RX: " + client.RXBytes + "TXOK: " + client.TXResponse + " RXOK: " + client.RXValidRequest;
l.Text = client.remoteEP + "/TX: " + client.TXBytes + "/RX: " + client.RXBytes + "/TXOK: " + client.TXResponse + "/RXOK: " + client.RXValidRequest+"/RXFAIL: "+client.RXInvalidRequest;
} }
} }

View File

@@ -364,9 +364,6 @@ namespace FAtoPA
if (readcount >= 12) if (readcount >= 12)
{ {
Debug.WriteLine($"Read from {key}, size={readcount}");
String cmdString = BitConverter.ToString(cmd);
Debug.WriteLine($"cmd={cmdString}");
client.RXBytes += (uint)readcount; client.RXBytes += (uint)readcount;
UInt16 transactionID = GetTransactionID(cmd); UInt16 transactionID = GetTransactionID(cmd);
@@ -375,9 +372,7 @@ namespace FAtoPA
Byte unitID = GetUnitID(cmd); Byte unitID = GetUnitID(cmd);
Byte functionCode = GetFunctionCode(cmd); Byte functionCode = GetFunctionCode(cmd);
byte[] payload = GetModbusPayload(cmd); byte[] payload = GetModbusPayload(cmd);
Debug.WriteLine($"TransactionID={transactionID}, ProtocolID={protocolID}, Length={length}, UnitID={unitID}, FunctionCode={functionCode}, Payload={payload.Length}");
String payloadstring = BitConverter.ToString(payload);
Debug.WriteLine($"Payload={payloadstring}");
if (protocolID == 0 && length == payload.Length + 2 && unitID == 1) if (protocolID == 0 && length == payload.Length + 2 && unitID == 1)
{ {
if (functionCode == 3) if (functionCode == 3)
@@ -495,6 +490,7 @@ namespace FAtoPA
client.TXBytes += (uint)response.Length; client.TXBytes += (uint)response.Length;
client.TXResponse++; client.TXResponse++;
} }
if (_event != null) _event.TXRXStatusUpdate(client);
} }
else if (readcount == 0) break; // connection closed else if (readcount == 0) break; // connection closed