From db1c0ca3d0a64c603287bb969ee110326b2ec327 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Wei=C3=9F?= <72068105+Sandoun@users.noreply.github.com> Date: Thu, 16 Jun 2022 10:00:43 +0200 Subject: [PATCH 1/2] Update .gitignore --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 9491a2f..dbbb3ef 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,9 @@ *.userosscache *.sln.docstates +#ignore builds +Builds/ + # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs @@ -360,4 +363,4 @@ MigrationBackup/ .ionide/ # Fody - auto-generated XML schema -FodyWeavers.xsd \ No newline at end of file +FodyWeavers.xsd From 4ef73f99fb01b70c30e0d04a921907060347b888 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Wei=C3=9F?= <72068105+Sandoun@users.noreply.github.com> Date: Thu, 16 Jun 2022 10:00:55 +0200 Subject: [PATCH 2/2] Delete Builds directory --- Builds/MewtocolNet.xml | 193 ---------------------------- Builds/net5.0/MewtocolNet.deps.json | 23 ---- Builds/net5.0/MewtocolNet.dll | Bin 51200 -> 0 bytes Builds/net5.0/MewtocolNet.xml | 193 ---------------------------- 4 files changed, 409 deletions(-) delete mode 100644 Builds/MewtocolNet.xml delete mode 100644 Builds/net5.0/MewtocolNet.deps.json delete mode 100644 Builds/net5.0/MewtocolNet.dll delete mode 100644 Builds/net5.0/MewtocolNet.xml diff --git a/Builds/MewtocolNet.xml b/Builds/MewtocolNet.xml deleted file mode 100644 index a0dad5e..0000000 --- a/Builds/MewtocolNet.xml +++ /dev/null @@ -1,193 +0,0 @@ - - - - MewtocolNet - - - - - Trys to connect to the PLC by the IP given in the constructor - - Gets called when a connection with a PLC was established - Gets called when an error or timeout during connection occurs - - - - - Attaches a continous reader that reads back the Registers and Contacts - - - - - Generic information about the connected PLC - - - - - Builds a new Interfacer for a PLC - - - - - - - Sends a command to the PLC and awaits results - - MEWTOCOL Formatted request string ex: %01#RT - Auto close of frame [true]%01#RT01\r [false]%01#RT - Returns the result - - - - Gets generic information about the PLC - - A PLCInfo class - - - - Reads bool values from the plc by the given Contact List - - A list of contacts - The PLCs station number - List of IBoolContact with unique copys of the given contacts - - - - Writes a boolen value to the given contact - - The contact to write - The boolean state to write - Station Number (optional) - A result struct - - - - Reads the given numeric register from PLC - - Type of number (short, ushort, int, uint, float) - The register to read - Station number to access - A result with the given NumberRegister containing the readback value and a result struct - - - - Reads the given numeric register from PLC - - Type of number (short, ushort, int, uint, float) - The register to write - Station number to access - A result with the given NumberRegister and a result struct - - - - Gets fired whenever a contact of the observed list changes its value - - - - - A class describing a register - - - - - Gets called whenever the value was changed - - - - - Defines a register containing a number - - The type of the numeric value - - - - The value of the register - - - - - Defines a register containing a number - - Memory start adress max 99999 - The format in which the variable is stored - - - - Result for a read/write operation - - The type of the numeric value - - - - Defines a register containing a string - - - - - Defines a register containing a string - - - - - The formatted result of a ascii command - - - - - Contains generic information about the plc - - - - - Gets operation mode from 2 digit hex number - - - - - Contact as bool contact - - - - - A class describing a PLC contact - - - - - Creates a new base Contact - - A prefix identifier eg. X,Y,R,L - The number of the PLC contact - - - - Creates a new base Contact - - A prefix identifier eg. X,Y,R,L - The number of the PLC contact - - - - Build contact from complete contact name - - Complete contact name e.g. Y1C, Y3D or X1 - - - - Builds the mewtocol ascii contact identifier - - The identifier e.g. Y0001 or Y000A or X001C - - - - Converts the class to a generic json compatible object - - - - - - Creates a copy of the contact - - - - diff --git a/Builds/net5.0/MewtocolNet.deps.json b/Builds/net5.0/MewtocolNet.deps.json deleted file mode 100644 index e225eb1..0000000 --- a/Builds/net5.0/MewtocolNet.deps.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v5.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v5.0": { - "MewtocolNet/0.1.5": { - "runtime": { - "MewtocolNet.dll": {} - } - } - } - }, - "libraries": { - "MewtocolNet/0.1.5": { - "type": "project", - "serviceable": false, - "sha512": "" - } - } -} \ No newline at end of file diff --git a/Builds/net5.0/MewtocolNet.dll b/Builds/net5.0/MewtocolNet.dll deleted file mode 100644 index 455e3b7544dca7297e0c1b75f7c019936416e6ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51200 zcmcG134B~t_5Xcu_DM3$OeXs_fu>BGHgqT5plP~7H`){m6w)-Awt*xQW+tU!GMHLK zfg+-~u}BMuD7dh=pddv7K~P&n{Qb0)q7_9DRB!>Y{J-CG-^)yrg7W`={((97oO91T z_uO;OUEiDOs&hY~97-uCKJUJ()OV2bZ=t~V2SdmX)P6Uh?)Uwq?mNcHpVYN(?@C7c z67g+`_MS*bdv9+%71HXTYt~14;+?U^f&%||OZD0%O06^;>YX2#++x>u zM4b@HGo~uF9~`&lUho3a2tG&fQL0dIQ`=1j?U%oZp%nQ1bEwT9p(y{)rWQ#S{`}Cp zhR6}6#?ujF{tT55-kZ-W)jB5ceHam?ygAuk(93h^##C%)3Uueg0LYWJT6Tkyzlc(s z8xzSy2Pm=a2oN^(2l(XtEkt)UCSu)j2+~%iEFU~B#4uQ>)S_X+LQbV$@kiTCPxig{*bD_7y(hahhU0xLbxICSPAj?3D9tBeW`X>UdX7w*he`6TaLITS7u71@s_=t-y}GXp%g znVHSRk(tTFnVH3;I5VBeASFU73XeBvA_{|bo1JPNTH}IFbpRuxGKwbo{q6&&p+^Ld zHh_`mnOvdFCyfWpnGzet=Sn)u7<5v zGaIT@q8*Xyj>4h-!~;O1aH>BEZ~HH0On+cMIvpRxkC6TVeuVS~@+0K`dp|<>zxSil z<@jKJbf|OL>x}Vhk@^wXFpYtYN}cE(1RaLuWV4~kOd`nr8N{wLG0{MeU2p9pIAqdC4sSwHXXO?7O zveQh?LoFGOUo$zMC`YatIe;OaVKF_mWA1ZAG2gnC>Ev|kR+FHG`Y`GgWP{1Q;9`6) zppGFFgd0B0#F5#>q&V{-CWFkvz{Zq-flVR`4H($AE?5#w-llaeq^_%3%*Kf1sX|2my21_Mo6kW>bxVz zUpKOxnYo3DBXbiIXXa)muFMyh6lZQ=GDtzFhLfP0gylWm7qE|egkW+7>O)_^9I=-n z2}AwRjq3f-4eR|-x`qi�nOLx3sbr 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 - - - MewtocolNet - - - - - Trys to connect to the PLC by the IP given in the constructor - - Gets called when a connection with a PLC was established - Gets called when an error or timeout during connection occurs - - - - - Attaches a continous reader that reads back the Registers and Contacts - - - - - Generic information about the connected PLC - - - - - Builds a new Interfacer for a PLC - - - - - - - Sends a command to the PLC and awaits results - - MEWTOCOL Formatted request string ex: %01#RT - Auto close of frame [true]%01#RT01\r [false]%01#RT - Returns the result - - - - Gets generic information about the PLC - - A PLCInfo class - - - - Reads bool values from the plc by the given Contact List - - A list of contacts - The PLCs station number - List of IBoolContact with unique copys of the given contacts - - - - Writes a boolen value to the given contact - - The contact to write - The boolean state to write - Station Number (optional) - A result struct - - - - Reads the given numeric register from PLC - - Type of number (short, ushort, int, uint, float) - The register to read - Station number to access - A result with the given NumberRegister containing the readback value and a result struct - - - - Reads the given numeric register from PLC - - Type of number (short, ushort, int, uint, float) - The register to write - Station number to access - A result with the given NumberRegister and a result struct - - - - Gets fired whenever a contact of the observed list changes its value - - - - - A class describing a register - - - - - Gets called whenever the value was changed - - - - - Defines a register containing a number - - The type of the numeric value - - - - The value of the register - - - - - Defines a register containing a number - - Memory start adress max 99999 - The format in which the variable is stored - - - - Result for a read/write operation - - The type of the numeric value - - - - Defines a register containing a string - - - - - Defines a register containing a string - - - - - The formatted result of a ascii command - - - - - Contains generic information about the plc - - - - - Gets operation mode from 2 digit hex number - - - - - Contact as bool contact - - - - - A class describing a PLC contact - - - - - Creates a new base Contact - - A prefix identifier eg. X,Y,R,L - The number of the PLC contact - - - - Creates a new base Contact - - A prefix identifier eg. X,Y,R,L - The number of the PLC contact - - - - Build contact from complete contact name - - Complete contact name e.g. Y1C, Y3D or X1 - - - - Builds the mewtocol ascii contact identifier - - The identifier e.g. Y0001 or Y000A or X001C - - - - Converts the class to a generic json compatible object - - - - - - Creates a copy of the contact - - - -