diff --git a/.vs/S7CommPlusDriver/v15/.suo b/.vs/S7CommPlusDriver/v15/.suo deleted file mode 100644 index fd09434..0000000 Binary files a/.vs/S7CommPlusDriver/v15/.suo and /dev/null differ diff --git a/.vs/S7CommPlusDriver/v15/Server/sqlite3/db.lock b/.vs/S7CommPlusDriver/v15/Server/sqlite3/db.lock deleted file mode 100644 index e69de29..0000000 diff --git a/.vs/S7CommPlusDriver/v15/Server/sqlite3/storage.ide b/.vs/S7CommPlusDriver/v15/Server/sqlite3/storage.ide deleted file mode 100644 index 56758a8..0000000 Binary files a/.vs/S7CommPlusDriver/v15/Server/sqlite3/storage.ide and /dev/null differ diff --git a/.vs/S7CommPlusDriver/v15/Server/sqlite3/storage.ide-shm b/.vs/S7CommPlusDriver/v15/Server/sqlite3/storage.ide-shm deleted file mode 100644 index 00f5e3d..0000000 Binary files a/.vs/S7CommPlusDriver/v15/Server/sqlite3/storage.ide-shm and /dev/null differ diff --git a/.vs/S7CommPlusDriver/v15/Server/sqlite3/storage.ide-wal b/.vs/S7CommPlusDriver/v15/Server/sqlite3/storage.ide-wal deleted file mode 100644 index 9360982..0000000 Binary files a/.vs/S7CommPlusDriver/v15/Server/sqlite3/storage.ide-wal and /dev/null differ diff --git a/DriverTest/Program.cs b/DriverTest/Program.cs index d8c3e2c..12486ba 100644 --- a/DriverTest/Program.cs +++ b/DriverTest/Program.cs @@ -10,14 +10,13 @@ using S7CommPlusDriver; using S7CommPlusDriver.ClientApi; - namespace DriverTest { class Program { static void Main(string[] args) { - string HostIp = "192.168.0.1"; + string HostIp = "192.168.0.250"; string Password = ""; int res; List readlist = new List(); @@ -33,7 +32,8 @@ namespace DriverTest Console.WriteLine("Main - Versuche Verbindungsaufbau zu: " + HostIp); S7CommPlusConnection conn = new S7CommPlusConnection(); - conn.OnlySecurePGOrPCAndHMI = true;//Only secure PG/PC and HMI communication + conn.OnlySecurePGOrPCAndHMI = false; + System.Diagnostics.Stopwatch stopwatch1 = new System.Diagnostics.Stopwatch(); stopwatch1.Start(); res = conn.Connect(HostIp, Password); @@ -53,7 +53,7 @@ namespace DriverTest res = conn.Browse(out vars); Console.WriteLine("Main - Browse res=" + res); #endregion - List vars_ = vars.GetRange(0,50); + List vars_ = vars.GetRange(0, 1000); #if _TEST_PLCTAG #region Werte aller Variablen einlesen Console.WriteLine("Main - Lese Werte aller Variablen aus"); @@ -63,7 +63,8 @@ namespace DriverTest foreach (var v in vars_) { - taglist.Add(PlcTags.TagFactory(v.Name, new ItemAddress(v.AccessSequence), v.Softdatatype)); + ItemAddress itemAddress = new ItemAddress(v.AccessSequence); + taglist.Add(PlcTags.TagFactory(v.Name, itemAddress, v.Softdatatype)); } foreach (var t in taglist) { @@ -98,6 +99,7 @@ namespace DriverTest string header = $"读取{vars_.Count}个变量耗时{ms}毫秒"; Console.WriteLine(header); } + System.Threading.Thread.Sleep(10); } #endif diff --git a/DriverTest/bin/Debug/DriverTest.exe b/DriverTest/bin/Debug/DriverTest.exe index 5f77ff4..f37b407 100644 Binary files a/DriverTest/bin/Debug/DriverTest.exe and b/DriverTest/bin/Debug/DriverTest.exe differ diff --git a/DriverTest/bin/Debug/DriverTest.pdb b/DriverTest/bin/Debug/DriverTest.pdb index 0052e16..a0c6e83 100644 Binary files a/DriverTest/bin/Debug/DriverTest.pdb and b/DriverTest/bin/Debug/DriverTest.pdb differ diff --git a/DriverTest/bin/Debug/License.Lib.dll b/DriverTest/bin/Debug/License.Lib.dll new file mode 100644 index 0000000..d1357e6 Binary files /dev/null and b/DriverTest/bin/Debug/License.Lib.dll differ diff --git a/DriverTest/bin/Debug/S7CommPlusDriver.dll b/DriverTest/bin/Debug/S7CommPlusDriver.dll index 45052da..4e76d08 100644 Binary files a/DriverTest/bin/Debug/S7CommPlusDriver.dll and b/DriverTest/bin/Debug/S7CommPlusDriver.dll differ diff --git a/DriverTest/bin/Debug/key_20251031_150257.log b/DriverTest/bin/Debug/key_20251031_150257.log deleted file mode 100644 index b7e2117..0000000 --- a/DriverTest/bin/Debug/key_20251031_150257.log +++ /dev/null @@ -1,5 +0,0 @@ -SERVER_HANDSHAKE_TRAFFIC_SECRET 9d2884bb6d1ca343e259a23ffd195961228283a253916cb75661a90dbfa056f0 54afed328765987b013f17d3425b5ad139cd775ded5d8e9bd12fa96f93166508f793dca53267752de04c627218b51e4c -EXPORTER_SECRET 9d2884bb6d1ca343e259a23ffd195961228283a253916cb75661a90dbfa056f0 eaa6ef9882ce9d8c002ab41043f699f94d2a34fae101b9a2cd773dfdf7e6329acb65f2f6301c6894331bb62c35a63429 -SERVER_TRAFFIC_SECRET_0 9d2884bb6d1ca343e259a23ffd195961228283a253916cb75661a90dbfa056f0 87149d68005b5512c6efbce24dcfb35146a4c49dcc2cc29d84294c566a45ee66b53df30eafea7c3f4070df9959d7f6be -CLIENT_HANDSHAKE_TRAFFIC_SECRET 9d2884bb6d1ca343e259a23ffd195961228283a253916cb75661a90dbfa056f0 d1d792a9d1a2f49dbda3f09b48a25de60192cef4434efd5cf51a61f73ce9e6d7c4f4dc466a6694a6d5612efd2773f784 -CLIENT_TRAFFIC_SECRET_0 9d2884bb6d1ca343e259a23ffd195961228283a253916cb75661a90dbfa056f0 2238f875c69a7f5704c1792f3dec81b98af34d18643b467cccb730efc123c789632303c6e2c48dd2a397652ddfcf890a diff --git a/DriverTest/bin/Debug/key_20251031_150910.log b/DriverTest/bin/Debug/key_20251031_150910.log deleted file mode 100644 index 93a5a8a..0000000 --- a/DriverTest/bin/Debug/key_20251031_150910.log +++ /dev/null @@ -1,5 +0,0 @@ -SERVER_HANDSHAKE_TRAFFIC_SECRET ef29f3273eb4c3848fb8e869418198253bb70d55e234e55ed14bf4b4bab5c5b4 5c61d992793df1e85a7f6d9c3ffd27084373954871a262ccd827c65dc9a10b0fb8153392ced7cacdcb5c523d5eac9adb -EXPORTER_SECRET ef29f3273eb4c3848fb8e869418198253bb70d55e234e55ed14bf4b4bab5c5b4 97ed8911dac9e9e8543496c3ebf120a804da5fa88f70854e693a83db5b9f39d45a7c223f2782c6fc6943f18916c797f7 -SERVER_TRAFFIC_SECRET_0 ef29f3273eb4c3848fb8e869418198253bb70d55e234e55ed14bf4b4bab5c5b4 3ca5d277257f1f536affba73730ec5561eb3654eddb53146e3935f79f3dde5d9b11220936506aa7c2806ba0fd3df065c -CLIENT_HANDSHAKE_TRAFFIC_SECRET ef29f3273eb4c3848fb8e869418198253bb70d55e234e55ed14bf4b4bab5c5b4 caf02ef79a590b2d9dd78149774174c4a305bc9255fb1df90c66f61e9445be5d74c43b2eff8be2aebfab27ca40751d3c -CLIENT_TRAFFIC_SECRET_0 ef29f3273eb4c3848fb8e869418198253bb70d55e234e55ed14bf4b4bab5c5b4 9d6d6cc9fc091479726907304d7c47d84e718db4b09319871d009dc7eb19c5795487528194c362708cd86faf4452f73b diff --git a/DriverTest/bin/Debug/libcrypto-3-x64.dll b/DriverTest/bin/Debug/libcrypto-3-x64.dll new file mode 100644 index 0000000..87c2e0a Binary files /dev/null and b/DriverTest/bin/Debug/libcrypto-3-x64.dll differ diff --git a/DriverTest/bin/Debug/libssl-3-x64.dll b/DriverTest/bin/Debug/libssl-3-x64.dll new file mode 100644 index 0000000..64f9712 Binary files /dev/null and b/DriverTest/bin/Debug/libssl-3-x64.dll differ diff --git a/DriverTest/bin/Debug/license.lic b/DriverTest/bin/Debug/license.lic new file mode 100644 index 0000000..c24e374 --- /dev/null +++ b/DriverTest/bin/Debug/license.lic @@ -0,0 +1,18 @@ + + + EasyLicense + + + + + + + + + + 2ARv1/EpdnU8XLyDEGR1br2dBD1EhjPyTuIem87R0YM= + + + DB6lmvc3b0zI9Y7k+SvGegAroCRxNxbIOAZydZMz7EpFW8yNDy6iIU9uuUBIhSYdk4mEIoroxFA6Ra2Ha9Gc0bShMtJdnyBVw2My+9DNFf1iA0Nzf7qdEUfR3dd4I+w/awgGBfAqO67LxPrCva3i+AitHgSMywadcJ+45lKJDbE= + + \ No newline at end of file diff --git a/DriverTest/obj/Debug/DriverTest.csproj.FileListAbsolute.txt b/DriverTest/obj/Debug/DriverTest.csproj.FileListAbsolute.txt index 2d8b9b6..6c10012 100644 --- a/DriverTest/obj/Debug/DriverTest.csproj.FileListAbsolute.txt +++ b/DriverTest/obj/Debug/DriverTest.csproj.FileListAbsolute.txt @@ -3,12 +3,6 @@ C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\DriverTest\bin\Debug\D C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\DriverTest\bin\Debug\DriverTest.exe C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\DriverTest\bin\Debug\DriverTest.pdb C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\DriverTest\bin\Debug\S7CommPlusDriver.dll -C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\DriverTest\bin\Debug\S7PublicKeys.dll -C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\DriverTest\bin\Debug\S7Utilities.dll -C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\DriverTest\bin\Debug\zlib.net.dll -C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\DriverTest\bin\Debug\S7CommPlusAuth.dll -C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\DriverTest\bin\Debug\S7Family0.dll C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\DriverTest\obj\Debug\DriverTest.csproj.CopyComplete C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\DriverTest\obj\Debug\DriverTest.exe C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\DriverTest\obj\Debug\DriverTest.pdb -C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\DriverTest\obj\Debug\DriverTest.csprojAssemblyReference.cache diff --git a/DriverTest/obj/Debug/DriverTest.csprojAssemblyReference.cache b/DriverTest/obj/Debug/DriverTest.csprojAssemblyReference.cache deleted file mode 100644 index 58f4359..0000000 Binary files a/DriverTest/obj/Debug/DriverTest.csprojAssemblyReference.cache and /dev/null differ diff --git a/DriverTest/obj/Debug/DriverTest.exe b/DriverTest/obj/Debug/DriverTest.exe index 5f77ff4..f37b407 100644 Binary files a/DriverTest/obj/Debug/DriverTest.exe and b/DriverTest/obj/Debug/DriverTest.exe differ diff --git a/DriverTest/obj/Debug/DriverTest.pdb b/DriverTest/obj/Debug/DriverTest.pdb index 0052e16..a0c6e83 100644 Binary files a/DriverTest/obj/Debug/DriverTest.pdb and b/DriverTest/obj/Debug/DriverTest.pdb differ diff --git a/Lib/License.Lib.dll b/Lib/License.Lib.dll new file mode 100644 index 0000000..d1357e6 Binary files /dev/null and b/Lib/License.Lib.dll differ diff --git a/Lib/S7CommPlusDriver.dll b/Lib/S7CommPlusDriver.dll index 45052da..4e76d08 100644 Binary files a/Lib/S7CommPlusDriver.dll and b/Lib/S7CommPlusDriver.dll differ diff --git a/S7CommPlusGUIBrowser/Form1.Designer.cs b/S7CommPlusGUIBrowser/Form1.Designer.cs index f8ae8d5..a84023f 100644 --- a/S7CommPlusGUIBrowser/Form1.Designer.cs +++ b/S7CommPlusGUIBrowser/Form1.Designer.cs @@ -26,8 +26,7 @@ this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.lbStatus = new System.Windows.Forms.Label(); - this.label6 = new System.Windows.Forms.Label(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); this.btnDisconnect = new System.Windows.Forms.Button(); this.btnConnect = new System.Windows.Forms.Button(); this.label2 = new System.Windows.Forms.Label(); @@ -45,6 +44,7 @@ this.tbSymbol = new System.Windows.Forms.TextBox(); this.label3 = new System.Windows.Forms.Label(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.lbStatus = new System.Windows.Forms.ToolStripStatusLabel(); this.txt_plcInfo = new System.Windows.Forms.ToolStripStatusLabel(); this.groupBox1.SuspendLayout(); this.groupBox2.SuspendLayout(); @@ -53,8 +53,7 @@ // // groupBox1 // - this.groupBox1.Controls.Add(this.lbStatus); - this.groupBox1.Controls.Add(this.label6); + this.groupBox1.Controls.Add(this.checkBox1); this.groupBox1.Controls.Add(this.btnDisconnect); this.groupBox1.Controls.Add(this.btnConnect); this.groupBox1.Controls.Add(this.label2); @@ -68,21 +67,16 @@ this.groupBox1.TabStop = false; this.groupBox1.Text = "Connection"; // - // lbStatus + // checkBox1 // - this.lbStatus.Location = new System.Drawing.Point(44, 114); - this.lbStatus.Name = "lbStatus"; - this.lbStatus.Size = new System.Drawing.Size(116, 15); - this.lbStatus.TabIndex = 7; - // - // label6 - // - this.label6.AutoSize = true; - this.label6.Location = new System.Drawing.Point(6, 114); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(47, 12); - this.label6.TabIndex = 6; - this.label6.Text = "Status:"; + this.checkBox1.AutoSize = true; + this.checkBox1.Location = new System.Drawing.Point(9, 112); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(156, 16); + this.checkBox1.TabIndex = 12; + this.checkBox1.Text = "Only secure PG/PC -HMI"; + this.checkBox1.UseVisualStyleBackColor = true; + this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); // // btnDisconnect // @@ -136,7 +130,7 @@ this.tbIpAddress.Name = "tbIpAddress"; this.tbIpAddress.Size = new System.Drawing.Size(151, 21); this.tbIpAddress.TabIndex = 0; - this.tbIpAddress.Text = "192.168.0.250"; + this.tbIpAddress.Text = "192.168.0.1"; // // treeView1 // @@ -282,6 +276,7 @@ // statusStrip1 // this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.lbStatus, this.txt_plcInfo}); this.statusStrip1.Location = new System.Drawing.Point(0, 393); this.statusStrip1.Name = "statusStrip1"; @@ -289,6 +284,12 @@ this.statusStrip1.TabIndex = 3; this.statusStrip1.Text = "statusStrip1"; // + // lbStatus + // + this.lbStatus.Name = "lbStatus"; + this.lbStatus.Size = new System.Drawing.Size(46, 17); + this.lbStatus.Text = "Status:"; + // // txt_plcInfo // this.txt_plcInfo.Name = "txt_plcInfo"; @@ -335,12 +336,12 @@ private System.Windows.Forms.Label label4; private System.Windows.Forms.TextBox tbSymbol; private System.Windows.Forms.Label label3; - private System.Windows.Forms.Label lbStatus; - private System.Windows.Forms.Label label6; private System.Windows.Forms.Button btnRead; private System.Windows.Forms.ImageList imageListTreeIcons; private System.Windows.Forms.StatusStrip statusStrip1; private System.Windows.Forms.ToolStripStatusLabel txt_plcInfo; + private System.Windows.Forms.ToolStripStatusLabel lbStatus; + private System.Windows.Forms.CheckBox checkBox1; } } diff --git a/S7CommPlusGUIBrowser/Form1.cs b/S7CommPlusGUIBrowser/Form1.cs index a8ccd49..83b146d 100644 --- a/S7CommPlusGUIBrowser/Form1.cs +++ b/S7CommPlusGUIBrowser/Form1.cs @@ -1,406 +1,412 @@ using S7CommPlusDriver; using S7CommPlusDriver.ClientApi; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text.RegularExpressions; -using System.Windows.Forms; - -namespace S7CommPlusGUIBrowser -{ - public partial class Form1 : Form - { - - private S7CommPlusConnection conn = null; - - public Form1() - { - InitializeComponent(); - - string[] args = Environment.GetCommandLineArgs(); - // 1st argument can be the plc ip-address, otherwise use default - if (args.Length >= 2) - { - tbIpAddress.Text = args[1]; - } - // 2nd argument can be the plc password, otherwise use default (no password) - if (args.Length >= 3) - { - tbPassword.Text = args[2]; - } - } - - private void setStatus(string status) - { - lbStatus.Text = status; - lbStatus.Refresh(); - } - - private void btnConnect_Click(object sender, EventArgs e) - { - setStatus("connecting..."); - - if (conn != null) conn.Disconnect(); - conn = new S7CommPlusConnection(); - int res = conn.Connect(tbIpAddress.Text, tbPassword.Text); - if (res != 0) - { - setStatus("error"); - return; - } - setStatus("connected"); - txt_plcInfo.Text = $"PLCType: {conn.PLCInformation.PLCType}"; - treeView1.Nodes.Clear(); - setStatus("loading..."); - List dbInfoList; - res = conn.GetListOfDatablocks(out dbInfoList); - if (res != 0) - { - setStatus("error"); - return; - } - TreeNode tn; - foreach (S7CommPlusConnection.DatablockInfo dbInfo in dbInfoList) - { - tn = treeView1.Nodes.Add(dbInfo.db_name); - tn.Nodes.Add("Loading..."); - tn.Tag = dbInfo.db_block_ti_relid; - tn.ImageKey = "Datablock"; - tn.SelectedImageKey = tn.ImageKey; - } - // Inputs - tn = treeView1.Nodes.Add("Inputs"); - tn.Nodes.Add("Loading..."); - tn.Tag = 0x90010000; - tn.ImageKey = "Default"; - tn.SelectedImageKey = tn.ImageKey; - // Outputs - tn = treeView1.Nodes.Add("Outputs"); - tn.Nodes.Add("Loading..."); - tn.Tag = 0x90020000; - tn.ImageKey = "Default"; - tn.SelectedImageKey = tn.ImageKey; - // Merker - tn = treeView1.Nodes.Add("Merker"); - tn.Nodes.Add("Loading..."); - tn.Tag = 0x90030000; - tn.ImageKey = "Default"; - tn.SelectedImageKey = tn.ImageKey; - // S7Timers - tn = treeView1.Nodes.Add("S7Timers"); - tn.Nodes.Add("Loading..."); - tn.Tag = 0x90050000; - tn.ImageKey = "Default"; - tn.SelectedImageKey = tn.ImageKey; - // S7Counters - tn = treeView1.Nodes.Add("S7Counters"); - tn.Nodes.Add("Loading..."); - tn.Tag = 0x90060000; - tn.ImageKey = "Default"; - tn.SelectedImageKey = tn.ImageKey; - - setStatus("connected"); - } - - private void btnDisconnect_Click(object sender, EventArgs e) - { - setStatus("disconnecting..."); - - if (conn != null) conn.Disconnect(); - conn = null; - treeView1.Nodes.Clear(); - txt_plcInfo.Text = "PLCType:"; - setStatus("disconnected"); - } - - private void Form1_FormClosed(object sender, FormClosedEventArgs e) - { - if (conn != null) conn.Disconnect(); - } - - private void treeView1_AfterExpand(object sender, TreeViewEventArgs e) - { - if (e.Node.Nodes.Count < 0 || e.Node.Nodes[0].Text != "Loading...") return; - - setStatus("loading..."); - e.Node.Nodes.Clear(); - uint relTiId = (uint)e.Node.Tag; - PObject pObj = conn.getTypeInfoByRelId(relTiId); - setStatus("connected"); - - if (pObj == null || pObj.VarnameList == null) return; - TreeNode tn; - TreeNode tnarr; - for (int i = 0; i < pObj.VarnameList.Names.Count; ++i) - { - tn = e.Node.Nodes.Add(pObj.VarnameList.Names[i]); - SetImageKey(ref tn, pObj.VartypeList.Elements[i]); - if (pObj.VartypeList.Elements[i].OffsetInfoType.Is1Dim()) - { - var ioitarr = (IOffsetInfoType_1Dim)pObj.VartypeList.Elements[i].OffsetInfoType; - uint arrayElementCount = ioitarr.GetArrayElementCount(); - int arrayLowerBounds = ioitarr.GetArrayLowerBounds(); - for (int j = 0; j < arrayElementCount; ++j) - { - tnarr = tn.Nodes.Add(pObj.VarnameList.Names[i] + "[" + (j + arrayLowerBounds) + "]"); - SetImageKey(ref tnarr, pObj.VartypeList.Elements[i]); - if (pObj.VartypeList.Elements[i].OffsetInfoType.HasRelation()) - { - var ioit = (IOffsetInfoType_Relation)pObj.VartypeList.Elements[i].OffsetInfoType; - tnarr.Nodes.Add("Loading..."); - tnarr.Tag = ioit.GetRelationId(); - SetImageKey(ref tnarr, pObj.VartypeList.Elements[i]); - } - } - tn.Tag = (uint)0; // is array - } - else if (pObj.VartypeList.Elements[i].OffsetInfoType.IsMDim()) - { - var ioitarrm = (IOffsetInfoType_MDim)pObj.VartypeList.Elements[i].OffsetInfoType; - uint[] MdimArrayElementCount = ioitarrm.GetMdimArrayElementCount(); - int[] MdimArrayLowerBounds = ioitarrm.GetMdimArrayLowerBounds(); - int dimCount = MdimArrayElementCount.Aggregate(0, (acc, act) => acc += (act > 0) ? 1 : 0); - int[] indexes = new int[dimCount]; - bool stop = false; - while (!stop) - { - string arrIdxStr = ""; - for (int j = dimCount - 1; j >= 0; --j) - { - arrIdxStr += (arrIdxStr != "" ? "," : "") + (indexes[j] + MdimArrayLowerBounds[j]); - } - tnarr = tn.Nodes.Add(pObj.VarnameList.Names[i] + "[" + arrIdxStr + "]"); - SetImageKey(ref tnarr, pObj.VartypeList.Elements[i]); - if (pObj.VartypeList.Elements[i].OffsetInfoType.HasRelation()) - { - var ioit = (IOffsetInfoType_Relation)pObj.VartypeList.Elements[i].OffsetInfoType; - tnarr.Nodes.Add("Loading..."); - tnarr.Tag = ioit.GetRelationId(); - SetImageKey(ref tnarr, pObj.VartypeList.Elements[i]); - } - ++indexes[0]; - for (int j = 0; j < dimCount; ++j) - { - if (indexes[j] >= MdimArrayElementCount[j]) - { - if (j + 1 < dimCount) - { - indexes[j] = 0; - ++indexes[j + 1]; - } - else - { - stop = true; - } - } - else - { - break; - } - } - } - tn.Tag = (uint)0; // is array - } - else - { - if (pObj.VartypeList.Elements[i].OffsetInfoType.HasRelation()) - { - var ioit = (IOffsetInfoType_Relation)pObj.VartypeList.Elements[i].OffsetInfoType; - tn.Nodes.Add("Loading..."); - tn.Tag = ioit.GetRelationId(); - SetImageKey(ref tn, pObj.VartypeList.Elements[i]); - } - } - } - } - - private void SetImageKey(ref TreeNode tn, PVartypeListElement vte) - { - string sk = "Tag"; - switch (vte.Softdatatype) - { - case Softdatatype.S7COMMP_SOFTDATATYPE_BOOL: - case Softdatatype.S7COMMP_SOFTDATATYPE_BBOOL: - sk = "Boolean"; - break; - case Softdatatype.S7COMMP_SOFTDATATYPE_INT: - case Softdatatype.S7COMMP_SOFTDATATYPE_DINT: - case Softdatatype.S7COMMP_SOFTDATATYPE_ULINT: - case Softdatatype.S7COMMP_SOFTDATATYPE_LINT: - case Softdatatype.S7COMMP_SOFTDATATYPE_USINT: - case Softdatatype.S7COMMP_SOFTDATATYPE_UINT: - case Softdatatype.S7COMMP_SOFTDATATYPE_UDINT: - case Softdatatype.S7COMMP_SOFTDATATYPE_SINT: - // Derived types - case Softdatatype.S7COMMP_SOFTDATATYPE_BLOCKFB: - case Softdatatype.S7COMMP_SOFTDATATYPE_BLOCKFC: - case Softdatatype.S7COMMP_SOFTDATATYPE_OBANY: - case Softdatatype.S7COMMP_SOFTDATATYPE_OBDELAY: - case Softdatatype.S7COMMP_SOFTDATATYPE_OBTOD: - case Softdatatype.S7COMMP_SOFTDATATYPE_OBCYCLIC: - case Softdatatype.S7COMMP_SOFTDATATYPE_OBATT: - case Softdatatype.S7COMMP_SOFTDATATYPE_PORT: - case Softdatatype.S7COMMP_SOFTDATATYPE_RTM: - case Softdatatype.S7COMMP_SOFTDATATYPE_PIP: - case Softdatatype.S7COMMP_SOFTDATATYPE_OBPCYCLE: - case Softdatatype.S7COMMP_SOFTDATATYPE_OBHWINT: - case Softdatatype.S7COMMP_SOFTDATATYPE_OBDIAG: - case Softdatatype.S7COMMP_SOFTDATATYPE_OBTIMEERROR: - case Softdatatype.S7COMMP_SOFTDATATYPE_OBSTARTUP: - case Softdatatype.S7COMMP_SOFTDATATYPE_DBANY: - case Softdatatype.S7COMMP_SOFTDATATYPE_DBWWW: - case Softdatatype.S7COMMP_SOFTDATATYPE_DBDYN: - sk = "Integer2"; - break; - case Softdatatype.S7COMMP_SOFTDATATYPE_BYTE: - case Softdatatype.S7COMMP_SOFTDATATYPE_WORD: - case Softdatatype.S7COMMP_SOFTDATATYPE_DWORD: - case Softdatatype.S7COMMP_SOFTDATATYPE_LWORD: - // Derived types - case Softdatatype.S7COMMP_SOFTDATATYPE_AOMIDENT: - case Softdatatype.S7COMMP_SOFTDATATYPE_EVENTANY: - case Softdatatype.S7COMMP_SOFTDATATYPE_EVENTATT: - case Softdatatype.S7COMMP_SOFTDATATYPE_AOMLINK: - case Softdatatype.S7COMMP_SOFTDATATYPE_HWANY: - case Softdatatype.S7COMMP_SOFTDATATYPE_HWIOSYSTEM: - case Softdatatype.S7COMMP_SOFTDATATYPE_HWDPMASTER: - case Softdatatype.S7COMMP_SOFTDATATYPE_HWDEVICE: - case Softdatatype.S7COMMP_SOFTDATATYPE_HWDPSLAVE: - case Softdatatype.S7COMMP_SOFTDATATYPE_HWIO: - case Softdatatype.S7COMMP_SOFTDATATYPE_HWMODULE: - case Softdatatype.S7COMMP_SOFTDATATYPE_HWSUBMODULE: - case Softdatatype.S7COMMP_SOFTDATATYPE_HWHSC: - case Softdatatype.S7COMMP_SOFTDATATYPE_HWPWM: - case Softdatatype.S7COMMP_SOFTDATATYPE_HWPTO: - case Softdatatype.S7COMMP_SOFTDATATYPE_HWINTERFACE: - case Softdatatype.S7COMMP_SOFTDATATYPE_HWIEPORT: - case Softdatatype.S7COMMP_SOFTDATATYPE_CONNANY: - case Softdatatype.S7COMMP_SOFTDATATYPE_CONNPRG: - case Softdatatype.S7COMMP_SOFTDATATYPE_CONNOUC: - case Softdatatype.S7COMMP_SOFTDATATYPE_CONNRID: - sk = "Binary2"; - break; - case Softdatatype.S7COMMP_SOFTDATATYPE_REAL: - case Softdatatype.S7COMMP_SOFTDATATYPE_LREAL: - sk = "Number2"; - break; - case Softdatatype.S7COMMP_SOFTDATATYPE_CHAR: - case Softdatatype.S7COMMP_SOFTDATATYPE_WCHAR: - sk = "Char"; - break; - case Softdatatype.S7COMMP_SOFTDATATYPE_STRING: - case Softdatatype.S7COMMP_SOFTDATATYPE_WSTRING: - sk = "Text"; - break; - case Softdatatype.S7COMMP_SOFTDATATYPE_DATE: - sk = "Date"; - break; - case Softdatatype.S7COMMP_SOFTDATATYPE_TIMEOFDAY: - case Softdatatype.S7COMMP_SOFTDATATYPE_LTOD: - sk = "Time"; - break; - case Softdatatype.S7COMMP_SOFTDATATYPE_TIME: - case Softdatatype.S7COMMP_SOFTDATATYPE_LTIME: - case Softdatatype.S7COMMP_SOFTDATATYPE_S5TIME: - case Softdatatype.S7COMMP_SOFTDATATYPE_TIMER: - sk = "Timer"; // Duration - break; - case Softdatatype.S7COMMP_SOFTDATATYPE_DATEANDTIME: - case Softdatatype.S7COMMP_SOFTDATATYPE_LDT: - case Softdatatype.S7COMMP_SOFTDATATYPE_DTL: - sk = "DateTime"; - break; - case Softdatatype.S7COMMP_SOFTDATATYPE_ANY: - case Softdatatype.S7COMMP_SOFTDATATYPE_POINTER: - case Softdatatype.S7COMMP_SOFTDATATYPE_REMOTE: - sk = "Any"; - break; - } - if (vte.OffsetInfoType.HasRelation()) - { - sk = "Structure"; - } - tn.ImageKey = sk; - tn.SelectedImageKey = tn.ImageKey; - } - - private string escapeTiaString(string str, bool isRootNode, bool isArray) - { - if (isRootNode) return '"' + str + '"'; - Regex re = new Regex("(^[0-9]|[^0-9A-Za-z_])"); - if (isArray) - { - Regex reArr = new Regex("^([^\"]*)(\\[[0-9, ]+\\])$"); - Match m = reArr.Match(str); - if (!m.Success) return str; - if (re.Match(m.Groups[1].Value).Success) return '"' + m.Groups[1].Value + '"' + m.Groups[2].Value; - return str; - } - if (re.IsMatch(str)) return '"' + str + '"'; - return str; - } - - private void readTagBySymbol() - { - tbValue.Text = ""; - tbSymbolicAddress.Text = ""; - - setStatus("loading..."); - PlcTag tag = conn.getPlcTagBySymbol(tbSymbol.Text); - setStatus("connected"); - if (tag == null) return; - - tbSymbolicAddress.Text = tag.Address.GetAccessString(); - - PlcTags tags = new PlcTags(); - tags.AddTag(tag); - if (tags.ReadTags(conn) != 0) return; - tbValue.Text = tag.ToString(); - } - - private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) - { - if (e.Node.Tag != null) return; // has relId - - string name = ""; - TreeNode tn = e.Node; - while (tn != null) - { - bool isArray = false; - string nodeText = tn.Text; - tn = tn.Parent; - if (tn != null && tn.Tag != null) - { // is array - if ((uint)tn.Tag == 0) - { - isArray = true; - tn = tn.Parent; // skip array parent - } - } - if (tn != null && tn.Tag != null) - { // don't add in/out/merker area as tag - uint relId = (uint)tn.Tag; - if (relId == 0x90010000 || relId == 0x90020000 || relId == 0x90030000) tn = null; - } - name = escapeTiaString(nodeText, tn == null, isArray) + (name != "" ? "." : "") + name; - } - tbSymbol.Text = name; - - readTagBySymbol(); - } - - private void btnRead_Click(object sender, EventArgs e) - { - if (tbSymbol.Text == "") return; - - try - { - readTagBySymbol(); - } - catch (Exception ex) - { - MessageBox.Show("ERROR: " + ex.Message); - } - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; +using System.Windows.Forms; + +namespace S7CommPlusGUIBrowser +{ + public partial class Form1 : Form + { + + private S7CommPlusConnection conn = null; + private bool onlySecurePGOrPCAndHMI = false; + + public Form1() + { + InitializeComponent(); + + string[] args = Environment.GetCommandLineArgs(); + // 1st argument can be the plc ip-address, otherwise use default + if (args.Length >= 2) + { + tbIpAddress.Text = args[1]; + } + // 2nd argument can be the plc password, otherwise use default (no password) + if (args.Length >= 3) + { + tbPassword.Text = args[2]; + } + } + + private void setStatus(string status) + { + lbStatus.Text = $"Status:{status}|"; + } + + private void btnConnect_Click(object sender, EventArgs e) + { + setStatus("connecting..."); + + if (conn != null) conn.Disconnect(); + conn = new S7CommPlusConnection(); + conn.OnlySecurePGOrPCAndHMI = onlySecurePGOrPCAndHMI; + int res = conn.Connect(tbIpAddress.Text, tbPassword.Text); + if (res != 0) + { + setStatus("error"); + return; + } + setStatus("connected"); + txt_plcInfo.Text = $"PLCType: {conn.PLCInformation.PLCType}|MLFB: {conn.PLCInformation.MLFB}|Firmware: {conn.PLCInformation.Firmware}"; + treeView1.Nodes.Clear(); + setStatus("loading..."); + List dbInfoList; + res = conn.GetListOfDatablocks(out dbInfoList); + if (res != 0) + { + setStatus("error"); + return; + } + TreeNode tn; + foreach (S7CommPlusConnection.DatablockInfo dbInfo in dbInfoList) + { + tn = treeView1.Nodes.Add(dbInfo.db_name); + tn.Nodes.Add("Loading..."); + tn.Tag = dbInfo.db_block_ti_relid; + tn.ImageKey = "Datablock"; + tn.SelectedImageKey = tn.ImageKey; + } + // Inputs + tn = treeView1.Nodes.Add("Inputs"); + tn.Nodes.Add("Loading..."); + tn.Tag = 0x90010000; + tn.ImageKey = "Default"; + tn.SelectedImageKey = tn.ImageKey; + // Outputs + tn = treeView1.Nodes.Add("Outputs"); + tn.Nodes.Add("Loading..."); + tn.Tag = 0x90020000; + tn.ImageKey = "Default"; + tn.SelectedImageKey = tn.ImageKey; + // Merker + tn = treeView1.Nodes.Add("Merker"); + tn.Nodes.Add("Loading..."); + tn.Tag = 0x90030000; + tn.ImageKey = "Default"; + tn.SelectedImageKey = tn.ImageKey; + // S7Timers + tn = treeView1.Nodes.Add("S7Timers"); + tn.Nodes.Add("Loading..."); + tn.Tag = 0x90050000; + tn.ImageKey = "Default"; + tn.SelectedImageKey = tn.ImageKey; + // S7Counters + tn = treeView1.Nodes.Add("S7Counters"); + tn.Nodes.Add("Loading..."); + tn.Tag = 0x90060000; + tn.ImageKey = "Default"; + tn.SelectedImageKey = tn.ImageKey; + + setStatus("connected"); + } + + private void btnDisconnect_Click(object sender, EventArgs e) + { + setStatus("disconnecting..."); + + if (conn != null) conn.Disconnect(); + conn = null; + treeView1.Nodes.Clear(); + txt_plcInfo.Text = "PLCType:"; + setStatus("disconnected"); + } + + private void Form1_FormClosed(object sender, FormClosedEventArgs e) + { + if (conn != null) conn.Disconnect(); + } + + private void treeView1_AfterExpand(object sender, TreeViewEventArgs e) + { + if (e.Node.Nodes.Count < 0 || e.Node.Nodes[0].Text != "Loading...") return; + + setStatus("loading..."); + e.Node.Nodes.Clear(); + uint relTiId = (uint)e.Node.Tag; + PObject pObj = conn.getTypeInfoByRelId(relTiId); + setStatus("connected"); + + if (pObj == null || pObj.VarnameList == null) return; + TreeNode tn; + TreeNode tnarr; + for (int i = 0; i < pObj.VarnameList.Names.Count; ++i) + { + tn = e.Node.Nodes.Add(pObj.VarnameList.Names[i]); + SetImageKey(ref tn, pObj.VartypeList.Elements[i]); + if (pObj.VartypeList.Elements[i].OffsetInfoType.Is1Dim()) + { + var ioitarr = (IOffsetInfoType_1Dim)pObj.VartypeList.Elements[i].OffsetInfoType; + uint arrayElementCount = ioitarr.GetArrayElementCount(); + int arrayLowerBounds = ioitarr.GetArrayLowerBounds(); + for (int j = 0; j < arrayElementCount; ++j) + { + tnarr = tn.Nodes.Add(pObj.VarnameList.Names[i] + "[" + (j + arrayLowerBounds) + "]"); + SetImageKey(ref tnarr, pObj.VartypeList.Elements[i]); + if (pObj.VartypeList.Elements[i].OffsetInfoType.HasRelation()) + { + var ioit = (IOffsetInfoType_Relation)pObj.VartypeList.Elements[i].OffsetInfoType; + tnarr.Nodes.Add("Loading..."); + tnarr.Tag = ioit.GetRelationId(); + SetImageKey(ref tnarr, pObj.VartypeList.Elements[i]); + } + } + tn.Tag = (uint)0; // is array + } + else if (pObj.VartypeList.Elements[i].OffsetInfoType.IsMDim()) + { + var ioitarrm = (IOffsetInfoType_MDim)pObj.VartypeList.Elements[i].OffsetInfoType; + uint[] MdimArrayElementCount = ioitarrm.GetMdimArrayElementCount(); + int[] MdimArrayLowerBounds = ioitarrm.GetMdimArrayLowerBounds(); + int dimCount = MdimArrayElementCount.Aggregate(0, (acc, act) => acc += (act > 0) ? 1 : 0); + int[] indexes = new int[dimCount]; + bool stop = false; + while (!stop) + { + string arrIdxStr = ""; + for (int j = dimCount - 1; j >= 0; --j) + { + arrIdxStr += (arrIdxStr != "" ? "," : "") + (indexes[j] + MdimArrayLowerBounds[j]); + } + tnarr = tn.Nodes.Add(pObj.VarnameList.Names[i] + "[" + arrIdxStr + "]"); + SetImageKey(ref tnarr, pObj.VartypeList.Elements[i]); + if (pObj.VartypeList.Elements[i].OffsetInfoType.HasRelation()) + { + var ioit = (IOffsetInfoType_Relation)pObj.VartypeList.Elements[i].OffsetInfoType; + tnarr.Nodes.Add("Loading..."); + tnarr.Tag = ioit.GetRelationId(); + SetImageKey(ref tnarr, pObj.VartypeList.Elements[i]); + } + ++indexes[0]; + for (int j = 0; j < dimCount; ++j) + { + if (indexes[j] >= MdimArrayElementCount[j]) + { + if (j + 1 < dimCount) + { + indexes[j] = 0; + ++indexes[j + 1]; + } + else + { + stop = true; + } + } + else + { + break; + } + } + } + tn.Tag = (uint)0; // is array + } + else + { + if (pObj.VartypeList.Elements[i].OffsetInfoType.HasRelation()) + { + var ioit = (IOffsetInfoType_Relation)pObj.VartypeList.Elements[i].OffsetInfoType; + tn.Nodes.Add("Loading..."); + tn.Tag = ioit.GetRelationId(); + SetImageKey(ref tn, pObj.VartypeList.Elements[i]); + } + } + } + } + + private void SetImageKey(ref TreeNode tn, PVartypeListElement vte) + { + string sk = "Tag"; + switch (vte.Softdatatype) + { + case Softdatatype.S7COMMP_SOFTDATATYPE_BOOL: + case Softdatatype.S7COMMP_SOFTDATATYPE_BBOOL: + sk = "Boolean"; + break; + case Softdatatype.S7COMMP_SOFTDATATYPE_INT: + case Softdatatype.S7COMMP_SOFTDATATYPE_DINT: + case Softdatatype.S7COMMP_SOFTDATATYPE_ULINT: + case Softdatatype.S7COMMP_SOFTDATATYPE_LINT: + case Softdatatype.S7COMMP_SOFTDATATYPE_USINT: + case Softdatatype.S7COMMP_SOFTDATATYPE_UINT: + case Softdatatype.S7COMMP_SOFTDATATYPE_UDINT: + case Softdatatype.S7COMMP_SOFTDATATYPE_SINT: + // Derived types + case Softdatatype.S7COMMP_SOFTDATATYPE_BLOCKFB: + case Softdatatype.S7COMMP_SOFTDATATYPE_BLOCKFC: + case Softdatatype.S7COMMP_SOFTDATATYPE_OBANY: + case Softdatatype.S7COMMP_SOFTDATATYPE_OBDELAY: + case Softdatatype.S7COMMP_SOFTDATATYPE_OBTOD: + case Softdatatype.S7COMMP_SOFTDATATYPE_OBCYCLIC: + case Softdatatype.S7COMMP_SOFTDATATYPE_OBATT: + case Softdatatype.S7COMMP_SOFTDATATYPE_PORT: + case Softdatatype.S7COMMP_SOFTDATATYPE_RTM: + case Softdatatype.S7COMMP_SOFTDATATYPE_PIP: + case Softdatatype.S7COMMP_SOFTDATATYPE_OBPCYCLE: + case Softdatatype.S7COMMP_SOFTDATATYPE_OBHWINT: + case Softdatatype.S7COMMP_SOFTDATATYPE_OBDIAG: + case Softdatatype.S7COMMP_SOFTDATATYPE_OBTIMEERROR: + case Softdatatype.S7COMMP_SOFTDATATYPE_OBSTARTUP: + case Softdatatype.S7COMMP_SOFTDATATYPE_DBANY: + case Softdatatype.S7COMMP_SOFTDATATYPE_DBWWW: + case Softdatatype.S7COMMP_SOFTDATATYPE_DBDYN: + sk = "Integer2"; + break; + case Softdatatype.S7COMMP_SOFTDATATYPE_BYTE: + case Softdatatype.S7COMMP_SOFTDATATYPE_WORD: + case Softdatatype.S7COMMP_SOFTDATATYPE_DWORD: + case Softdatatype.S7COMMP_SOFTDATATYPE_LWORD: + // Derived types + case Softdatatype.S7COMMP_SOFTDATATYPE_AOMIDENT: + case Softdatatype.S7COMMP_SOFTDATATYPE_EVENTANY: + case Softdatatype.S7COMMP_SOFTDATATYPE_EVENTATT: + case Softdatatype.S7COMMP_SOFTDATATYPE_AOMLINK: + case Softdatatype.S7COMMP_SOFTDATATYPE_HWANY: + case Softdatatype.S7COMMP_SOFTDATATYPE_HWIOSYSTEM: + case Softdatatype.S7COMMP_SOFTDATATYPE_HWDPMASTER: + case Softdatatype.S7COMMP_SOFTDATATYPE_HWDEVICE: + case Softdatatype.S7COMMP_SOFTDATATYPE_HWDPSLAVE: + case Softdatatype.S7COMMP_SOFTDATATYPE_HWIO: + case Softdatatype.S7COMMP_SOFTDATATYPE_HWMODULE: + case Softdatatype.S7COMMP_SOFTDATATYPE_HWSUBMODULE: + case Softdatatype.S7COMMP_SOFTDATATYPE_HWHSC: + case Softdatatype.S7COMMP_SOFTDATATYPE_HWPWM: + case Softdatatype.S7COMMP_SOFTDATATYPE_HWPTO: + case Softdatatype.S7COMMP_SOFTDATATYPE_HWINTERFACE: + case Softdatatype.S7COMMP_SOFTDATATYPE_HWIEPORT: + case Softdatatype.S7COMMP_SOFTDATATYPE_CONNANY: + case Softdatatype.S7COMMP_SOFTDATATYPE_CONNPRG: + case Softdatatype.S7COMMP_SOFTDATATYPE_CONNOUC: + case Softdatatype.S7COMMP_SOFTDATATYPE_CONNRID: + sk = "Binary2"; + break; + case Softdatatype.S7COMMP_SOFTDATATYPE_REAL: + case Softdatatype.S7COMMP_SOFTDATATYPE_LREAL: + sk = "Number2"; + break; + case Softdatatype.S7COMMP_SOFTDATATYPE_CHAR: + case Softdatatype.S7COMMP_SOFTDATATYPE_WCHAR: + sk = "Char"; + break; + case Softdatatype.S7COMMP_SOFTDATATYPE_STRING: + case Softdatatype.S7COMMP_SOFTDATATYPE_WSTRING: + sk = "Text"; + break; + case Softdatatype.S7COMMP_SOFTDATATYPE_DATE: + sk = "Date"; + break; + case Softdatatype.S7COMMP_SOFTDATATYPE_TIMEOFDAY: + case Softdatatype.S7COMMP_SOFTDATATYPE_LTOD: + sk = "Time"; + break; + case Softdatatype.S7COMMP_SOFTDATATYPE_TIME: + case Softdatatype.S7COMMP_SOFTDATATYPE_LTIME: + case Softdatatype.S7COMMP_SOFTDATATYPE_S5TIME: + case Softdatatype.S7COMMP_SOFTDATATYPE_TIMER: + sk = "Timer"; // Duration + break; + case Softdatatype.S7COMMP_SOFTDATATYPE_DATEANDTIME: + case Softdatatype.S7COMMP_SOFTDATATYPE_LDT: + case Softdatatype.S7COMMP_SOFTDATATYPE_DTL: + sk = "DateTime"; + break; + case Softdatatype.S7COMMP_SOFTDATATYPE_ANY: + case Softdatatype.S7COMMP_SOFTDATATYPE_POINTER: + case Softdatatype.S7COMMP_SOFTDATATYPE_REMOTE: + sk = "Any"; + break; + } + if (vte.OffsetInfoType.HasRelation()) + { + sk = "Structure"; + } + tn.ImageKey = sk; + tn.SelectedImageKey = tn.ImageKey; + } + + private string escapeTiaString(string str, bool isRootNode, bool isArray) + { + if (isRootNode) return '"' + str + '"'; + Regex re = new Regex("(^[0-9]|[^0-9A-Za-z_])"); + if (isArray) + { + Regex reArr = new Regex("^([^\"]*)(\\[[0-9, ]+\\])$"); + Match m = reArr.Match(str); + if (!m.Success) return str; + if (re.Match(m.Groups[1].Value).Success) return '"' + m.Groups[1].Value + '"' + m.Groups[2].Value; + return str; + } + if (re.IsMatch(str)) return '"' + str + '"'; + return str; + } + + private void readTagBySymbol() + { + tbValue.Text = ""; + tbSymbolicAddress.Text = ""; + + setStatus("loading..."); + PlcTag tag = conn.getPlcTagBySymbol(tbSymbol.Text); + setStatus("connected"); + if (tag == null) return; + + tbSymbolicAddress.Text = tag.Address.GetAccessString(); + + PlcTags tags = new PlcTags(); + tags.AddTag(tag); + if (tags.ReadTags(conn) != 0) return; + tbValue.Text = tag.ToString(); + } + + private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) + { + if (e.Node.Tag != null) return; // has relId + + string name = ""; + TreeNode tn = e.Node; + while (tn != null) + { + bool isArray = false; + string nodeText = tn.Text; + tn = tn.Parent; + if (tn != null && tn.Tag != null) + { // is array + if ((uint)tn.Tag == 0) + { + isArray = true; + tn = tn.Parent; // skip array parent + } + } + if (tn != null && tn.Tag != null) + { // don't add in/out/merker area as tag + uint relId = (uint)tn.Tag; + if (relId == 0x90010000 || relId == 0x90020000 || relId == 0x90030000) tn = null; + } + name = escapeTiaString(nodeText, tn == null, isArray) + (name != "" ? "." : "") + name; + } + tbSymbol.Text = name; + + readTagBySymbol(); + } + + private void btnRead_Click(object sender, EventArgs e) + { + if (tbSymbol.Text == "") return; + + try + { + readTagBySymbol(); + } + catch (Exception ex) + { + MessageBox.Show("ERROR: " + ex.Message); + } + } + + private void checkBox1_CheckedChanged(object sender, EventArgs e) + { + onlySecurePGOrPCAndHMI = checkBox1.Checked; + } + } +} diff --git a/S7CommPlusGUIBrowser/Form1.resx b/S7CommPlusGUIBrowser/Form1.resx index 56b1bb0..ba07a64 100644 --- a/S7CommPlusGUIBrowser/Form1.resx +++ b/S7CommPlusGUIBrowser/Form1.resx @@ -125,7 +125,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC4 - KgAAAk1TRnQBSQFMAgEBJAEAAagBAAGoAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + KgAAAk1TRnQBSQFMAgEBJAEAAbgBAAG4AQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAAaADAAEBAQABCAYAASgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/S7CommPlusGUIBrowser/bin/Debug/License.Lib.dll b/S7CommPlusGUIBrowser/bin/Debug/License.Lib.dll new file mode 100644 index 0000000..d1357e6 Binary files /dev/null and b/S7CommPlusGUIBrowser/bin/Debug/License.Lib.dll differ diff --git a/S7CommPlusGUIBrowser/bin/Debug/S7CommPlusDriver.dll b/S7CommPlusGUIBrowser/bin/Debug/S7CommPlusDriver.dll index 45052da..4e76d08 100644 Binary files a/S7CommPlusGUIBrowser/bin/Debug/S7CommPlusDriver.dll and b/S7CommPlusGUIBrowser/bin/Debug/S7CommPlusDriver.dll differ diff --git a/S7CommPlusGUIBrowser/bin/Debug/S7CommPlusGUIBrowser.exe b/S7CommPlusGUIBrowser/bin/Debug/S7CommPlusGUIBrowser.exe index 910fd75..692b7a6 100644 Binary files a/S7CommPlusGUIBrowser/bin/Debug/S7CommPlusGUIBrowser.exe and b/S7CommPlusGUIBrowser/bin/Debug/S7CommPlusGUIBrowser.exe differ diff --git a/S7CommPlusGUIBrowser/bin/Debug/S7CommPlusGUIBrowser.pdb b/S7CommPlusGUIBrowser/bin/Debug/S7CommPlusGUIBrowser.pdb index 6e59a69..073c813 100644 Binary files a/S7CommPlusGUIBrowser/bin/Debug/S7CommPlusGUIBrowser.pdb and b/S7CommPlusGUIBrowser/bin/Debug/S7CommPlusGUIBrowser.pdb differ diff --git a/S7CommPlusGUIBrowser/bin/Debug/libcrypto-3-x64.dll b/S7CommPlusGUIBrowser/bin/Debug/libcrypto-3-x64.dll new file mode 100644 index 0000000..87c2e0a Binary files /dev/null and b/S7CommPlusGUIBrowser/bin/Debug/libcrypto-3-x64.dll differ diff --git a/S7CommPlusGUIBrowser/bin/Debug/libssl-3-x64.dll b/S7CommPlusGUIBrowser/bin/Debug/libssl-3-x64.dll new file mode 100644 index 0000000..64f9712 Binary files /dev/null and b/S7CommPlusGUIBrowser/bin/Debug/libssl-3-x64.dll differ diff --git a/S7CommPlusGUIBrowser/bin/Debug/license.lic b/S7CommPlusGUIBrowser/bin/Debug/license.lic new file mode 100644 index 0000000..c24e374 --- /dev/null +++ b/S7CommPlusGUIBrowser/bin/Debug/license.lic @@ -0,0 +1,18 @@ + + + EasyLicense + + + + + + + + + + 2ARv1/EpdnU8XLyDEGR1br2dBD1EhjPyTuIem87R0YM= + + + DB6lmvc3b0zI9Y7k+SvGegAroCRxNxbIOAZydZMz7EpFW8yNDy6iIU9uuUBIhSYdk4mEIoroxFA6Ra2Ha9Gc0bShMtJdnyBVw2My+9DNFf1iA0Nzf7qdEUfR3dd4I+w/awgGBfAqO67LxPrCva3i+AitHgSMywadcJ+45lKJDbE= + + \ No newline at end of file diff --git a/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.Form1.resources b/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.Form1.resources index d663961..621973e 100644 Binary files a/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.Form1.resources and b/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.Form1.resources differ diff --git a/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.csproj.FileListAbsolute.txt b/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.csproj.FileListAbsolute.txt index 8fe2f23..9184a94 100644 --- a/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.csproj.FileListAbsolute.txt +++ b/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.csproj.FileListAbsolute.txt @@ -10,8 +10,3 @@ C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\S7CommPlusGUIBrowser\o C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\S7CommPlusGUIBrowser\obj\Debug\S7CommPlusGUIBrowser.csproj.CopyComplete C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\S7CommPlusGUIBrowser\obj\Debug\S7CommPlusGUIBrowser.exe C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\S7CommPlusGUIBrowser\obj\Debug\S7CommPlusGUIBrowser.pdb -C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\S7CommPlusGUIBrowser\bin\Debug\S7PublicKeys.dll -C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\S7CommPlusGUIBrowser\bin\Debug\S7Utilities.dll -C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\S7CommPlusGUIBrowser\bin\Debug\zlib.net.dll -C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\S7CommPlusGUIBrowser\bin\Debug\S7CommPlusAuth.dll -C:\Users\ShenX\Desktop\DiscoverDevices\S7CommPlusV3Driver\S7CommPlusGUIBrowser\bin\Debug\S7Family0.dll diff --git a/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.csproj.GenerateResource.cache b/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.csproj.GenerateResource.cache index 7c357e3..1d7c634 100644 Binary files a/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.csproj.GenerateResource.cache and b/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.csproj.GenerateResource.cache differ diff --git a/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.csprojAssemblyReference.cache b/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.csprojAssemblyReference.cache index 4bfae76..8b9d53e 100644 Binary files a/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.csprojAssemblyReference.cache and b/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.csprojAssemblyReference.cache differ diff --git a/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.exe b/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.exe index 910fd75..692b7a6 100644 Binary files a/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.exe and b/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.exe differ diff --git a/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.pdb b/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.pdb index 6e59a69..073c813 100644 Binary files a/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.pdb and b/S7CommPlusGUIBrowser/obj/Debug/S7CommPlusGUIBrowser.pdb differ