Skip to content

Commit 78ec7f1

Browse files
author
SG
committed
fix: load and save of workspace
1 parent 7dd2dbb commit 78ec7f1

File tree

2 files changed

+77
-63
lines changed

2 files changed

+77
-63
lines changed

EasyModbusAdvancedClient/AddConnectionForm.cs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -82,16 +82,6 @@ void Button1Click(object sender, EventArgs e)
8282
if (!editMode)
8383
{
8484
easyModbusManager.AddConnection(connectionProperties);
85-
if (connectionProperties.ModbusTypeProperty == ModbusType.ModbusTCP)
86-
{
87-
connectionProperties.modbusClient = new EasyModbus.ModbusClient();
88-
connectionProperties.modbusClient.UnitIdentifier = (byte)connectionProperties.SlaveID;
89-
}
90-
else
91-
{
92-
connectionProperties.modbusClient = new EasyModbus.ModbusClient(connectionProperties.ComPort);
93-
connectionProperties.modbusClient.UnitIdentifier = (byte)connectionProperties.SlaveID;
94-
}
9585
}
9686
else
9787
easyModbusManager.EditConnection(connectionProperties, indexToEdit);

EasyModbusAdvancedClient/EasyModbusManager.cs

Lines changed: 77 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,19 @@ public void AddConnection(ConnectionProperties connectionProperties)
5454
throw new Exception("Duplicate connection Name detected");
5555
}
5656
}
57+
58+
// create modbus client accordingly
59+
if (connectionProperties.ModbusTypeProperty == ModbusType.ModbusTCP)
60+
{
61+
connectionProperties.modbusClient = new EasyModbus.ModbusClient();
62+
connectionProperties.modbusClient.UnitIdentifier = (byte)connectionProperties.SlaveID;
63+
}
64+
else
65+
{
66+
connectionProperties.modbusClient = new EasyModbus.ModbusClient(connectionProperties.ComPort);
67+
connectionProperties.modbusClient.UnitIdentifier = (byte)connectionProperties.SlaveID;
68+
}
69+
5770
connectionPropertiesList.Add(connectionProperties);
5871
if (connectionPropertiesListChanged != null)
5972
connectionPropertiesListChanged(this);
@@ -195,67 +208,74 @@ public void WriteXML(DataGridView dataGridView)
195208
{
196209
XmlDocument xmlDocument = new XmlDocument();
197210
XmlNode xmlRoot;
198-
XmlNode xmlChild1;
199-
XmlNode xmlChild2, xmlChild3;
211+
XmlNode xmlNodeConnection, xmlNodeConnectionProp;
212+
XmlNode xmlNodeFunctionCodes, xmlNodeFunctionCodesProp;
213+
XmlNode xmlNodeDataGrid, xmlNodeDataGridLines, xmlNodeDataGridLinesProp;
200214
xmlRoot = xmlDocument.CreateElement("ModbusConfiguration");
201215
for (int i = 0; i < this.connectionPropertiesList.Count; i++)
202216
{
203-
xmlChild1 = xmlDocument.CreateElement("connection");
204-
xmlChild2 = xmlDocument.CreateElement("connectionName");
205-
xmlChild2.InnerText = this.connectionPropertiesList[i].ConnectionName;
206-
xmlChild1.AppendChild(xmlChild2);
207-
xmlChild2 = xmlDocument.CreateElement("ipAddress");
208-
xmlChild2.InnerText = this.connectionPropertiesList[i].ModbusTCPAddress;
209-
xmlChild1.AppendChild(xmlChild2);
210-
xmlChild2 = xmlDocument.CreateElement("port");
211-
xmlChild2.InnerText = this.connectionPropertiesList[i].Port.ToString();
212-
xmlChild1.AppendChild(xmlChild2);
213-
xmlChild2 = xmlDocument.CreateElement("cyclicFlag");
214-
xmlChild2.InnerText = this.connectionPropertiesList[i].CyclicFlag.ToString();
215-
xmlChild1.AppendChild(xmlChild2);
216-
xmlChild2 = xmlDocument.CreateElement("cycleTime");
217-
xmlChild2.InnerText = this.connectionPropertiesList[i].CycleTime.ToString();
218-
xmlChild1.AppendChild(xmlChild2);
217+
xmlNodeConnection = xmlDocument.CreateElement("connection");
218+
xmlNodeConnectionProp = xmlDocument.CreateElement("connectionName");
219+
xmlNodeConnectionProp.InnerText = this.connectionPropertiesList[i].ConnectionName;
220+
xmlNodeConnection.AppendChild(xmlNodeConnectionProp);
221+
xmlNodeConnectionProp = xmlDocument.CreateElement("ipAddress");
222+
xmlNodeConnectionProp.InnerText = this.connectionPropertiesList[i].ModbusTCPAddress;
223+
xmlNodeConnection.AppendChild(xmlNodeConnectionProp);
224+
xmlNodeConnectionProp = xmlDocument.CreateElement("port");
225+
xmlNodeConnectionProp.InnerText = this.connectionPropertiesList[i].Port.ToString();
226+
xmlNodeConnection.AppendChild(xmlNodeConnectionProp);
227+
xmlNodeConnectionProp = xmlDocument.CreateElement("cyclicFlag");
228+
xmlNodeConnectionProp.InnerText = this.connectionPropertiesList[i].CyclicFlag.ToString();
229+
xmlNodeConnection.AppendChild(xmlNodeConnectionProp);
230+
xmlNodeConnectionProp = xmlDocument.CreateElement("cycleTime");
231+
xmlNodeConnectionProp.InnerText = this.connectionPropertiesList[i].CycleTime.ToString();
232+
xmlNodeConnection.AppendChild(xmlNodeConnectionProp);
219233
for (int j = 0; j < this.connectionPropertiesList[i].FunctionPropertiesList.Count; j++)
220234
{
221-
xmlChild2 = xmlDocument.CreateElement("functionCodes");
222-
xmlChild3 = xmlDocument.CreateElement("functionCode");
223-
xmlChild3.InnerText = this.connectionPropertiesList[i].FunctionPropertiesList[j].FunctionCode.ToString();
224-
xmlChild2.AppendChild(xmlChild3);
225-
xmlChild3 = xmlDocument.CreateElement("quantity");
226-
xmlChild3.InnerText = this.connectionPropertiesList[i].FunctionPropertiesList[j].Quantity.ToString();
227-
xmlChild2.AppendChild(xmlChild3);
228-
xmlChild3 = xmlDocument.CreateElement("startingAddress");
229-
xmlChild3.InnerText = this.connectionPropertiesList[i].FunctionPropertiesList[j].StartingAdress.ToString();
230-
xmlChild2.AppendChild(xmlChild3);
231-
xmlChild1.AppendChild(xmlChild2);
235+
xmlNodeFunctionCodes = xmlDocument.CreateElement("functionCodes");
236+
xmlNodeFunctionCodesProp = xmlDocument.CreateElement("functionCode");
237+
xmlNodeFunctionCodesProp.InnerText = this.connectionPropertiesList[i].FunctionPropertiesList[j].FunctionCode.ToString();
238+
xmlNodeFunctionCodes.AppendChild(xmlNodeFunctionCodesProp);
239+
xmlNodeFunctionCodesProp = xmlDocument.CreateElement("quantity");
240+
xmlNodeFunctionCodesProp.InnerText = this.connectionPropertiesList[i].FunctionPropertiesList[j].Quantity.ToString();
241+
xmlNodeFunctionCodes.AppendChild(xmlNodeFunctionCodesProp);
242+
xmlNodeFunctionCodesProp = xmlDocument.CreateElement("startingAddress");
243+
xmlNodeFunctionCodesProp.InnerText = this.connectionPropertiesList[i].FunctionPropertiesList[j].StartingAdress.ToString();
244+
xmlNodeFunctionCodes.AppendChild(xmlNodeFunctionCodesProp);
245+
xmlNodeConnection.AppendChild(xmlNodeFunctionCodes);
232246
}
233-
xmlRoot.AppendChild(xmlChild1);
234-
xmlChild1 = xmlDocument.CreateElement("dataGridView");
247+
xmlRoot.AppendChild(xmlNodeConnection);
248+
xmlNodeDataGrid = xmlDocument.CreateElement("dataGridView");
235249
for (int j = 0; j < dataGridView.Rows.Count; j++)
236250
{
237-
if (dataGridView[0, j].Value != null & dataGridView[1, j].Value!= null & dataGridView[2, j].Value != null & dataGridView[3, j].Value != null)
238-
xmlChild2 = xmlDocument.CreateElement("dataGridViewLines");
239-
xmlChild3 = xmlDocument.CreateElement("columnConnection");
240-
if (dataGridView[0, j].Value != null)
241-
xmlChild3.InnerText = dataGridView[0, j].Value.ToString();
242-
xmlChild2.AppendChild(xmlChild3);
243-
xmlChild3 = xmlDocument.CreateElement("columnAddress");
244-
if (dataGridView[1, j].Value != null)
245-
xmlChild3.InnerText = dataGridView[1, j].Value.ToString();
246-
xmlChild2.AppendChild(xmlChild3);
247-
xmlChild3 = xmlDocument.CreateElement("columnTag");
248-
if (dataGridView[2, j].Value != null)
249-
xmlChild3.InnerText = dataGridView[2, j].Value.ToString();
250-
xmlChild2.AppendChild(xmlChild3);
251-
xmlChild3 = xmlDocument.CreateElement("columnDataType");
252-
if (dataGridView[3, j].Value != null)
253-
xmlChild3.InnerText = dataGridView[3, j].Value.ToString();
254-
xmlChild2.AppendChild(xmlChild3);
255-
xmlChild1.AppendChild(xmlChild2);
251+
if (dataGridView[0, j].Value != null & dataGridView[1, j].Value != null & dataGridView[3, j].Value != null)
252+
{
253+
xmlNodeDataGridLines = xmlDocument.CreateElement("dataGridViewLines");
254+
255+
xmlNodeDataGridLinesProp = xmlDocument.CreateElement("columnConnection");
256+
xmlNodeDataGridLinesProp.InnerText = dataGridView[0, j].Value.ToString();
257+
xmlNodeDataGridLines.AppendChild(xmlNodeDataGridLinesProp);
256258

259+
xmlNodeDataGridLinesProp = xmlDocument.CreateElement("columnAddress");
260+
xmlNodeDataGridLinesProp.InnerText = dataGridView[1, j].Value.ToString();
261+
xmlNodeDataGridLines.AppendChild(xmlNodeDataGridLinesProp);
262+
263+
xmlNodeDataGridLinesProp = xmlDocument.CreateElement("columnTag");
264+
if (dataGridView[2, j].Value != null)
265+
xmlNodeDataGridLinesProp.InnerText = dataGridView[2, j].Value.ToString();
266+
else
267+
xmlNodeDataGridLinesProp.InnerText = "n.a.";
268+
xmlNodeDataGridLines.AppendChild(xmlNodeDataGridLinesProp);
269+
270+
xmlNodeDataGridLinesProp = xmlDocument.CreateElement("columnDataType");
271+
xmlNodeDataGridLinesProp.InnerText = dataGridView[3, j].Value.ToString();
272+
xmlNodeDataGridLines.AppendChild(xmlNodeDataGridLinesProp);
273+
274+
xmlNodeDataGrid.AppendChild(xmlNodeDataGridLines);
275+
}
257276
}
258-
xmlRoot.AppendChild(xmlChild1);
277+
xmlRoot.AppendChild(xmlNodeDataGrid);
278+
259279
xmlDocument.AppendChild(xmlRoot);
260280
xmlDocument.Save("textWriter.xml");
261281
}
@@ -273,7 +293,9 @@ public void ReadXML(DataGridView dataGridView)
273293
System.Xml.XmlDocument xmlDocument = new System.Xml.XmlDocument();
274294
xmlDocument.Load("textWriter.xml");
275295
xmlNodeList = xmlDocument.GetElementsByTagName("connection");
276-
connectionPropertiesList = new List<ConnectionProperties>();
296+
//connectionPropertiesList = new List<ConnectionProperties>();
297+
this.connectionPropertiesList.Clear();
298+
277299
foreach (XmlNode xmlNode in xmlNodeList)
278300
{
279301
ConnectionProperties connectionProperty = new ConnectionProperties();
@@ -313,10 +335,12 @@ public void ReadXML(DataGridView dataGridView)
313335
connectionProperty.FunctionPropertiesList.Add(functionProperty);
314336
xmlNode3 = xmlNode3.NextSibling;
315337
}
316-
connectionPropertiesList.Add(connectionProperty);
338+
AddConnection(connectionProperty);
339+
//this.connectionPropertiesList.Add(connectionProperty);
317340
}
318341
if (connectionPropertiesListChanged != null)
319342
connectionPropertiesListChanged(this);
343+
320344
xmlNodeList = xmlDocument.GetElementsByTagName("dataGridViewLines");
321345
dataGridView.Rows.Clear();
322346
dataGridView.AllowUserToAddRows = false;

0 commit comments

Comments
 (0)