commit 21/11/2024

This commit is contained in:
2024-11-21 16:33:25 +07:00
parent 84885e5047
commit 869ab4bc21
7 changed files with 200 additions and 107 deletions

View File

@@ -188,23 +188,23 @@ namespace FAtoPA.Net
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
Debug.WriteLine("Window Closing");
timer1s?.Stop();
fsm?.Stop();
modbusSlave?.Stop();
vx3k?.Disconnect();
timer1s.Stop();
fsm.Stop();
modbusSlave.Stop();
vx3k.Disconnect();
}
private void btnStartStopFSM_Click(object sender, RoutedEventArgs e)
{
if (FSM.Started)
{
fsm?.Stop();
fsm.Stop();
btnStartStopFSM.Content = "Start FSM Connection";
FSM.Started = false;
}
else
{
fsm?.Start();
fsm.Start();
btnStartStopFSM.Content = "Stop FSM Connection";
FSM.Started = true;
}
@@ -214,7 +214,7 @@ namespace FAtoPA.Net
{
if (ModbusSlave.Started)
{
modbusSlave?.Stop();
modbusSlave.Stop();
btnStartStopModbus.Content = "Start Modbus Connection";
ModbusSlave.Started = false;
}
@@ -222,7 +222,7 @@ namespace FAtoPA.Net
{
if (config != null)
{
modbusSlave?.Start(config.Modbus_ListenPort);
modbusSlave.Start(config.Modbus_ListenPort);
btnStartStopModbus.Content = "Stop Modbus Connection";
ModbusSlave.Started = true;
@@ -235,7 +235,7 @@ namespace FAtoPA.Net
{
if (VX3K.Started)
{
vx3k?.Disconnect();
vx3k.Disconnect();
btnStartStopVX.Content = "Start VX Connection";
VX3K.Started = false;
}
@@ -243,7 +243,7 @@ namespace FAtoPA.Net
{
if (config != null)
{
vx3k?.Connect(config.VX_TargetIP, config.VX_TargetPort);
vx3k.Connect(config.VX_TargetIP, config.VX_TargetPort);
btnStartStopVX.Content = "Stop VX Connection";
VX3K.Started = true;
}
@@ -795,25 +795,21 @@ namespace FAtoPA.Net
private void btnDelSIID_Click(object sender, RoutedEventArgs e)
{
SIID selected = GetSIID();
if (selected != null)
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)
{
if (database != null)
{
if (database.RemoveFSMDatabySIID(selected.ToString()))
{
FSMTable.ItemsSource = database.GetFSMDatas();
FSMSIID.Remove(selected.ToString());
}
else MessageBox.Show("Failed to delete from database");
}
else MessageBox.Show("Database is null");
FsmTableMember.Remove(selected);
database.RemoveFSMDatabySIID(selected.SIID);
}
}
else MessageBox.Show("Invalid Selection");
else MessageBox.Show("Select a row in table to delete");
}
private void btnClearSIID_Click(object sender, RoutedEventArgs e)
@@ -821,16 +817,9 @@ namespace FAtoPA.Net
MessageBoxResult result = MessageBox.Show("Clear all SIID ?", "Clear SIID", MessageBoxButton.YesNo);
if (result == MessageBoxResult.Yes)
{
if (database != null)
{
if (database.ClearFSMTable())
{
FSMTable.ItemsSource = database.GetFSMDatas();
FSMSIID.Clear();
}
else MessageBox.Show("Failed to clear database");
}
else MessageBox.Show("Database is null");
FsmTableMember.Clear();
database.ClearFSMTable();
}
}
@@ -1136,6 +1125,27 @@ namespace FAtoPA.Net
break;
}
}
private void AddSelectedSIID(object sender, RoutedEventArgs e)
{
var lbl = DetectedSIID.SelectedItem;
if (lbl != null && lbl is Label)
{
Label selected = (Label)lbl;
if (selected.Tag is NodeData)
{
NodeData data = (NodeData)selected.Tag;
FSMData fSMData = new FSMData(data.SIID.ToString(), true, data.Description);
if (database.AddFSMData(fSMData))
{
FsmTableMember.Add(fSMData);
database.AddFSMData(fSMData);
}
else MessageBox.Show("Failed to add to database");
}
else MessageBox.Show("Selected SIID dont have NodeData");
} else MessageBox.Show("No SIID Selected");
}
}
// event handler for VX3K
@@ -1282,10 +1292,10 @@ namespace FAtoPA.Net
// Class ini untuk update Table FSM
class FSMTableUpdater : FSMResultInterface
{
// dari database
ObservableCollection<FSMData> data;
ListBox listbox;
Label countlabel;
int count = 0;
public FSMTableUpdater(ObservableCollection<FSMData> data, ListBox listbox, Label countlabel)
{
this.data = data;
@@ -1295,23 +1305,33 @@ namespace FAtoPA.Net
public void DiscoveredSIID(string SIID, NodeData type)
{
Debug.WriteLine("Discovered SIID : " + SIID + " Type : " + type);
count++;
countlabel.Dispatcher.Invoke(() => countlabel.Content = "Count : " + count);
listbox.Dispatcher.Invoke(() => listbox.Items.Add(new Label() { Content = SIID + " : " + type.ToString() }));
Debug.WriteLine("Discovered SIID : " + SIID + " Type : " + type.Description);
Application.Current.Dispatcher.Invoke(() =>
{
listbox.Items.Add(new Label() { Content = $"{SIID} : {type.Label} : {type.Description}", Tag = type });
countlabel.Content = "Count : " + listbox.Items.Count;
});
}
public void NewState(string SIID, NodeState previous, NodeState current)
{
Debug.WriteLine("New State : " + SIID + " Previous : " + previous + " Current : " + current);
//FSMData dd = data.First(d => d.SIID == SIID);
//if (dd != null)
//{
// dd.LastUpdate = DateTime.Now.ToString();
// dd.Value = current.LogicalState ?? "Unknown";
//}
Debug.WriteLine("New State : " + SIID + " Previous : " + previous?.LogicalState + " Current : " + current.LogicalState);
if (data != null)
{
foreach (var dd in data)
{
if (dd.SIID.Equals(SIID))
{
dd.LastUpdate = DateTime.Now.ToString();
dd.Value = current.LogicalState ?? "Unknown";
Debug.WriteLine($"Changing row in FSM Table for SIID={SIID} Value={dd.Value}");
return;
}
}
}
Debug.WriteLine($"FSM Table dont have row with SIID={SIID}");
}
@@ -1320,6 +1340,7 @@ namespace FAtoPA.Net
// Class ini untuk Update Modbus Register dari FSM Update
class ModbusTriggerFromFSM : FSMResultInterface
{
// dari database
ObservableCollection<FSMData> source;
ObservableCollection<ModbusData> data;
ModbusSlave slave;