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"/>
</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"/>
<Grid DockPanel.Dock="Bottom" Height="50">
<Grid.ColumnDefinitions>
@@ -161,7 +161,7 @@
<Button Grid.Column="2" Margin="5" x:Name="btnClearModbus" Content="Clear Table" Click="btnClearModbus_Click"/>
</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="Count : 0" DockPanel.Dock="Bottom" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" x:Name="ConnectedModbusCount"/>
<ListBox x:Name="ConnectedModbusClients" />

View File

@@ -817,21 +817,21 @@ namespace FAtoPA.Net
private void btnDelSIID_Click(object sender, RoutedEventArgs e)
{
//int selectedindex = FSMTable.SelectedIndex;
//if (selectedindex >= 0)
//{
// FSMData selected = (FSMData)FSMTable.Items[selectedindex];
// MessageBoxResult result = MessageBox.Show("Delete SIID " + selected.ToString() + " ?", "Delete SIID", MessageBoxButton.YesNo);
// if (result == MessageBoxResult.Yes)
// {
// FsmTableMember.Remove(selected);
// database.RemoveFSMDatabySIID(selected.SIID);
// FSMSIID.Remove(selected.SIID);
// }
//}
//else MessageBox.Show("Select a row in table to delete");
if (FSMTable != null)
{
var selected = FSMTable.SelectedItem as FSMData;
if (selected != null)
{
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);
FSMSIID.Remove(selected.SIID);
}
}
else MessageBox.Show("Select a row in table to delete");
}
}
private void btnClearSIID_Click(object sender, RoutedEventArgs e)
@@ -919,37 +919,21 @@ namespace FAtoPA.Net
private void btnDelModbus_Click(object sender, RoutedEventArgs e)
{
String ssid = "";
String reg = "";
if (ModbusSIIDComboBox.SelectedItem != null)
if (ModbusTable != null)
{
ssid = (string)ModbusSIIDComboBox.SelectedItem;
}
else
{
MessageBox.Show("Invalid SIID"); return;
}
if (ModbusRegister.SelectedItem != null)
{
reg = (String)ModbusRegister.SelectedItem;
}
else
{
MessageBox.Show("Invalid Register"); return;
}
MessageBoxResult result = MessageBox.Show("Delete SIID " + ssid + " Link with Register " + reg + " ?", "Delete Modbus Linkage", MessageBoxButton.YesNo);
if (result == MessageBoxResult.Yes)
{
if (database != null)
var selected = ModbusTable.SelectedItem as ModbusData;
if (selected != null)
{
if (database.RemoveModbusDatabySIID(ssid))
MessageBoxResult xx = MessageBox.Show($"Are you sure want to delete SIID={selected.SIID}, Register={selected.Register} ?", "Delete SIID", MessageBoxButton.YesNo);
if (xx == MessageBoxResult.Yes)
{
ModbusTable.ItemsSource = database.GetModbusDatas();
database.RemoveModbusDatabySIID(selected.SIID);
ModbusTableMember.Remove(selected);
}
else MessageBox.Show("Failed to delete from database");
}
else MessageBox.Show("Database is null");
else MessageBox.Show("Select a row in Table to delete");
}
}
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);
if (result == MessageBoxResult.Yes)
{
if (database != null)
{
if (database.ClearModbusTable())
{
ModbusTable.ItemsSource = database.GetModbusDatas();
}
else MessageBox.Show("Failed to clear database");
}
else MessageBox.Show("Database is null");
database.ClearModbusTable();
ModbusTableMember.Clear();
}
}
@@ -1017,45 +994,19 @@ namespace FAtoPA.Net
private void btnDelVX_Click(object sender, RoutedEventArgs e)
{
String ssid = "";
int id = 0;
int cin = 0;
if (VXSIIDComboBox.SelectedItem != null)
if (VXTable != null)
{
ssid = (string)VXSIIDComboBox.SelectedItem;
}
else
{
MessageBox.Show("Invalid SIID"); return;
}
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 (database != null)
var selected = VXTable.SelectedItem as VXData;
if (selected != null)
{
if (database.RemoveVXDatabySIID(ssid))
var result = MessageBox.Show($"Delete SIID={selected.SIID}, ID={selected.FrameID}, CIN={selected.CIN} ?", "Delete SIID", MessageBoxButton.YesNo);
if (result == MessageBoxResult.Yes)
{
VXTable.ItemsSource = database.GetVXDatas();
database.RemoveVXDatabySIID(selected.SIID);
VXTableMember.Remove(selected);
}
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);
if (result == MessageBoxResult.Yes)
{
if (database != null)
{
if (database.ClearVXTable())
{
VXTable.ItemsSource = database.GetVXDatas();
}
else MessageBox.Show("Failed to clear database");
}
else MessageBox.Show("Database is null");
database.ClearVXTable();
VXTableMember.Clear();
}
}
@@ -1234,6 +1178,7 @@ namespace FAtoPA.Net
l.Margin = new Thickness(5, 0, 5, 0);
l.TextWrapping = TextWrapping.Wrap;
UpdateLabel(l, client);
l.Tag = client;
connectedlist.Items.Add(l);
}
@@ -1266,20 +1211,24 @@ namespace FAtoPA.Net
public void TXRXStatusUpdate(ModbusClientRecord client)
{
foreach (var item in connectedlist.Items)
{
TextBlock l = (TextBlock)item;
if (l.Tag == client)
connectedlist.Dispatcher.Invoke(() => {
foreach (var item in connectedlist.Items)
{
UpdateLabel(l, client);
return;
TextBlock l = (TextBlock)item;
if (l.Tag == client)
{
UpdateLabel(l, client);
return;
}
}
}
});
}
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)
{
Debug.WriteLine($"Read from {key}, size={readcount}");
String cmdString = BitConverter.ToString(cmd);
Debug.WriteLine($"cmd={cmdString}");
client.RXBytes += (uint)readcount;
UInt16 transactionID = GetTransactionID(cmd);
@@ -375,9 +372,7 @@ namespace FAtoPA
Byte unitID = GetUnitID(cmd);
Byte functionCode = GetFunctionCode(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 (functionCode == 3)
@@ -495,6 +490,7 @@ namespace FAtoPA
client.TXBytes += (uint)response.Length;
client.TXResponse++;
}
if (_event != null) _event.TXRXStatusUpdate(client);
}
else if (readcount == 0) break; // connection closed