Compare commits
566 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 96b7e4e455 | |||
| cab2a84231 | |||
| 33498ba894 | |||
| 337b834869 | |||
| cefb9df5bd | |||
| fe3b630e56 | |||
| aede998431 | |||
| c47efbfbfc | |||
| 496e38ab7d | |||
| ad3e3f8b9b | |||
| 8b44ff84af | |||
| e375f3323b | |||
| 1a217424f8 | |||
| 526b83d0fe | |||
| 7e7fb3dab7 | |||
| 7576b33e93 | |||
| 1c13bf0bae | |||
| 3dd81652b5 | |||
| ee21a0fe2e | |||
| 66293fc2d2 | |||
| fcec70b367 | |||
| cb3082522c | |||
| 94beb343eb | |||
| fa3916c2a4 | |||
| 45505d70e1 | |||
| 0d26ddb4f6 | |||
| 20b5d2c99c | |||
| 3401ba241b | |||
| 0badc4b4a8 | |||
| e463f0ece5 | |||
| 96ee5ad494 | |||
| 94bc8a7c50 | |||
| f7a0291ab0 | |||
| 20d76d43ec | |||
| c014b16ace | |||
| b89bc03791 | |||
| 244f7132af | |||
| c6510b928d | |||
| 5bc750da90 | |||
| 0f44285d8a | |||
| 5c20450d4c | |||
| d1359ac605 | |||
| bd03826140 | |||
| b4de394af6 | |||
| 09ebcca66c | |||
| 88aaaf78a3 | |||
| 97c4e1ce97 | |||
| a3a2f75bde | |||
| bc784720ba | |||
| 1a5145fe2f | |||
| d33061aeda | |||
| b16dee60ba | |||
| 17156418f0 | |||
| 637e691a7b | |||
| adb1d0e27c | |||
| be0feb3705 | |||
| a1560a8e78 | |||
| b39ea3815b | |||
| 6b97cd1a4d | |||
| f7e5e4da3c | |||
| 7149f29f98 | |||
| a3894b3561 | |||
| f8afb1a1b4 | |||
| f76b03d957 | |||
| 7013193a75 | |||
| d33ecbe685 | |||
| 687e2d7809 | |||
| eb8cb57ae2 | |||
| 0392251697 | |||
| bc427cf0ef | |||
| 9bab587ecd | |||
| 61b94daf28 | |||
| 4911353eb1 | |||
| 6cced708fd | |||
| 2aaf3e06d2 | |||
| 0f5cd7cf89 | |||
| 4436eb2ab0 | |||
| 655407a9a8 | |||
| 00ce6c2a04 | |||
| beaa30a24d | |||
| 375f5556ef | |||
| 8c79299d2f | |||
| 94cc2cc80b | |||
| a3f0758380 | |||
| 0f30b9f8fc | |||
| 27a741e843 | |||
| 2f9d847410 | |||
| d72c6104fd | |||
| 8422f75978 | |||
| 3d5703ad79 | |||
| ca80c97455 | |||
| 5bf06971df | |||
| 44123da2c2 | |||
| 6f7a2675ef | |||
| fc41652d44 | |||
| 6c3d22278a | |||
| d7bd17f679 | |||
| 30a5592196 | |||
| 998ca04b99 | |||
| b466235c58 | |||
| 735026187d | |||
| 457cef0eb6 | |||
| 36ef955bb6 | |||
| e6b2b00aa5 | |||
| 6c4c441d65 | |||
| 7ca2ad059f | |||
| bf6510c149 | |||
| eddfe40814 | |||
| 4ac901df06 | |||
| fad3c82b46 | |||
| b6bd0b734c | |||
| bd9682361c | |||
| 8281bf0ff5 | |||
| eb14841bfd | |||
| f8a140cdf6 | |||
| 358f8c9330 | |||
| 17100d2f93 | |||
| 5eb07dfaa4 | |||
| b7984023f9 | |||
| 2344940480 | |||
| 498bfdbf34 | |||
| 42fc70e319 | |||
| 865a09fe89 | |||
| 44702e769a | |||
| cbe5e7d303 | |||
| 510b6c8a96 | |||
| 0a8e49082d | |||
| bf5ad49bfa | |||
| 75bfe30d68 | |||
| 98dbb7946a | |||
| b5a024ba0e | |||
| e3df06bb08 | |||
| 946ce23f6f | |||
| 7fd5ee32fb | |||
| c8d50d1dc7 | |||
| 215452a92f | |||
| 0ada41f47d | |||
| 0df05264eb | |||
| 82aa2e84b9 | |||
| a794402ccb | |||
| 95a7a1355e | |||
| 5bfe2bfa1f | |||
| b5c32938df | |||
| 59246cab9e | |||
| 26d0132274 | |||
| 74ad352393 | |||
| f8ccb0492a | |||
| 5f1ca0699a | |||
| bd4cb3504a | |||
| 7c2db0170c | |||
| dee9084d62 | |||
| f842773efc | |||
| b64446e68e | |||
| 34d3414f8e | |||
| e303abec94 | |||
| d643f693d7 | |||
| 75fe84861a | |||
| fdaf80247f | |||
| 83393d4aa1 | |||
| 8cfa418a75 | |||
| 3ed6d88523 | |||
| 8822d1e9d2 | |||
| f1f00e3326 | |||
| 42a6eaa77f | |||
| 06ef9d377d | |||
| 5b9f771d06 | |||
| 49de435bab | |||
| e8c55ada85 | |||
| c2cd9adef8 | |||
| df0c74540f | |||
| 5d3d1f45f8 | |||
| 57e96b9eb9 | |||
| 795af144c1 | |||
| 075a7e2e8d | |||
| 523300e5e1 | |||
| 0e9d0acfcb | |||
| c7c8564aff | |||
| cadf52012c | |||
| d3d49c6bf9 | |||
| 32409742e8 | |||
| 3c329bb5c8 | |||
| 542769af1c | |||
| 66564fde66 | |||
| f3e10a223b | |||
| edd1e7cf47 | |||
| 19a57d4ba7 | |||
| a35b7485fb | |||
| 3a991b7d5e | |||
| 47f2b80abd | |||
| 339f590010 | |||
| 894c732c61 | |||
| 60e144968f | |||
| 685db9d4da | |||
| 6d52d14f58 | |||
| 8f48a05914 | |||
| acb12da71a | |||
| 07d23bd055 | |||
| 4b5f406849 | |||
| 491321a509 | |||
| 0d6b42c356 | |||
| 592984bd22 | |||
| ccb3054ec7 | |||
| 79b1fc2f24 | |||
| 6ffd356eba | |||
| a4f6ffcc28 | |||
| 704049c7a7 | |||
| 91ac201873 | |||
| 56ee15521d | |||
| 5180881114 | |||
| 6144554b4e | |||
| e4ed4b6b0f | |||
| 8769127f91 | |||
| f0ee892ce5 | |||
| 23bcf80ba7 | |||
| cb16049c72 | |||
| 6c834482a4 | |||
| 51e682c166 | |||
| 0ec2d5e931 | |||
| 4e431a7be7 | |||
| e60b47560e | |||
| 3c05f497ef | |||
| ab9f65391e | |||
| d207f82cc1 | |||
| fd98b2fabb | |||
| dfc2eca2c2 | |||
| f7cc7c202b | |||
| 164ffffc95 | |||
| 6ca90f00bd | |||
| bb24cdd2cc | |||
| 4fcc0a52fb | |||
| 9f1e9a9b6a | |||
| c881dae49b | |||
| 4aa4fbb40d | |||
| 7ad55f3f9d | |||
| 0f63c012c8 | |||
| eefb9e751f | |||
| bf27fb3ce1 | |||
| 6e5b5cbd00 | |||
| 41830e6b9d | |||
| 60a78f434f | |||
| 3ad4905de3 | |||
| 840491fcb3 | |||
| 50a1d2708c | |||
| 7ca411b9a1 | |||
| ebf1bcd62e | |||
| 6f4128ce2f | |||
| c959946e1d | |||
| 7d6e934b2a | |||
| 12b5525fb5 | |||
| cc90b8422a | |||
| fc5a5f9c9c | |||
| e2089e6d5a | |||
| 494627ddfc | |||
| 86cef70db6 | |||
| 3ef99c0e0b | |||
| 269e8873aa | |||
| d58aae4e61 | |||
| 9e4188bf90 | |||
| 21a3c1fc1c | |||
| 095a98daf1 | |||
| daf0c77f04 | |||
| 682f84b1d7 | |||
| ee846a4998 | |||
| 94da9f2aad | |||
| 02ba937d02 | |||
| 515c4d14b9 | |||
| f0985fa0d6 | |||
| 001877453a | |||
| 39acc17b98 | |||
| 130cbceaed | |||
| 657072ee90 | |||
| e53443ffe3 | |||
| bd8577b32e | |||
| 14d91f173b | |||
| 045e0b62d8 | |||
| af8820ba4e | |||
| 5e2b482098 | |||
| 2d4c585a49 | |||
| 5491ea4abd | |||
| 6e95f35295 | |||
| 5acf57c494 | |||
| 06f15d5533 | |||
| 456eb99262 | |||
| 5e5b5b02d4 | |||
| 472ed086eb | |||
| ead744cb07 | |||
| 496d64d53a | |||
| 82583c8387 | |||
| 2039417194 | |||
| 3a9c801eec | |||
| 96d7a571ac | |||
| 31ae8a93b5 | |||
| 93e48d5fd8 | |||
| 72bcdeb301 | |||
| 958b97814a | |||
| 63e7629a72 | |||
| c0c97cc0c7 | |||
| fc9a727118 | |||
| 7d57c489d1 | |||
| 4bcf940134 | |||
| c7052ac390 | |||
| 7497f01e7a | |||
| 024f5369e8 | |||
| a990dcf712 | |||
| a382a313e2 | |||
| 39f5be6d9c | |||
| cead2275eb | |||
| e808411cb2 | |||
| da8744de56 | |||
| 0ea0fbd8d4 | |||
| 4d31463688 | |||
| 7086c0a83f | |||
| c5bda8d774 | |||
| c0bc78cb5e | |||
| 5504019044 | |||
| 08d48f6044 | |||
| a554e42f06 | |||
| b4fe6f0c05 | |||
| 5f117de287 | |||
| 89e0e90166 | |||
| 7a6d6aad56 | |||
| c85ed17448 | |||
| a74d2abb19 | |||
| 91fafd459b | |||
| 5fead0145c | |||
| 8f97eeecfd | |||
| 1cadbfd640 | |||
| c6ee7a74b0 | |||
| 98f64f57e5 | |||
| 287e5d1ab8 | |||
| 88e1c64c3b | |||
| ad3a91ad1c | |||
| fb9f1c4b72 | |||
| b8e3cd7ef0 | |||
| 074df56d4d | |||
| f4d226fc2b | |||
| 790652a8c8 | |||
| 816d49a08c | |||
| bc7116cf5d | |||
| 617bb783d2 | |||
| 26f225fabc | |||
| ac1c8f7067 | |||
| 7238579305 | |||
| f13cadd145 | |||
| 216980b923 | |||
| 149205e998 | |||
| ffd24f2539 | |||
| 147b84ab19 | |||
| ec9e23071f | |||
| 85aebf6385 | |||
| 17eabc16da | |||
| 1faba838a7 | |||
| 12378bdac7 | |||
| 611fcb940d | |||
| ab345f7f99 | |||
| e22a34a34e | |||
| 1cb0605d41 | |||
| 1b8e84dd30 | |||
| 9d8a3cd1ea | |||
| ed9f33e5e8 | |||
| fa04f490dc | |||
| 4e625e71c5 | |||
| fa9bed3196 | |||
| 8b645e01d1 | |||
| a8fdd44497 | |||
| f5d1aa04f1 | |||
| c4468e62d8 | |||
| bf4487909c | |||
| 6dc778bbf3 | |||
| 0fc43251bc | |||
| 188ce800e8 | |||
| a7db8bd047 | |||
| a6ee88e4e7 | |||
| 75d881edf6 | |||
| 5f95125ae2 | |||
| 354bf0df6d | |||
| ff6a7a1962 | |||
| d079e187e1 | |||
| e21c13e7c8 | |||
| 3c3ca13af3 | |||
| 2de6e9aae2 | |||
| 87f55952f8 | |||
| 843aa43240 | |||
| 65c7379111 | |||
| c46f7a531a | |||
| 87494489f6 | |||
| ca45edab94 | |||
| ca318a255e | |||
| 3aae8b0f9b | |||
| 5951ab295c | |||
| 2ec4598482 | |||
| 6730de1833 | |||
| 9c5644c52b | |||
| 1753027afd | |||
| a2c5d327db | |||
| 04d94b572c | |||
| 134981c2d7 | |||
| 5da1afa0eb | |||
| e42a231989 | |||
| e509c83b90 | |||
| 79f28bc415 | |||
| 2c94761966 | |||
| 44c6e48398 | |||
| 6c1aa037d5 | |||
| 3a8f702a87 | |||
| b21592609b | |||
| 5a4e86f861 | |||
| 0e41eb6033 | |||
| 11100544c9 | |||
| 42069a2cb2 | |||
| 5c1777a4b6 | |||
| de81cde6ec | |||
| 7c47415d65 | |||
| dcceb55652 | |||
| 247bf212ae | |||
| f5b2745a87 | |||
| 6f46e5a9a5 | |||
| 1c0f161640 | |||
| 7a66c3d63d | |||
| 23af55e1e1 | |||
| 8e3f3ec5e0 | |||
| cf96c67a3c | |||
| ae8f931372 | |||
| 20d9bf716d | |||
| 2f6f308f19 | |||
| 7fd2b6ca30 | |||
| aff9643216 | |||
| 465b09c176 | |||
| 1efde033b2 | |||
| 4a609bc35b | |||
| 88aa48a3d8 | |||
| b280dca20f | |||
| a6d6041b06 | |||
| 46b7b02da9 | |||
| 98d3798824 | |||
| dd7e9b9e19 | |||
| 550b448dc2 | |||
| afaa8f3576 | |||
| 328d2ed176 | |||
| 9bd1faf083 | |||
| 6526a20d5c | |||
| 9f4adce366 | |||
| 7d29511fdb | |||
| e28b736ebf | |||
| 383b5417d4 | |||
| 3f9b2a8c8e | |||
| 382d961761 | |||
| ae3294ca46 | |||
| 1f75da9bef | |||
| ed8400619c | |||
| 67fcba0053 | |||
| a7548a6e78 | |||
| 90fe35fc1c | |||
| 4737d22a2f | |||
| 7a9dca8807 | |||
| 2dfc9e293f | |||
| 3cca07422c | |||
| af4870d99d | |||
| 7b6ee330bb | |||
| 8542b6c565 | |||
| 3c65bced53 | |||
| 95d29cc716 | |||
| bcde0c8d86 | |||
| 76deabb93b | |||
| bfc99fc826 | |||
| cb28589f79 | |||
| 8cae6edff2 | |||
| 34a71b5784 | |||
| 455ddd660c | |||
| bbada3a929 | |||
| 0a00ba3eae | |||
| 7a3a068908 | |||
| 2a3de715da | |||
| 002b235d76 | |||
| b135f017d5 | |||
| 32e0c34945 | |||
| f32d0c0daf | |||
| 014f63bd2b | |||
| a6e58365dd | |||
| 7481d3bf28 | |||
| c036cd30e2 | |||
| 682efe1928 | |||
| d511b49c64 | |||
| bb7ef476ed | |||
| 393da8156b | |||
| 575b74c676 | |||
| 9f27a7b5ce | |||
| 12ee118e72 | |||
| 00994f993b | |||
| 581c6d44fe | |||
| a75edd650e | |||
| eea8a2fa5d | |||
| 14c9fb628b | |||
| 18530ea7b3 | |||
| 04447282ea | |||
| 582a4455e0 | |||
| 43fa8448d2 | |||
| a6df5719f0 | |||
| d23f6fd4c5 | |||
| 91a554d616 | |||
| e96d97890f | |||
| 42186c9509 | |||
| b0391855f5 | |||
| 305e2220f8 | |||
| a5d2323dea | |||
| 95db7bbdd9 | |||
| 345918cdaf | |||
| 8bc9fc97c8 | |||
| cd5ea6c6cc | |||
| fb91158ee6 | |||
| 7b724b070f | |||
| 7bb8602595 | |||
| 02b1b3b4c6 | |||
| f499cdc203 | |||
| fa9db02e0e | |||
| 136f3c40ff | |||
| 0e02b0ca3f | |||
| 913834a34d | |||
| 6b0d5e2c03 | |||
| 3ead2b7283 | |||
| 66ba44868e | |||
| 529266b57b | |||
| e1280c193f | |||
| 77cec0160a | |||
| f7234dd34b | |||
| 4c7ad000db | |||
| 140afc4539 | |||
| 699ccfbfba | |||
| 3877cb7843 | |||
| 80e6192e46 | |||
| 2786c8e6a8 | |||
| efbfd857f6 | |||
| 3968f72061 | |||
| 88e78736f0 | |||
| a362829256 | |||
| 43abdd203b | |||
| 74e51a4156 | |||
| 52621f83e8 | |||
| 9be02d4666 | |||
| d16712bbd9 | |||
| 8c96c46d35 | |||
| 678312ceca | |||
| 072b216eff | |||
| 2f2fc02730 | |||
| cccd8f2c36 | |||
| 4e27d3fe63 | |||
| 8d57a29fd9 | |||
| c45c81dbf7 | |||
| 7417c20dcc | |||
| a98500bade | |||
| 154897e835 | |||
| 587f4b3e82 | |||
| 8714898228 | |||
| 49ccfe10e7 | |||
| 1168c826c1 | |||
| 71a1333c12 | |||
| 4c5f1e975f | |||
| 4a5d0b9770 | |||
| 1e4dc168ac | |||
| d2fd9675fd | |||
| 9440a01ff7 | |||
| 968dab090d | |||
| b47975c7f6 | |||
| cc9527fbad | |||
| 208b2122ac | |||
| a379fc96d3 |
@@ -8,9 +8,10 @@
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>Client.Chromium</RootNamespace>
|
||||
<AssemblyName>Client.Chromium</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Config.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
<xs:element name="RenderingMethod" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="ShowVirtualKeyboard" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="RunningOnSecondaryScreen" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="DeveloperMode" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="DeveloperMode" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="EnableTransparent" minOccurs='1' maxOccurs='1'/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
@@ -2,9 +2,10 @@
|
||||
<Config>
|
||||
<Client>
|
||||
<IsSCM>false</IsSCM>
|
||||
<EnableTransparent>false</EnableTransparent>
|
||||
<TranspColor>#FF00FF</TranspColor>
|
||||
<RenderingMethod>GPU</RenderingMethod> <!-- GPU/CPU -->
|
||||
<ShowVirtualKeyboard>false</ShowVirtualKeyboard>
|
||||
<ShowVirtualKeyboard>true</ShowVirtualKeyboard>
|
||||
<RunningOnSecondaryScreen>false</RunningOnSecondaryScreen>
|
||||
<DeveloperMode>true</DeveloperMode>
|
||||
</Client>
|
||||
@@ -12,9 +13,9 @@
|
||||
<ServerUrl>localhost</ServerUrl>
|
||||
<ServerPort>9000</ServerPort>
|
||||
<Id>1</Id>
|
||||
<DeleteCahceFolderOnStartup>true</DeleteCahceFolderOnStartup>
|
||||
<DeleteCahceFolderOnStartup>false</DeleteCahceFolderOnStartup>
|
||||
</Connection>
|
||||
<VendorHmi>
|
||||
<FollowNcWindow>True</FollowNcWindow>
|
||||
<FollowNcWindow>false</FollowNcWindow>
|
||||
</VendorHmi>
|
||||
</Config>
|
||||
@@ -31,6 +31,7 @@ namespace Client.Config
|
||||
.Descendants(Constants.CLIENT_CONFIG_KEY)
|
||||
.Select(x => new SubModels.Client()
|
||||
{
|
||||
EnableTransparent = ValidateEnableTransparent(x.Element("EnableTransparent").Value),
|
||||
TranspColor = ValidateTranspColor(x.Element("TranspColor").Value),
|
||||
RenderingMethod = ValidateRendering(x.Element("RenderingMethod").Value),
|
||||
RunningOnSecondaryScreen = ValidateSecScreen(x.Element("RunningOnSecondaryScreen").Value),
|
||||
@@ -179,7 +180,16 @@ namespace Client.Config
|
||||
throw new Exception(@"Configuration Error: ""Client - DeveloperMode"" is not a valid Boolean Type");
|
||||
|
||||
}
|
||||
private static bool ValidateEnableTransparent(string value)
|
||||
{
|
||||
Boolean DeveloperMode;
|
||||
if (Boolean.TryParse(value, out DeveloperMode))
|
||||
return DeveloperMode;
|
||||
else
|
||||
throw new Exception(@"Configuration Error: ""Client - EnableTransparent"" is not a valid Boolean Type");
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static Boolean ValidateFollowNcWin(String value)
|
||||
{
|
||||
|
||||
@@ -13,5 +13,8 @@ namespace Client.Config.SubModels
|
||||
public Boolean DeveloperMode { get; set; }
|
||||
public Boolean IsSCM { get; set; }
|
||||
public Boolean Autorun { get; set; }
|
||||
public Boolean EnableTransparent { get; set; }
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
//public static string BASE_PATH = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\";
|
||||
public static string BROWSER_CACHE_FOLDER = BASE_PATH + "LocalStorage";
|
||||
public static string STARTUP_CONFIG_SCHEMA_PATH = BASE_PATH + "ClientValidator.xsd";
|
||||
public static string STARTUP_CONFIG_PATH = BASE_PATH + "lib\\Config.xml";
|
||||
public static string STARTUP_CONFIG_PATH = BASE_PATH + "Config.xml";
|
||||
public static string CEF_PATH = BASE_PATH + "CEF";
|
||||
public static string CEF_X86_PATH = BASE_PATH + "CEF\\Release_X86";
|
||||
public static string CEF_X64_PATH = BASE_PATH + "CEF\\Release_X64";
|
||||
|
||||
@@ -38,13 +38,14 @@ namespace Active_Client.Browser_Tools
|
||||
|
||||
private static readonly string[] _validExtensions = {".json", ".rcp", ".tpl" };
|
||||
//private static readonly string[] _validExtensions = { "", ".txt", ".cnc", ".cn", ".cno", ".ini", ".mpf", ".spf", ".tap", ".anc", ".iso" };
|
||||
private static readonly string[] _validImages = { ".jpg", ".jpeg", ".png" };
|
||||
private static readonly string[] _validImages = { ".svg" };
|
||||
private static string jobPath = "";
|
||||
private static Dictionary<string, IntPtr> _editorOpened = new Dictionary<string, IntPtr>();
|
||||
private static EditorVar _currentEditorObject = new EditorVar();
|
||||
public static string RECENT_FOLDER_KEY = "RECENT";
|
||||
private const string THERMO_RECIPE_PATH = @"C:\CMS\Recipes";
|
||||
|
||||
private const string THERMO_RECIPE_PATH = @"C:\CMS\Recipes";
|
||||
private const string CMS_PATH = @"C:\CMS";
|
||||
|
||||
public static FileSystemWatcher watcher = null;
|
||||
public static DateTime _lastTimeFileWatcherEventRaised = DateTime.Now;
|
||||
|
||||
@@ -77,9 +78,16 @@ namespace Active_Client.Browser_Tools
|
||||
AddFunction("openOrStartProcess").Execute += openOrStartProcess;
|
||||
AddFunction("isVirtualKeybConfigured").Execute += isVirtualKeybConfigured;
|
||||
AddFunction("getOSdriveList").Execute += getOSdriveList;
|
||||
AddFunction("getAllRecipeDirectories").Execute += getAllRecipeDirectories;
|
||||
AddFunction("getFileList").Execute += getFileList;
|
||||
AddFunction("getProgramInfo").Execute += getProgramInfo;
|
||||
AddFunction("editProgram").Execute += editProgram;
|
||||
AddFunction("deleteFile").Execute += deleteFile;
|
||||
AddFunction("deleteFolder").Execute += deleteFolder;
|
||||
AddFunction("createFolder").Execute += createFolder;
|
||||
AddFunction("duplicateRecipe").Execute += duplicateRecipe;
|
||||
|
||||
|
||||
|
||||
AddFunction("uploadAndActivateProgram").Execute += uploadAndActivateProgram;
|
||||
AddFunction("uploadAndAddToQueue").Execute += uploadAndAddToQueue;
|
||||
@@ -359,32 +367,6 @@ namespace Active_Client.Browser_Tools
|
||||
{
|
||||
List<Drive> drivelist = new List<Drive>();
|
||||
|
||||
// USB & HD Drives
|
||||
foreach (var drive in DriveInfo.GetDrives())
|
||||
{
|
||||
if (drive.IsReady)
|
||||
{
|
||||
//Filter NC Address
|
||||
if (drive.DriveType != DriveType.Network)
|
||||
{
|
||||
drivelist.Add(new Drive()
|
||||
{
|
||||
Name = ElaborateName(drive.VolumeLabel, drive.Name.TrimEnd('\\'), drive.DriveType),
|
||||
Path = drive.RootDirectory.ToString(),
|
||||
Type = ElaborateType(drive.DriveType)
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Desktop folder
|
||||
drivelist.Add(new Drive()
|
||||
{
|
||||
Name = ElaborateName("Desktop", "", DriveType.Unknown),
|
||||
Path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\",
|
||||
Type = "SPFO"
|
||||
});
|
||||
|
||||
if (Directory.Exists(THERMO_RECIPE_PATH))
|
||||
{
|
||||
drivelist.Add(new Drive()
|
||||
@@ -395,31 +377,58 @@ namespace Active_Client.Browser_Tools
|
||||
});
|
||||
}
|
||||
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(drivelist));
|
||||
}
|
||||
|
||||
public void getAllRecipeDirectories(object sender, CfrV8HandlerExecuteEventArgs e)
|
||||
{
|
||||
List<string> dirs = this.DirSearch(THERMO_RECIPE_PATH);
|
||||
for (int i = 0; i< dirs.Count; i++)
|
||||
{
|
||||
dirs[i] = dirs[i].Remove(0,CMS_PATH.Length +1);
|
||||
}
|
||||
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(dirs));
|
||||
}
|
||||
|
||||
|
||||
public void duplicateRecipe(object sender, CfrV8HandlerExecuteEventArgs e)
|
||||
{
|
||||
if (e.Arguments.Count() < 2)
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("error_arguments_not_ok")));
|
||||
return;
|
||||
}
|
||||
|
||||
string oldFile = CMS_PATH + "\\" + e.Arguments[0].StringValue + ".rcp";
|
||||
string newFile = CMS_PATH + "\\" + e.Arguments[1].StringValue + ".rcp";
|
||||
string oldImage = CMS_PATH + "\\" + e.Arguments[0].StringValue + ".svg";
|
||||
string newImage = CMS_PATH + "\\" + e.Arguments[1].StringValue + ".svg";
|
||||
if (!File.Exists(oldFile))
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("file_not_found")));
|
||||
return;
|
||||
}
|
||||
if (File.Exists(newFile))
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("file_already_exists")));
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
// Network Folders
|
||||
var searcher = new ManagementObjectSearcher("select * from Win32_MappedLogicalDisk");
|
||||
foreach (ManagementObject queryObj in searcher.Get())
|
||||
File.Copy(oldFile, newFile, true);
|
||||
if (File.Exists(oldImage))
|
||||
{
|
||||
//Filter not CNC folder
|
||||
if (!queryObj["ProviderName"].ToString().Contains(Config.VendorHmiConfig.IpAddress))
|
||||
{
|
||||
drivelist.Add(new Drive()
|
||||
{
|
||||
Name = ElaborateName(queryObj["VolumeName"].ToString(), queryObj["Name"].ToString(), DriveType.Network),
|
||||
Path = queryObj["Name"].ToString(),
|
||||
Type = ElaborateType(DriveType.Network)
|
||||
});
|
||||
}
|
||||
File.Copy(oldImage, newImage, true);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("cannot_copy_file")));
|
||||
}
|
||||
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(drivelist));
|
||||
}
|
||||
|
||||
|
||||
// Read all files in directory
|
||||
public void getFileList(object sender, CfrV8HandlerExecuteEventArgs e)
|
||||
@@ -427,14 +436,14 @@ namespace Active_Client.Browser_Tools
|
||||
List<FileModel> filelist = new List<FileModel>();
|
||||
if (e.Arguments.Count() == 0)
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new List<FileModel>()));
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("error_arguments_not_ok")));
|
||||
return;
|
||||
}
|
||||
|
||||
string p = e.Arguments[0].StringValue;
|
||||
if (p != RECENT_FOLDER_KEY && !Directory.Exists(p))
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new List<FileModel>()));
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("file_not_exists")));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -485,6 +494,95 @@ namespace Active_Client.Browser_Tools
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(filelist));
|
||||
}
|
||||
|
||||
public void deleteFile(object sender, CfrV8HandlerExecuteEventArgs e)
|
||||
{
|
||||
if (e.Arguments.Count() == 0)
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("error_arguments_not_ok")));
|
||||
return;
|
||||
}
|
||||
|
||||
// Get path
|
||||
string p = e.Arguments[0].StringValue;
|
||||
FileAttributes attr = File.GetAttributes(p);
|
||||
if (!File.Exists(p) || attr.HasFlag(FileAttributes.Directory))
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("file_not_found")));
|
||||
return;
|
||||
}
|
||||
if (attr.HasFlag(FileAttributes.ReadOnly))
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("file_not_editable")));
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
File.Delete(p);
|
||||
string images = Path.ChangeExtension(p, "svg");
|
||||
if(File.Exists(images))
|
||||
{
|
||||
File.Delete(images);
|
||||
}
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("cannot_delete_file")));
|
||||
}
|
||||
}
|
||||
|
||||
public void deleteFolder(object sender, CfrV8HandlerExecuteEventArgs e)
|
||||
{
|
||||
if (e.Arguments.Count() == 0)
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("error_arguments_not_ok")));
|
||||
return;
|
||||
}
|
||||
|
||||
// Get path
|
||||
string p = e.Arguments[0].StringValue;
|
||||
FileAttributes attr = File.GetAttributes(p);
|
||||
if (!Directory.Exists(p) || !attr.HasFlag(FileAttributes.Directory))
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("directory_not_found")));
|
||||
return;
|
||||
}
|
||||
if (attr.HasFlag(FileAttributes.ReadOnly))
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("directory_not_editable")));
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
Directory.Delete(p,true);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("cannot_delete_directory")));
|
||||
}
|
||||
}
|
||||
|
||||
public void createFolder(object sender, CfrV8HandlerExecuteEventArgs e)
|
||||
{
|
||||
if (e.Arguments.Count() == 0)
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("error_arguments_not_ok")));
|
||||
return;
|
||||
}
|
||||
string path = e.Arguments[0].StringValue;
|
||||
if (Directory.Exists(path))
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("directory_already_exists")));
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
Directory.CreateDirectory(path);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("cannot_delete_directory")));
|
||||
}
|
||||
}
|
||||
// Upload and activate the program
|
||||
public async void uploadAndActivateProgram(object sender, CfrV8HandlerExecuteEventArgs e)
|
||||
{
|
||||
@@ -671,8 +769,7 @@ namespace Active_Client.Browser_Tools
|
||||
// Read info of a file
|
||||
public void getProgramInfo(object sender, CfrV8HandlerExecuteEventArgs e)
|
||||
{
|
||||
string line, imagePath, imageDirectory;
|
||||
int counter = 0;
|
||||
string imagePath, imageDirectory;
|
||||
|
||||
if (e.Arguments.Count() == 0)
|
||||
{
|
||||
@@ -725,7 +822,10 @@ namespace Active_Client.Browser_Tools
|
||||
{
|
||||
if (File.Exists(imageDirectory + "/" + imagePath + ext))
|
||||
{
|
||||
file.PreviewBase64 = "data:image/" + ext + ";base64," + Convert.ToBase64String(File.ReadAllBytes(imageDirectory + "/" + imagePath + ext));
|
||||
if (ext.ToLower().Equals(".svg"))
|
||||
file.PreviewBase64 = File.ReadAllText(imageDirectory + "/" + imagePath + ext);
|
||||
else
|
||||
file.PreviewBase64 = "data:image/" + ext + ";base64," + Convert.ToBase64String(File.ReadAllBytes(imageDirectory + "/" + imagePath + ext));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -976,6 +1076,26 @@ namespace Active_Client.Browser_Tools
|
||||
return retName;
|
||||
}
|
||||
|
||||
|
||||
private List<String> DirSearch(string sDir)
|
||||
{
|
||||
List<String> files = new List<String>();
|
||||
try
|
||||
{
|
||||
files.Add(sDir);
|
||||
foreach (string d in Directory.GetDirectories(sDir))
|
||||
{
|
||||
files.AddRange(DirSearch(d));
|
||||
}
|
||||
}
|
||||
catch (System.Exception excpt)
|
||||
{
|
||||
MessageBox.Show(excpt.Message);
|
||||
}
|
||||
|
||||
return files;
|
||||
}
|
||||
|
||||
#endregion FILESYSTEM_METHODS
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<ApplicationVersion>2.0.0.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
@@ -128,7 +128,8 @@
|
||||
<HintPath>..\packages\Microsoft.WindowsAPICodePack-Shell.1.1.0.0\lib\Microsoft.WindowsAPICodePack.ShellExtensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
@@ -248,7 +249,7 @@
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.6.2">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Microsoft .NET Framework 4.6.2 %28x86 e x64%29</ProductName>
|
||||
<ProductName>Microsoft .NET Framework 4.6.2 %28x86 and x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
|
||||
@@ -11,6 +11,7 @@ using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Management;
|
||||
using System.Security.Permissions;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
|
||||
@@ -25,14 +26,13 @@ namespace Active_Client
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#region MAIN_METHOD
|
||||
|
||||
[STAThread]
|
||||
[STAThread]
|
||||
[SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlAppDomain)]
|
||||
static void Main(string[] args)
|
||||
{
|
||||
//Crate General Exception Handler
|
||||
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(GeneralExMethod);
|
||||
|
||||
//Crate General Exception Handler
|
||||
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(GeneralExMethod);
|
||||
|
||||
|
||||
//Read App Configuration
|
||||
readConfiguration();
|
||||
@@ -170,8 +170,10 @@ namespace Active_Client
|
||||
e.CommandLine.AppendSwitch("--disable-pinch");
|
||||
e.CommandLine.AppendSwitch("--enable-media-stream");
|
||||
e.CommandLine.AppendSwitch("--enable-usermedia-screen-capture");
|
||||
e.CommandLine.AppendSwitch("--no-proxy-server");
|
||||
|
||||
e.CommandLine.AppendSwitch("--no-proxy-server");
|
||||
e.CommandLine.AppendSwitch("--ignore-certificate-errors-spki-list");
|
||||
e.CommandLine.AppendSwitch("--ignore-certificate-errors");
|
||||
e.CommandLine.AppendSwitch("--ignore-ssl-errors");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -31,5 +31,4 @@ using System.Runtime.InteropServices;
|
||||
// È possibile specificare tutti i valori oppure impostare valori predefiniti per i numeri relativi alla revisione e alla build
|
||||
// usando l'asterisco '*' come illustrato di seguito:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("0.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("0.1.0.0")]
|
||||
[assembly: AssemblyVersion("2.0.*")]
|
||||
|
||||
@@ -165,7 +165,7 @@ namespace Active_Client.View
|
||||
public void sendClose()
|
||||
{
|
||||
//Close Virtual Keyboard Runtime
|
||||
if (Config.ClientConfig.ShowVirtualKeyboard && Environment.OSVersion.Version.Major < 10)
|
||||
if (Config.ClientConfig.ShowVirtualKeyboard)
|
||||
NcWindow.closeVirtualKeyboard();
|
||||
|
||||
//Close the NC HMI && Stop Following Nc
|
||||
@@ -259,7 +259,7 @@ namespace Active_Client.View
|
||||
Browser.DisplayHandler.OnConsoleMessage += BrowserConsoleMessage;
|
||||
Browser.DownloadHandler.OnBeforeDownload += BeforeDownload;
|
||||
//Filter only < Win_10 Platform
|
||||
if (Config.ClientConfig.ShowVirtualKeyboard && Environment.OSVersion.Version.Major < 10)
|
||||
if (Config.ClientConfig.ShowVirtualKeyboard)
|
||||
ChromiumWebBrowser.RemoteProcessCreated += (e) => { e.RenderProcessHandler.OnFocusedNodeChanged += BrowserNodeChanged; };
|
||||
}
|
||||
|
||||
@@ -434,7 +434,7 @@ namespace Active_Client.View
|
||||
string dom = ev.Node.GetElementAttribute("type").ToLower();
|
||||
|
||||
//Filter if the node Type is TEXT or PASSWORD
|
||||
if (dom != null && (dom.Equals("text") || dom.Equals("password")))
|
||||
if (dom != null && (dom.Equals("text") || dom.Equals("password") || dom.Equals("")))
|
||||
NcWindow.openVirtualKeyboard(ev.Node.ElementBounds, ev.Browser.Identifier > 1, false);
|
||||
}
|
||||
//Filter if this node is TEXTAREA Node
|
||||
|
||||
@@ -1047,7 +1047,7 @@ namespace Active_Client.View
|
||||
if (!IsIconic(MainViewHandle))
|
||||
{
|
||||
//Show Virtual keyboard
|
||||
if (Config.ClientConfig.ShowVirtualKeyboard && Environment.OSVersion.Version.Major < 10)
|
||||
if (Config.ClientConfig.ShowVirtualKeyboard)
|
||||
reOpenVirtualKeyboard();
|
||||
}
|
||||
}
|
||||
@@ -1069,7 +1069,7 @@ namespace Active_Client.View
|
||||
//SetForegroundWindow(hwnd);
|
||||
|
||||
//Hide Virtual keyboard
|
||||
if (Config.ClientConfig.ShowVirtualKeyboard && Environment.OSVersion.Version.Major < 10 && KeyboardPID != 0 && ActualPID != KeyboardPID)
|
||||
if (Config.ClientConfig.ShowVirtualKeyboard && KeyboardPID != 0 && ActualPID != KeyboardPID)
|
||||
closeVirtualKeyboard();
|
||||
}
|
||||
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
<package id="MetroModernUI" version="1.4.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.WindowsAPICodePack-Core" version="1.1.0.2" targetFramework="net462" />
|
||||
<package id="Microsoft.WindowsAPICodePack-Shell" version="1.1.0.0" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json" version="12.0.1" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net462" />
|
||||
</packages>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
|
||||
</startup>
|
||||
</configuration>
|
||||
@@ -0,0 +1,615 @@
|
||||
using CefSharp;
|
||||
using Client.Config;
|
||||
using Client.Config.SubModels;
|
||||
using Client2020.BrowserTools.Models;
|
||||
using Client2020.BrowserTools.Models.Errors;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Client2020.BrowserTools
|
||||
{
|
||||
public class BrowserJSObject
|
||||
{
|
||||
private Form mainForm;
|
||||
private static readonly string[] _validExtensions = { ".json", ".rcp", ".tpl" };
|
||||
//private static readonly string[] _validExtensions = { "", ".txt", ".cnc", ".cn", ".cno", ".ini", ".mpf", ".spf", ".tap", ".anc", ".iso" };
|
||||
private static readonly string[] _validImages = { ".svg" };
|
||||
private static string jobPath = "";
|
||||
private static Dictionary<string, IntPtr> _editorOpened = new Dictionary<string, IntPtr>();
|
||||
public static string RECENT_FOLDER_KEY = "RECENT";
|
||||
private const string THERMO_RECIPE_PATH = @"C:\CMS\Recipes";
|
||||
private const string THERMO_SCREENSHOT_PATH = @"C:\CMS\Screenshots";
|
||||
private const string CMS_PATH = @"C:\CMS";
|
||||
|
||||
#region CONSTRUCTOR_METHOD
|
||||
public BrowserJSObject(Form f)
|
||||
{
|
||||
mainForm = f;
|
||||
|
||||
}
|
||||
|
||||
|
||||
#endregion CONSTRUCTOR_METHOD
|
||||
|
||||
#region FORM_BEHAVIOUR_METHODS
|
||||
public void minimizeForm()
|
||||
{
|
||||
//Invoke method if is needed or call the method in STD mode
|
||||
if (mainForm.InvokeRequired)
|
||||
mainForm.Invoke((MethodInvoker)delegate ()
|
||||
{
|
||||
mainForm.WindowState = FormWindowState.Minimized;
|
||||
});
|
||||
else
|
||||
{
|
||||
mainForm.WindowState = FormWindowState.Minimized;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Maximize Main Window
|
||||
public void maximizeForm()
|
||||
{
|
||||
//Invoke method if is needed or call the method in STD mode
|
||||
if (mainForm.InvokeRequired)
|
||||
mainForm.Invoke((MethodInvoker)delegate ()
|
||||
{
|
||||
mainForm.WindowState = FormWindowState.Maximized;
|
||||
});
|
||||
else
|
||||
{
|
||||
mainForm.WindowState = FormWindowState.Maximized;
|
||||
}
|
||||
}
|
||||
|
||||
// Close Main Window
|
||||
public void closeForm()
|
||||
{
|
||||
//If the mainform is disposed do nothing
|
||||
if (mainForm.IsDisposed)
|
||||
return;
|
||||
|
||||
//Invoke method if is needed or call the method in STD mode
|
||||
Application.Exit();
|
||||
}
|
||||
|
||||
public string takeScreenshot(string RecipeName)
|
||||
{
|
||||
|
||||
string path = THERMO_SCREENSHOT_PATH + "\\" + RecipeName;
|
||||
string pathFile = THERMO_SCREENSHOT_PATH + "\\" + RecipeName + "\\" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".jpg";
|
||||
try
|
||||
{
|
||||
if (!Directory.Exists(path))
|
||||
Directory.CreateDirectory(path);
|
||||
|
||||
Bitmap captureBitmap = new Bitmap(1920, 1080, PixelFormat.Format32bppArgb);
|
||||
Rectangle captureRectangle = Screen.AllScreens[0].Bounds;
|
||||
Graphics captureGraphics = Graphics.FromImage(captureBitmap);
|
||||
captureGraphics.CopyFromScreen(captureRectangle.Left, captureRectangle.Top, 0, 0, captureRectangle.Size);
|
||||
captureBitmap.Save(pathFile, ImageFormat.Jpeg);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return (JsonConvert.SerializeObject(new ErrorContainer("cannot_create_image")));
|
||||
}
|
||||
return (JsonConvert.SerializeObject(new ScreenshotController(pathFile))); ;
|
||||
|
||||
}
|
||||
|
||||
#endregion FORM_BEHAVIOUR_METHODS
|
||||
|
||||
#region NC_BEHAVIOUR_METHODS
|
||||
public void setNcWindowState(int val)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public int getNcWindowState()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public string getScreenBase64()
|
||||
{
|
||||
return "";
|
||||
}
|
||||
#endregion NC_BEHAVIOUR_METHODS
|
||||
|
||||
#region CHROMIUM_METHODS
|
||||
|
||||
// Get the Version of Chromium
|
||||
public string getChromiumVersion()
|
||||
{
|
||||
return Cef.ChromiumVersion + " (" + Application.ProductVersion + ")";
|
||||
}
|
||||
|
||||
#endregion CHROMIUM_METHODS
|
||||
|
||||
#region STEP_METHODS
|
||||
|
||||
// Get the ID of STEP Client
|
||||
public int getClientID()
|
||||
{
|
||||
return Config.ConnectionConfig.Id;
|
||||
}
|
||||
|
||||
public void forceStepFocus()
|
||||
{
|
||||
}
|
||||
|
||||
public void forceNcFocus()
|
||||
{
|
||||
}
|
||||
|
||||
public void forceProdFocus()
|
||||
{
|
||||
}
|
||||
|
||||
// Get the option of virtual Keyb configured
|
||||
public bool isVirtualKeybConfigured()
|
||||
{
|
||||
return Config.ClientConfig.ShowVirtualKeyboard;
|
||||
}
|
||||
|
||||
// Get the option of virtual Keyb configured
|
||||
public bool isHMIenabled()
|
||||
{
|
||||
return Config.VendorHmiConfig.Enabled;
|
||||
}
|
||||
|
||||
// Get the option of PROD Enabled
|
||||
public bool isPRODenabled()
|
||||
{
|
||||
return Config.ProdSoftwareConfig.Enabled;
|
||||
}
|
||||
|
||||
// Get the SCM option
|
||||
public bool isSCMVisualStyle()
|
||||
{
|
||||
return Config.ClientConfig.IsSCM;
|
||||
}
|
||||
|
||||
public string openExternalBrowser(string proc)
|
||||
{
|
||||
Process.Start(proc);
|
||||
return "";
|
||||
}
|
||||
#endregion STEP_METHODS
|
||||
|
||||
#region PROCESSES_METHODS
|
||||
|
||||
// Read all configured processes
|
||||
public string getConfiguredProcesses()
|
||||
{
|
||||
return JsonConvert.SerializeObject(Config.ExtSoftwaresConfig.Where(X => X.inMainMenuBar == false));
|
||||
}
|
||||
|
||||
// Read all configured processes in main menu
|
||||
public string getConfiguredProcessesInMainMenu()
|
||||
{
|
||||
return JsonConvert.SerializeObject(Config.ExtSoftwaresConfig.Where(X => X.inMainMenuBar == true));
|
||||
}
|
||||
|
||||
// Start a new process
|
||||
public void startNewProcess(string proc)
|
||||
{
|
||||
Thread t = new Thread(new ParameterizedThreadStart(OpenNew));
|
||||
t.Start(proc);
|
||||
}
|
||||
|
||||
// Open the last window or Start a new process
|
||||
public void openOrStartProcess(string proc)
|
||||
{
|
||||
Thread t = new Thread(new ParameterizedThreadStart(OpenStartNew));
|
||||
t.Start(proc);
|
||||
}
|
||||
|
||||
// Function used in Thread
|
||||
private void OpenStartNew(object id)
|
||||
{
|
||||
Software sft = Config.ExtSoftwaresConfig.FirstOrDefault(X => X.id == (string)id);
|
||||
|
||||
if (sft != null && File.Exists(sft.path))
|
||||
{
|
||||
Process[] p = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(sft.path)).OrderByDescending(X => X.StartTime).ToArray();
|
||||
|
||||
if (p.Count() > 0 && p[0].MainWindowHandle != IntPtr.Zero)
|
||||
NcWindow.ForceExtFocus(p[0].MainWindowHandle, 0, 0, 0, 0);
|
||||
else
|
||||
{
|
||||
ProcessStartInfo PS = new ProcessStartInfo(sft.path, sft.arguments);
|
||||
PS.WorkingDirectory = new FileInfo(sft.path).Directory.FullName;
|
||||
Process.Start(PS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Function used in Thread
|
||||
private void OpenNew(object id)
|
||||
{
|
||||
Software sft = Config.ExtSoftwaresConfig.FirstOrDefault(X => X.id == (string)id);
|
||||
if (sft != null)
|
||||
{
|
||||
ProcessStartInfo PS = new ProcessStartInfo(sft.path, sft.arguments);
|
||||
PS.WorkingDirectory = new FileInfo(sft.path).Directory.FullName;
|
||||
Process.Start(PS);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion PROCESSES_METHODS
|
||||
|
||||
#region FILESYSTEM_METHODS
|
||||
public string getOSdriveList()
|
||||
{
|
||||
List<Drive> drivelist = new List<Drive>();
|
||||
|
||||
if (Directory.Exists(THERMO_RECIPE_PATH))
|
||||
{
|
||||
drivelist.Add(new Drive()
|
||||
{
|
||||
Name = ElaborateName("Recipes", "", DriveType.Unknown),
|
||||
Path = THERMO_RECIPE_PATH + "\\",
|
||||
Type = "SPFO"
|
||||
});
|
||||
}
|
||||
|
||||
return JsonConvert.SerializeObject(drivelist);
|
||||
}
|
||||
|
||||
public string getOSextDriveList()
|
||||
{
|
||||
List<Drive> drivelist = new List<Drive>();
|
||||
|
||||
// USB & HD Drives
|
||||
foreach (var drive in DriveInfo.GetDrives())
|
||||
{
|
||||
if (drive.IsReady)
|
||||
{
|
||||
//Filter NC Address
|
||||
if (drive.DriveType != DriveType.Network && drive.DriveType == DriveType.Removable)
|
||||
{
|
||||
drivelist.Add(new Drive()
|
||||
{
|
||||
Name = ElaborateName(drive.VolumeLabel, drive.Name.TrimEnd('\\'), drive.DriveType),
|
||||
Path = drive.RootDirectory.ToString(),
|
||||
Type = ElaborateType(drive.DriveType)
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return JsonConvert.SerializeObject(drivelist);
|
||||
}
|
||||
public string backupRecipes(String p)
|
||||
{
|
||||
if (!Directory.Exists(p))
|
||||
{
|
||||
return (JsonConvert.SerializeObject(new ErrorContainer("path_not_exists")));
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
string finalPath = p + "Backup_Recipes_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss");
|
||||
Directory.CreateDirectory(finalPath);
|
||||
this.CopyFilesRecursively(new DirectoryInfo(THERMO_RECIPE_PATH),new DirectoryInfo(finalPath));
|
||||
Process.Start(finalPath);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
return (JsonConvert.SerializeObject(new ErrorContainer("error_during_backup")));
|
||||
}
|
||||
|
||||
return JsonConvert.SerializeObject("");
|
||||
}
|
||||
|
||||
// Read all files in directory
|
||||
public string getFileList(string p)
|
||||
{
|
||||
List<FileModel> filelist = new List<FileModel>();
|
||||
|
||||
|
||||
if (p != RECENT_FOLDER_KEY && !Directory.Exists(p))
|
||||
{
|
||||
return (JsonConvert.SerializeObject(new ErrorContainer("file_not_exists")));
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (p == RECENT_FOLDER_KEY)
|
||||
{
|
||||
filelist = new List<FileModel>();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Add directories
|
||||
foreach (string item in Directory.GetDirectories(p))
|
||||
{
|
||||
filelist.Add(new FileModel
|
||||
{
|
||||
Name = Path.GetFileName(item),
|
||||
AbsolutePath = Path.GetFullPath(item),
|
||||
Path = Path.GetFullPath(item),
|
||||
IsDirectory = true,
|
||||
FileExist = true,
|
||||
IsMain = false
|
||||
});
|
||||
}
|
||||
|
||||
// Add files
|
||||
foreach (string item in Directory.GetFiles(p))
|
||||
{
|
||||
if (_validExtensions.Contains(Path.GetExtension(item).ToLower()))
|
||||
{
|
||||
bool isJob = false;
|
||||
filelist.Add(new FileModel
|
||||
{
|
||||
Name = Path.GetFileName(item),
|
||||
AbsolutePath = Path.GetFullPath(item),
|
||||
Path = Path.GetFullPath(item),
|
||||
IsDirectory = false,
|
||||
IsJob = isJob,
|
||||
IsMain = false,
|
||||
FileExist = true
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
|
||||
return (JsonConvert.SerializeObject(filelist));
|
||||
}
|
||||
|
||||
// Read info of a file
|
||||
public string getProgramInfo(string p)
|
||||
{
|
||||
string imagePath, imageDirectory;
|
||||
|
||||
if (!File.Exists(p))
|
||||
{
|
||||
return (JsonConvert.SerializeObject(new InfoFile()));
|
||||
}
|
||||
|
||||
FileInfo f = new FileInfo(p);
|
||||
InfoFile file = new InfoFile
|
||||
{
|
||||
Name = f.Name,
|
||||
CreationDate = f.CreationTime,
|
||||
LastModDate = f.LastAccessTime,
|
||||
AbsolutePath = p,
|
||||
CanEdit = !f.IsReadOnly
|
||||
};
|
||||
|
||||
imagePath = Path.GetFileNameWithoutExtension(p);
|
||||
imageDirectory = Path.GetDirectoryName(p);
|
||||
|
||||
file.SheetX = "";
|
||||
file.SheetY = "";
|
||||
file.SheetZ = "";
|
||||
file.Annotation = "";
|
||||
|
||||
try
|
||||
{
|
||||
dynamic content = JsonConvert.DeserializeObject(File.ReadAllText(p));
|
||||
|
||||
if (content != null && content.RecipeParameters != null)
|
||||
{
|
||||
if (content.RecipeParameters.general_sizes_sheet_dim_x != null)
|
||||
file.SheetX = content.RecipeParameters.general_sizes_sheet_dim_x;
|
||||
if (content.RecipeParameters.general_sizes_sheet_dim_y != null)
|
||||
file.SheetY = content.RecipeParameters.general_sizes_sheet_dim_y;
|
||||
if (content.RecipeParameters.general_sizes_sheet_thickness != null)
|
||||
file.SheetZ = content.RecipeParameters.general_sizes_sheet_thickness;
|
||||
if (content.recipeNotes != null)
|
||||
file.Annotation = content.recipeNotes;
|
||||
}
|
||||
|
||||
foreach (string ext in _validImages)
|
||||
{
|
||||
if (File.Exists(imageDirectory + "/" + imagePath + ext))
|
||||
{
|
||||
if (ext.ToLower().Equals(".svg"))
|
||||
file.PreviewBase64 = File.ReadAllText(imageDirectory + "/" + imagePath + ext);
|
||||
else
|
||||
file.PreviewBase64 = "data:image/" + ext + ";base64," + Convert.ToBase64String(File.ReadAllBytes(imageDirectory + "/" + imagePath + ext));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
|
||||
return (JsonConvert.SerializeObject(file));
|
||||
}
|
||||
|
||||
|
||||
public string duplicateRecipe(string p1, string p2)
|
||||
{
|
||||
string oldFile = CMS_PATH + "\\" + p1 + ".rcp";
|
||||
string newFile = CMS_PATH + "\\" + p2 + ".rcp";
|
||||
string oldImage = CMS_PATH + "\\" + p1 + ".svg";
|
||||
string newImage = CMS_PATH + "\\" + p2 + ".svg";
|
||||
if (!File.Exists(oldFile))
|
||||
{
|
||||
return (JsonConvert.SerializeObject(new ErrorContainer("file_not_found")));
|
||||
}
|
||||
if (File.Exists(newFile))
|
||||
{
|
||||
return (JsonConvert.SerializeObject(new ErrorContainer("file_already_exists")));
|
||||
}
|
||||
try
|
||||
{
|
||||
File.Copy(oldFile, newFile, true);
|
||||
if (File.Exists(oldImage))
|
||||
{
|
||||
File.Copy(oldImage, newImage, true);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return(JsonConvert.SerializeObject(new ErrorContainer("cannot_copy_file")));
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public string getAllRecipeDirectories()
|
||||
{
|
||||
List<string> dirs = this.DirSearch(THERMO_RECIPE_PATH);
|
||||
for (int i = 0; i < dirs.Count; i++)
|
||||
{
|
||||
dirs[i] = dirs[i].Remove(0, CMS_PATH.Length + 1);
|
||||
}
|
||||
|
||||
return(JsonConvert.SerializeObject(dirs));
|
||||
}
|
||||
|
||||
public string deleteFile(string p)
|
||||
{
|
||||
FileAttributes attr = File.GetAttributes(p);
|
||||
if (!File.Exists(p) || attr.HasFlag(FileAttributes.Directory))
|
||||
{
|
||||
return (JsonConvert.SerializeObject(new ErrorContainer("file_not_found")));
|
||||
}
|
||||
if (attr.HasFlag(FileAttributes.ReadOnly))
|
||||
{
|
||||
return (JsonConvert.SerializeObject(new ErrorContainer("file_not_editable")));
|
||||
}
|
||||
try
|
||||
{
|
||||
File.Delete(p);
|
||||
string images = Path.ChangeExtension(p, "svg");
|
||||
if (File.Exists(images))
|
||||
{
|
||||
File.Delete(images);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return (JsonConvert.SerializeObject(new ErrorContainer("cannot_delete_file")));
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public string deleteFolder(string p)
|
||||
{
|
||||
|
||||
FileAttributes attr = File.GetAttributes(p);
|
||||
if (!Directory.Exists(p) || !attr.HasFlag(FileAttributes.Directory))
|
||||
{
|
||||
return (JsonConvert.SerializeObject(new ErrorContainer("directory_not_found")));
|
||||
}
|
||||
if (attr.HasFlag(FileAttributes.ReadOnly))
|
||||
{
|
||||
return (JsonConvert.SerializeObject(new ErrorContainer("directory_not_editable")));
|
||||
}
|
||||
try
|
||||
{
|
||||
Directory.Delete(p, true);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return (JsonConvert.SerializeObject(new ErrorContainer("cannot_delete_directory")));
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public string createFolder(string path)
|
||||
{
|
||||
if (Directory.Exists(path))
|
||||
{
|
||||
return (JsonConvert.SerializeObject(new ErrorContainer("directory_already_exists")));
|
||||
}
|
||||
try
|
||||
{
|
||||
Directory.CreateDirectory(path);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return (JsonConvert.SerializeObject(new ErrorContainer("cannot_delete_directory")));
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
// Private functions
|
||||
private string ElaborateType(DriveType type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case DriveType.Fixed: return "HD";
|
||||
case DriveType.Removable: return "USB";
|
||||
case DriveType.Network: return "NTW";
|
||||
}
|
||||
return "SPFO";
|
||||
}
|
||||
private string ElaborateName(string name, string letter, DriveType type)
|
||||
{
|
||||
var retName = "";
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(name))
|
||||
retName = name;
|
||||
else
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case DriveType.Fixed: retName = "Hard_Disk"; break;
|
||||
case DriveType.Removable: retName = "Usb_Disk"; break;
|
||||
case DriveType.Network: retName = "Netword_Disk"; break;
|
||||
default: retName = "Undefined"; break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(letter))
|
||||
retName = retName + " (" + letter + ")";
|
||||
|
||||
return retName;
|
||||
}
|
||||
|
||||
public void CopyFilesRecursively(DirectoryInfo source, DirectoryInfo target)
|
||||
{
|
||||
foreach (DirectoryInfo dir in source.GetDirectories())
|
||||
CopyFilesRecursively(dir, target.CreateSubdirectory(dir.Name));
|
||||
foreach (FileInfo file in source.GetFiles())
|
||||
file.CopyTo(Path.Combine(target.FullName, file.Name));
|
||||
}
|
||||
|
||||
private List<String> DirSearch(string sDir)
|
||||
{
|
||||
List<String> files = new List<String>();
|
||||
try
|
||||
{
|
||||
files.Add(sDir);
|
||||
foreach (string d in Directory.GetDirectories(sDir))
|
||||
{
|
||||
files.AddRange(DirSearch(d));
|
||||
}
|
||||
}
|
||||
catch (System.Exception excpt)
|
||||
{
|
||||
MessageBox.Show(excpt.Message);
|
||||
}
|
||||
|
||||
return files;
|
||||
}
|
||||
|
||||
public void cleanFileWatcher()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#endregion FILESYSTEM_METHODS
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
using System;
|
||||
|
||||
namespace Client2020.BrowserTools.Models
|
||||
{
|
||||
public class Drive
|
||||
{
|
||||
public String Name;
|
||||
public String Path;
|
||||
public String Type;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
using System;
|
||||
|
||||
namespace Client2020.BrowserTools.Models.Errors
|
||||
{
|
||||
public class ErrorContainer
|
||||
{
|
||||
public String error;
|
||||
|
||||
public ErrorContainer(String Err)
|
||||
{
|
||||
this.error = Err;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
namespace Client2020.BrowserTools.Models
|
||||
{
|
||||
public class FileModel
|
||||
{
|
||||
public string Name;
|
||||
public string AbsolutePath;
|
||||
public string Path;
|
||||
public bool IsDirectory;
|
||||
public bool IsJob;
|
||||
public bool IsMain;
|
||||
public bool FileExist;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Client2020.BrowserTools.Models
|
||||
{
|
||||
public class InfoFile
|
||||
{
|
||||
public String Name;
|
||||
public String AbsolutePath;
|
||||
public DateTime CreationDate;
|
||||
public DateTime LastModDate;
|
||||
public String SheetX;
|
||||
public String SheetY;
|
||||
public String SheetZ;
|
||||
public String Annotation;
|
||||
|
||||
public Boolean CanEdit;
|
||||
public string PreviewBase64;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
using Client2020.BrowserTools.Metadata;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Client2020.BrowserTools.Models
|
||||
{
|
||||
public class JobToStep
|
||||
{
|
||||
public string name;
|
||||
public DateTime lastEditTimestamp;
|
||||
public string isoMainProgram;
|
||||
public Metas metadata;
|
||||
public List<PPContainer> partPrograms;
|
||||
|
||||
public JobToStep()
|
||||
{
|
||||
metadata = new Metas();
|
||||
partPrograms = new List<PPContainer>();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Client2020.BrowserTools.Metadata
|
||||
{
|
||||
public class CustomParam
|
||||
{
|
||||
public string name;
|
||||
public string type;
|
||||
public List<string> selectionList;
|
||||
public int value;
|
||||
|
||||
public CustomParam()
|
||||
{
|
||||
selectionList = new List<string>();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Client2020.BrowserTools.Metadata
|
||||
{
|
||||
public class GenericsParam
|
||||
{
|
||||
public List<ImageParam> images;
|
||||
public string description;
|
||||
public TimeSpan executionTime;
|
||||
|
||||
public GenericsParam()
|
||||
{
|
||||
images = new List<ImageParam>();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace Client2020.BrowserTools.Metadata
|
||||
{
|
||||
public class ImageParam
|
||||
{
|
||||
public string name;
|
||||
public string base64;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Client2020.BrowserTools.Metadata
|
||||
{
|
||||
public class Metas
|
||||
{
|
||||
public GenericsParam generics;
|
||||
public List<int> tools;
|
||||
public List<CustomParam> customs;
|
||||
|
||||
public Metas()
|
||||
{
|
||||
generics = new GenericsParam();
|
||||
tools = new List<int>();
|
||||
customs = new List<CustomParam>();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
using System;
|
||||
|
||||
namespace Client2020.BrowserTools.Metadata
|
||||
{
|
||||
public class PPContainer
|
||||
{
|
||||
public String name;
|
||||
|
||||
public PPContainer(String name)
|
||||
{
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using Client2020.BrowserTools.Metadata;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Client2020.BrowserTools.Models
|
||||
{
|
||||
public class MetadataToFile
|
||||
{
|
||||
public string description;
|
||||
public TimeSpan executionTime;
|
||||
public List<int> tools;
|
||||
public List<CustomParam> customs;
|
||||
|
||||
public MetadataToFile()
|
||||
{
|
||||
tools = new List<int>();
|
||||
customs = new List<CustomParam>();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Client2020.BrowserTools.Models
|
||||
{
|
||||
class ScreenshotController
|
||||
{
|
||||
public String path;
|
||||
|
||||
public ScreenshotController(String path)
|
||||
{
|
||||
this.path = path;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
using CefSharp;
|
||||
|
||||
namespace Client2020
|
||||
{
|
||||
internal class CMSContextBrowser : IContextMenuHandler
|
||||
{
|
||||
public void OnBeforeContextMenu(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
|
||||
{
|
||||
//throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
public bool OnContextMenuCommand(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public void OnContextMenuDismissed(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame)
|
||||
{
|
||||
}
|
||||
|
||||
public bool RunContextMenu(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
using CefSharp;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Client2020
|
||||
{
|
||||
class CMSRenderBrowser : IRenderProcessMessageHandler
|
||||
{
|
||||
public void OnFocusedNodeChanged(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IDomNode node)
|
||||
{
|
||||
if (node != null)
|
||||
{
|
||||
string NodeName = node.TagName.ToLower();
|
||||
string dom = node["type"];
|
||||
|
||||
//Filter if this node is an INPUT Node
|
||||
if (NodeName != null && NodeName.Equals("input"))
|
||||
{
|
||||
//Filter if the node Type is TEXT or PASSWORD
|
||||
if (dom == null || (dom.ToLower().Equals("text") || dom.ToLower().Equals("password")))
|
||||
NcWindow.openVirtualKeyboard(true, false);
|
||||
}
|
||||
//Filter if this node is TEXTAREA Node
|
||||
else if (NodeName != null && NodeName.Equals("textarea"))
|
||||
NcWindow.openVirtualKeyboard(true, false);
|
||||
else
|
||||
NcWindow.closeVirtualKeyboard();
|
||||
}
|
||||
else
|
||||
NcWindow.closeVirtualKeyboard();
|
||||
|
||||
}
|
||||
|
||||
public void OnContextCreated(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame)
|
||||
{
|
||||
}
|
||||
|
||||
public void OnContextReleased(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public void OnUncaughtException(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, JavascriptException exception)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,193 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\packages\CefSharp.WinForms.84.4.10\build\CefSharp.WinForms.props" Condition="Exists('..\packages\CefSharp.WinForms.84.4.10\build\CefSharp.WinForms.props')" />
|
||||
<Import Project="..\packages\CefSharp.Common.84.4.10\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.84.4.10\build\CefSharp.Common.props')" />
|
||||
<Import Project="..\packages\cef.redist.x86.84.4.1\build\cef.redist.x86.props" Condition="Exists('..\packages\cef.redist.x86.84.4.1\build\cef.redist.x86.props')" />
|
||||
<Import Project="..\packages\cef.redist.x64.84.4.1\build\cef.redist.x64.props" Condition="Exists('..\packages\cef.redist.x64.84.4.1\build\cef.redist.x64.props')" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{0780047F-12E4-4FCC-9748-6B23F0FD3711}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>Client2020</RootNamespace>
|
||||
<AssemblyName>Active_Client</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<Deterministic>true</Deterministic>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\Thermo.Active\bin\Client_Debug\x64\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<StartupObject>Client2020.Program</StartupObject>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
||||
<OutputPath>..\Thermo.Active\bin\Client\x64\</OutputPath>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup />
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>Resources\ACTIVE_ICONA.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
||||
<OutputPath>..\Thermo.Active\bin\Client_Debug\x64\</OutputPath>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Management.Instrumentation" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="BrowserTools\BrowserJSObject.cs" />
|
||||
<Compile Include="BrowserTools\Models\Drive.cs" />
|
||||
<Compile Include="BrowserTools\Models\Errors\ErrorContainer.cs" />
|
||||
<Compile Include="BrowserTools\Models\File.cs" />
|
||||
<Compile Include="BrowserTools\Models\InfoFile.cs" />
|
||||
<Compile Include="BrowserTools\Models\JobToStep.cs" />
|
||||
<Compile Include="BrowserTools\Models\MetadataToFile.cs" />
|
||||
<Compile Include="BrowserTools\Models\Metadata\CustomParam.cs" />
|
||||
<Compile Include="BrowserTools\Models\Metadata\GenericsParam.cs" />
|
||||
<Compile Include="BrowserTools\Models\Metadata\ImageParam.cs" />
|
||||
<Compile Include="BrowserTools\Models\Metadata\Metas.cs" />
|
||||
<Compile Include="BrowserTools\Models\Metadata\PPContainer.cs" />
|
||||
<Compile Include="BrowserTools\Models\ScreenshotController.cs" />
|
||||
<Compile Include="CMSContextBrowser.cs" />
|
||||
<Compile Include="CMSRenderBrowser.cs" />
|
||||
<Compile Include="LoadingForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LoadingForm.Designer.cs">
|
||||
<DependentUpon>LoadingForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="MainForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MainForm.Designer.cs">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="NcWindow.cs" />
|
||||
<Compile Include="OpeningForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="OpeningForm.Designer.cs">
|
||||
<DependentUpon>OpeningForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="LoadingForm.resx">
|
||||
<DependentUpon>LoadingForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="MainForm.resx">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="OpeningForm.resx">
|
||||
<DependentUpon>OpeningForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="app.manifest" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Client.Config\Client.Config.csproj">
|
||||
<Project>{205a6ade-fb5a-45cb-9c51-9817e7bb8939}</Project>
|
||||
<Name>Client.Config</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Client.Utils\Client.Utils.csproj">
|
||||
<Project>{34434b22-d546-4a5c-b575-49720c77643a}</Project>
|
||||
<Name>Client.Utils</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\ACTIVE_ICONA.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\ACTIVE_ICONA.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\CM_ACTIVE_LOGO.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\CM_ACTIVE_LOGO_INVERTED.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\CMS_LOGO.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\MAESTRO_ACTIVE_LOGO.jpg" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\SCM_MAESTRO_ACTIVE_ICONA.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\SinumerikHmi.ico" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\cef.redist.x64.84.4.1\build\cef.redist.x64.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x64.84.4.1\build\cef.redist.x64.props'))" />
|
||||
<Error Condition="!Exists('..\packages\cef.redist.x86.84.4.1\build\cef.redist.x86.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x86.84.4.1\build\cef.redist.x86.props'))" />
|
||||
<Error Condition="!Exists('..\packages\CefSharp.Common.84.4.10\build\CefSharp.Common.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.84.4.10\build\CefSharp.Common.props'))" />
|
||||
<Error Condition="!Exists('..\packages\CefSharp.Common.84.4.10\build\CefSharp.Common.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.84.4.10\build\CefSharp.Common.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\CefSharp.WinForms.84.4.10\build\CefSharp.WinForms.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.WinForms.84.4.10\build\CefSharp.WinForms.props'))" />
|
||||
<Error Condition="!Exists('..\packages\CefSharp.WinForms.84.4.10\build\CefSharp.WinForms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.WinForms.84.4.10\build\CefSharp.WinForms.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\CefSharp.Common.84.4.10\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.84.4.10\build\CefSharp.Common.targets')" />
|
||||
<Import Project="..\packages\CefSharp.WinForms.84.4.10\build\CefSharp.WinForms.targets" Condition="Exists('..\packages\CefSharp.WinForms.84.4.10\build\CefSharp.WinForms.targets')" />
|
||||
</Project>
|
||||
@@ -0,0 +1,158 @@
|
||||
namespace Client2020
|
||||
{
|
||||
partial class LoadingForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LoadingForm));
|
||||
this.StatusLBL = new System.Windows.Forms.Label();
|
||||
this.ErrorLBL = new System.Windows.Forms.Label();
|
||||
this.CloseLabel = new System.Windows.Forms.Label();
|
||||
this.LogoSCM = new System.Windows.Forms.PictureBox();
|
||||
this.VersionLBL = new System.Windows.Forms.Label();
|
||||
this.LogoCMS = new System.Windows.Forms.PictureBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.LogoSCM)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.LogoCMS)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// StatusLBL
|
||||
//
|
||||
this.StatusLBL.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.StatusLBL.BackColor = System.Drawing.Color.White;
|
||||
this.StatusLBL.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.749999F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.StatusLBL.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(75)))), ((int)(((byte)(75)))), ((int)(((byte)(75)))));
|
||||
this.StatusLBL.Location = new System.Drawing.Point(0, 384);
|
||||
this.StatusLBL.Name = "StatusLBL";
|
||||
this.StatusLBL.Size = new System.Drawing.Size(502, 34);
|
||||
this.StatusLBL.TabIndex = 5;
|
||||
this.StatusLBL.Text = "...";
|
||||
this.StatusLBL.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// ErrorLBL
|
||||
//
|
||||
this.ErrorLBL.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ErrorLBL.BackColor = System.Drawing.Color.White;
|
||||
this.ErrorLBL.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.749999F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.ErrorLBL.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
|
||||
this.ErrorLBL.Location = new System.Drawing.Point(501, 384);
|
||||
this.ErrorLBL.Name = "ErrorLBL";
|
||||
this.ErrorLBL.Size = new System.Drawing.Size(468, 34);
|
||||
this.ErrorLBL.TabIndex = 7;
|
||||
this.ErrorLBL.Text = "...";
|
||||
this.ErrorLBL.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// CloseLabel
|
||||
//
|
||||
this.CloseLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.CloseLabel.BackColor = System.Drawing.Color.White;
|
||||
this.CloseLabel.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.CloseLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.CloseLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(15)))), ((int)(((byte)(43)))), ((int)(((byte)(91)))));
|
||||
this.CloseLabel.Location = new System.Drawing.Point(922, 0);
|
||||
this.CloseLabel.Margin = new System.Windows.Forms.Padding(3, 0, 2, 0);
|
||||
this.CloseLabel.Name = "CloseLabel";
|
||||
this.CloseLabel.Padding = new System.Windows.Forms.Padding(0, 0, 5, 0);
|
||||
this.CloseLabel.Size = new System.Drawing.Size(47, 31);
|
||||
this.CloseLabel.TabIndex = 3;
|
||||
this.CloseLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// LogoSCM
|
||||
//
|
||||
this.LogoSCM.BackColor = System.Drawing.Color.White;
|
||||
this.LogoSCM.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||
this.LogoSCM.Image = global::Client2020.Properties.Resources.MAESTRO_ACTIVE_LOGO;
|
||||
this.LogoSCM.Location = new System.Drawing.Point(0, 0);
|
||||
this.LogoSCM.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.LogoSCM.Name = "LogoSCM";
|
||||
this.LogoSCM.Size = new System.Drawing.Size(969, 400);
|
||||
this.LogoSCM.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.LogoSCM.TabIndex = 8;
|
||||
this.LogoSCM.TabStop = false;
|
||||
this.LogoSCM.Visible = false;
|
||||
//
|
||||
// VersionLBL
|
||||
//
|
||||
this.VersionLBL.BackColor = System.Drawing.Color.White;
|
||||
this.VersionLBL.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Bold);
|
||||
this.VersionLBL.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(75)))), ((int)(((byte)(75)))), ((int)(((byte)(75)))));
|
||||
this.VersionLBL.Location = new System.Drawing.Point(0, 0);
|
||||
this.VersionLBL.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.VersionLBL.Name = "VersionLBL";
|
||||
this.VersionLBL.Size = new System.Drawing.Size(929, 31);
|
||||
this.VersionLBL.TabIndex = 0;
|
||||
this.VersionLBL.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// LogoCMS
|
||||
//
|
||||
this.LogoCMS.BackColor = System.Drawing.Color.White;
|
||||
this.LogoCMS.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||
this.LogoCMS.Image = global::Client2020.Properties.Resources.CM_ACTIVE_LOGO_INVERTED;
|
||||
this.LogoCMS.Location = new System.Drawing.Point(0, 31);
|
||||
this.LogoCMS.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.LogoCMS.Name = "LogoCMS";
|
||||
this.LogoCMS.Size = new System.Drawing.Size(969, 369);
|
||||
this.LogoCMS.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.LogoCMS.TabIndex = 6;
|
||||
this.LogoCMS.TabStop = false;
|
||||
this.LogoCMS.Visible = false;
|
||||
//
|
||||
// LoadingForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(969, 418);
|
||||
this.ControlBox = false;
|
||||
this.Controls.Add(this.StatusLBL);
|
||||
this.Controls.Add(this.VersionLBL);
|
||||
this.Controls.Add(this.CloseLabel);
|
||||
this.Controls.Add(this.ErrorLBL);
|
||||
this.Controls.Add(this.LogoCMS);
|
||||
this.Controls.Add(this.LogoSCM);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "LoadingForm";
|
||||
this.Padding = new System.Windows.Forms.Padding(0, 60, 0, 0);
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
|
||||
this.Text = "Loading Active Client";
|
||||
this.TopMost = true;
|
||||
((System.ComponentModel.ISupportInitialize)(this.LogoSCM)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.LogoCMS)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.Label StatusLBL;
|
||||
private System.Windows.Forms.Label ErrorLBL;
|
||||
private System.Windows.Forms.Label CloseLabel;
|
||||
private System.Windows.Forms.PictureBox LogoSCM;
|
||||
private System.Windows.Forms.Label VersionLBL;
|
||||
private System.Windows.Forms.PictureBox LogoCMS;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
using Client.Config;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Client2020
|
||||
{
|
||||
public partial class LoadingForm : Form
|
||||
{
|
||||
|
||||
//Constructor
|
||||
public LoadingForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
if (Config.ClientConfig.IsSCM)
|
||||
{
|
||||
LogoCMS.Visible = false;
|
||||
LogoSCM.Visible = true;
|
||||
this.Icon = Client2020.Properties.Resources.MAESTRO_ACTIVE_ICON;
|
||||
}
|
||||
else
|
||||
{
|
||||
LogoCMS.Visible = true;
|
||||
LogoSCM.Visible = false;
|
||||
}
|
||||
|
||||
//Set window Position
|
||||
this.Location = new Point((Screen.PrimaryScreen.Bounds.Width / 2) - (this.Width / 2), (Screen.PrimaryScreen.Bounds.Height / 2) - (this.Height / 2));
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Show & Set the status
|
||||
public void Show(String status)
|
||||
{
|
||||
this.Show();
|
||||
|
||||
//Invoke method if is needed or call the method in STD mode
|
||||
if (this.InvokeRequired)
|
||||
{
|
||||
this.Invoke((MethodInvoker)delegate () { StatusLBL.Text = status; });
|
||||
}
|
||||
else
|
||||
{
|
||||
StatusLBL.Text = status;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
namespace Client2020
|
||||
{
|
||||
partial class MainForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1920, 1080);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "MainForm";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Active Client 2.0";
|
||||
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
using CefSharp;
|
||||
using CefSharp.WinForms;
|
||||
using Client.Config;
|
||||
using Client.Utils;
|
||||
using Client2020.BrowserTools;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Client2020
|
||||
{
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
ChromiumWebBrowser browser;
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
//Setup the Icon
|
||||
if (Config.ClientConfig.IsSCM)
|
||||
this.Icon = Properties.Resources.MAESTRO_ACTIVE_ICON;
|
||||
|
||||
//Start the browser
|
||||
browser = new ChromiumWebBrowser(Config.ConnectionConfig.StartingUrl);
|
||||
this.Controls.Add(browser);
|
||||
|
||||
//Setup the Object Custom
|
||||
browser.JavascriptObjectRepository.Register(Constants.BROWSER_JS_OBJ_NAME, new BrowserJSObject(this), isAsync: false, options: BindingOptions.DefaultBinder);
|
||||
|
||||
//Setup the Handlers
|
||||
browser.RenderProcessMessageHandler = new CMSRenderBrowser();
|
||||
browser.MenuHandler = new CMSContextBrowser();
|
||||
|
||||
//Setu the NC behaviour
|
||||
NcWindow.mainFrm = this;
|
||||
NcWindow.StartStepFollowing(this.Handle);
|
||||
}
|
||||
|
||||
|
||||
public void keyPressedHandler(bool altPressed, bool ctrlPressed, bool shiftPressed, int key)
|
||||
{
|
||||
//Work only if is a Developer mode
|
||||
if (Config.ClientConfig.DeveloperMode && altPressed)
|
||||
{
|
||||
if (key == (int)Keys.F5)
|
||||
{
|
||||
browser.Reload(true);
|
||||
}
|
||||
|
||||
if (key == (int)Keys.F12)
|
||||
{
|
||||
WindowInfo wi = new WindowInfo();
|
||||
wi.SetAsPopup(this.Handle, "DevTools");
|
||||
browser.ShowDevTools(wi);
|
||||
}
|
||||
|
||||
//wi.SetAsChild(this.Handle);
|
||||
|
||||
if (key == (int)Keys.F10)
|
||||
ShowPopup("chrome://gpu/");
|
||||
|
||||
if (key == (int)Keys.F11)
|
||||
ShowPopup("chrome://version/");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//Show Chrome Window
|
||||
private void ShowPopup(string url)
|
||||
{
|
||||
int w = 1600, h = 800;
|
||||
|
||||
Form frm = new Form();
|
||||
frm.Controls.Add(new ChromiumWebBrowser(url));
|
||||
frm.Height = h;
|
||||
frm.Width = w;
|
||||
frm.StartPosition = FormStartPosition.CenterScreen;
|
||||
frm.ShowDialog();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,162 @@
|
||||
namespace Client2020
|
||||
{
|
||||
partial class OpeningForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OpeningForm));
|
||||
this.StatusLBL = new System.Windows.Forms.Label();
|
||||
this.ErrorLBL = new System.Windows.Forms.Label();
|
||||
this.LogoCMS = new System.Windows.Forms.PictureBox();
|
||||
this.CloseLabel = new System.Windows.Forms.Label();
|
||||
this.LogoSCM = new System.Windows.Forms.PictureBox();
|
||||
this.VersionLBL = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.LogoCMS)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.LogoSCM)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// StatusLBL
|
||||
//
|
||||
this.StatusLBL.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.StatusLBL.BackColor = System.Drawing.Color.White;
|
||||
this.StatusLBL.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.749999F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.StatusLBL.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(75)))), ((int)(((byte)(75)))), ((int)(((byte)(75)))));
|
||||
this.StatusLBL.Location = new System.Drawing.Point(0, 384);
|
||||
this.StatusLBL.Name = "StatusLBL";
|
||||
this.StatusLBL.Size = new System.Drawing.Size(502, 34);
|
||||
this.StatusLBL.TabIndex = 5;
|
||||
this.StatusLBL.Text = "...";
|
||||
this.StatusLBL.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// ErrorLBL
|
||||
//
|
||||
this.ErrorLBL.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ErrorLBL.BackColor = System.Drawing.Color.White;
|
||||
this.ErrorLBL.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.749999F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.ErrorLBL.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
|
||||
this.ErrorLBL.Location = new System.Drawing.Point(501, 384);
|
||||
this.ErrorLBL.Name = "ErrorLBL";
|
||||
this.ErrorLBL.Size = new System.Drawing.Size(468, 34);
|
||||
this.ErrorLBL.TabIndex = 7;
|
||||
this.ErrorLBL.Text = "...";
|
||||
this.ErrorLBL.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// LogoCMS
|
||||
//
|
||||
this.LogoCMS.BackColor = System.Drawing.Color.White;
|
||||
this.LogoCMS.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||
this.LogoCMS.Image = global::Client2020.Properties.Resources.CM_ACTIVE_LOGO_INVERTED;
|
||||
this.LogoCMS.Location = new System.Drawing.Point(0, 31);
|
||||
this.LogoCMS.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.LogoCMS.Name = "LogoCMS";
|
||||
this.LogoCMS.Size = new System.Drawing.Size(969, 369);
|
||||
this.LogoCMS.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.LogoCMS.TabIndex = 6;
|
||||
this.LogoCMS.TabStop = false;
|
||||
this.LogoCMS.Visible = false;
|
||||
//
|
||||
// CloseLabel
|
||||
//
|
||||
this.CloseLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.CloseLabel.BackColor = System.Drawing.Color.White;
|
||||
this.CloseLabel.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.CloseLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.CloseLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(15)))), ((int)(((byte)(43)))), ((int)(((byte)(91)))));
|
||||
this.CloseLabel.Location = new System.Drawing.Point(922, 0);
|
||||
this.CloseLabel.Margin = new System.Windows.Forms.Padding(3, 0, 2, 0);
|
||||
this.CloseLabel.Name = "CloseLabel";
|
||||
this.CloseLabel.Padding = new System.Windows.Forms.Padding(0, 0, 5, 0);
|
||||
this.CloseLabel.Size = new System.Drawing.Size(47, 31);
|
||||
this.CloseLabel.TabIndex = 3;
|
||||
this.CloseLabel.Text = "X";
|
||||
this.CloseLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
this.CloseLabel.Click += new System.EventHandler(this.CloseLabel_Click);
|
||||
this.CloseLabel.MouseClick += new System.Windows.Forms.MouseEventHandler(this.CloseLabel_MouseClick);
|
||||
//
|
||||
// LogoSCM
|
||||
//
|
||||
this.LogoSCM.BackColor = System.Drawing.Color.White;
|
||||
this.LogoSCM.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||
this.LogoSCM.Image = global::Client2020.Properties.Resources.MAESTRO_ACTIVE_LOGO;
|
||||
this.LogoSCM.Location = new System.Drawing.Point(0, 0);
|
||||
this.LogoSCM.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.LogoSCM.Name = "LogoSCM";
|
||||
this.LogoSCM.Size = new System.Drawing.Size(969, 400);
|
||||
this.LogoSCM.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.LogoSCM.TabIndex = 8;
|
||||
this.LogoSCM.TabStop = false;
|
||||
this.LogoSCM.Visible = false;
|
||||
//
|
||||
// VersionLBL
|
||||
//
|
||||
this.VersionLBL.BackColor = System.Drawing.Color.White;
|
||||
this.VersionLBL.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Bold);
|
||||
this.VersionLBL.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(75)))), ((int)(((byte)(75)))), ((int)(((byte)(75)))));
|
||||
this.VersionLBL.Location = new System.Drawing.Point(0, 0);
|
||||
this.VersionLBL.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.VersionLBL.Name = "VersionLBL";
|
||||
this.VersionLBL.Size = new System.Drawing.Size(929, 31);
|
||||
this.VersionLBL.TabIndex = 0;
|
||||
this.VersionLBL.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// OpeningForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(969, 418);
|
||||
this.ControlBox = false;
|
||||
this.Controls.Add(this.StatusLBL);
|
||||
this.Controls.Add(this.VersionLBL);
|
||||
this.Controls.Add(this.CloseLabel);
|
||||
this.Controls.Add(this.ErrorLBL);
|
||||
this.Controls.Add(this.LogoCMS);
|
||||
this.Controls.Add(this.LogoSCM);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "OpeningForm";
|
||||
this.Padding = new System.Windows.Forms.Padding(0, 60, 0, 0);
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
|
||||
this.Text = "Loading Active Client";
|
||||
this.TopMost = true;
|
||||
this.Load += new System.EventHandler(this.LoadingForm_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.LogoCMS)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.LogoSCM)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.Label StatusLBL;
|
||||
private System.Windows.Forms.Label ErrorLBL;
|
||||
private System.Windows.Forms.PictureBox LogoCMS;
|
||||
private System.Windows.Forms.Label CloseLabel;
|
||||
private System.Windows.Forms.PictureBox LogoSCM;
|
||||
private System.Windows.Forms.Label VersionLBL;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,347 @@
|
||||
using Client.Config;
|
||||
using Client.Config.SubModels;
|
||||
using Client.Utils;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Client2020
|
||||
{
|
||||
public partial class OpeningForm : Form
|
||||
{
|
||||
public const int TimerTest = 500;
|
||||
private HttpWebRequest ConnTestRequest;
|
||||
private HttpWebResponse ConnTestResponse;
|
||||
private String ConnTestError;
|
||||
private Task ConnTask;
|
||||
private ushort WaitDot = 1;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#region WINDOW_START_&_BEHAVIOUR_METHOD
|
||||
|
||||
//Constructor
|
||||
public OpeningForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
if (Config.ClientConfig.IsSCM)
|
||||
{
|
||||
LogoCMS.Visible = false;
|
||||
LogoSCM.Visible = true;
|
||||
this.Icon = Client2020.Properties.Resources.MAESTRO_ACTIVE_ICON;
|
||||
}
|
||||
else
|
||||
{
|
||||
LogoCMS.Visible = true;
|
||||
LogoSCM.Visible = false;
|
||||
}
|
||||
|
||||
//Set window Position
|
||||
this.Location = new Point((Screen.PrimaryScreen.Bounds.Width / 2) - (this.Width / 2), (Screen.PrimaryScreen.Bounds.Height / 2) - (this.Height / 2));
|
||||
}
|
||||
|
||||
|
||||
|
||||
//OnLoad Method
|
||||
private void LoadingForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
//Force on Desktop 1
|
||||
this.DesktopLocation = new Point((Screen.PrimaryScreen.Bounds.Width / 2) - (this.Width / 2), (Screen.PrimaryScreen.Bounds.Height / 2) - (this.Height / 2));
|
||||
|
||||
//Start Backgroud Task
|
||||
ConnTask = Task.Run(() => BagroundWorker());
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Set the status & Messages Labels
|
||||
private void setStatus(String status, String Error)
|
||||
{
|
||||
//Invoke method if is needed or call the method in STD mode
|
||||
if (this.InvokeRequired)
|
||||
{
|
||||
this.Invoke((MethodInvoker)delegate () { StatusLBL.Text = status; });
|
||||
this.Invoke((MethodInvoker)delegate () { ErrorLBL.Text = Error; });
|
||||
}
|
||||
else
|
||||
{
|
||||
StatusLBL.Text = status;
|
||||
ErrorLBL.Text = Error;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Set Opacity of the Window
|
||||
private void setOpacity(double opacity)
|
||||
{
|
||||
//Invoke method if is needed or call the method in STD mode
|
||||
if (this.InvokeRequired)
|
||||
{
|
||||
this.Invoke((MethodInvoker)delegate () { this.Opacity = opacity; });
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Opacity = opacity;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Close the Window
|
||||
private void closeWindow()
|
||||
{
|
||||
//Invoke method if is needed or call the method in STD mode
|
||||
if (this.InvokeRequired)
|
||||
this.Invoke((MethodInvoker)delegate () { this.Close(); });
|
||||
else
|
||||
this.Close();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#region CONNECTING_TASK_METHOD
|
||||
|
||||
//Main Void of the background Task
|
||||
private void BagroundWorker()
|
||||
{
|
||||
//Set App Opacity
|
||||
setOpacity(1);
|
||||
|
||||
//Show the loading state on the app ICON
|
||||
|
||||
//try to Request
|
||||
if (!Config.ConnectionConfig.BypassReadConfiguration)
|
||||
{
|
||||
setStatus("Connecting to " + Config.ConnectionConfig.ServerUrl + ":" + Config.ConnectionConfig.ServerPort, "");
|
||||
|
||||
Boolean error = false;
|
||||
do
|
||||
{
|
||||
if (error == true)
|
||||
return;
|
||||
} while (!testConnection(new Uri(Config.ConnectionConfig.ReadConfigUrl), out error));
|
||||
|
||||
}
|
||||
|
||||
//Set App Opacity (Only Siemens)
|
||||
if (Config.VendorHmiConfig.Type == 2)
|
||||
setOpacity(0.85);
|
||||
|
||||
//Open Nc Window
|
||||
setStatus("Opening NC Window... ", "");
|
||||
|
||||
if (Config.VendorHmiConfig.Enabled)
|
||||
if (!OpenNcWindow())
|
||||
return;
|
||||
|
||||
//Open Nc Window
|
||||
setStatus("Opening PROD Window... ", "");
|
||||
|
||||
if (Config.ProdSoftwareConfig.Enabled)
|
||||
{
|
||||
var exename = Path.GetFileNameWithoutExtension(Config.ProdSoftwareConfig.Path);
|
||||
if (!OpenProdWindow(Config.ProdSoftwareConfig.Path, exename))
|
||||
return;
|
||||
}
|
||||
|
||||
//Set App Opacity
|
||||
setOpacity(1);
|
||||
|
||||
//Close the Window
|
||||
closeWindow();
|
||||
}
|
||||
|
||||
|
||||
//Sub-Method used to test the connection
|
||||
private bool testConnection(Uri url, out Boolean error)
|
||||
{
|
||||
Boolean Connected = false;
|
||||
error = false;
|
||||
|
||||
//Try to connect
|
||||
if (url.Scheme == Uri.UriSchemeHttps || url.Scheme == Uri.UriSchemeHttp)
|
||||
{
|
||||
try
|
||||
{
|
||||
ConnTestRequest = (HttpWebRequest)WebRequest.Create(url);
|
||||
ConnTestRequest.Timeout = (int)(TimerTest);
|
||||
ConnTestRequest.KeepAlive = false;
|
||||
ConnTestResponse = (HttpWebResponse)ConnTestRequest.GetResponse();
|
||||
ConnTestError = ConnTestResponse.StatusCode.ToString();
|
||||
Connected = (ConnTestResponse.StatusCode == HttpStatusCode.OK) ? true : false;
|
||||
}
|
||||
catch (WebException ex)
|
||||
{
|
||||
Connected = false;
|
||||
ConnTestError = ex.Status.ToString();
|
||||
}
|
||||
}
|
||||
else
|
||||
Connected = true;
|
||||
|
||||
|
||||
//Check if it's connected
|
||||
if (Connected)
|
||||
{
|
||||
// var jsonDefinition = new { ncVendor = "", showHMI = "", ncIp = "", ncPort = "", prodEnabled = "", prodPath = "", extPrograms = "" };
|
||||
|
||||
var jsonDefinition = new ServerConfigModel();
|
||||
setStatus("Connected!", "");
|
||||
|
||||
//Read the configuration from Server
|
||||
try
|
||||
{
|
||||
using (var reader = new StreamReader(ConnTestResponse.GetResponseStream()))
|
||||
{
|
||||
var ConfigResponse = JsonConvert.DeserializeAnonymousType(reader.ReadToEnd(), jsonDefinition);
|
||||
|
||||
if (!String.IsNullOrWhiteSpace(ConfigResponse.NcVendor) && !String.IsNullOrWhiteSpace(ConfigResponse.ShowHMI))
|
||||
{
|
||||
string ncVendorName = ConfigResponse.NcVendor.ToUpper();
|
||||
string ncVendorHMI = ConfigResponse.ShowHMI.ToUpper();
|
||||
Config.VendorHmiConfig.IpAddress = ConfigResponse.NcIp.ToUpper();
|
||||
Config.VendorHmiConfig.Port = ConfigResponse.NcPort.ToUpper();
|
||||
string ProdEnabled = ConfigResponse.ProdEnabled.ToUpper();
|
||||
string ProdPath = ConfigResponse.ProdPath.ToUpper();
|
||||
string Autorun = ConfigResponse.Autorun.ToUpper();
|
||||
|
||||
|
||||
//Read the Server Type
|
||||
if (ncVendorName.Equals("DEMO"))
|
||||
Config.VendorHmiConfig.Type = 0;
|
||||
else if (ncVendorName.Equals("FANUC"))
|
||||
Config.VendorHmiConfig.Type = 1;
|
||||
else if (ncVendorName.Equals("SIEMENS"))
|
||||
Config.VendorHmiConfig.Type = 2;
|
||||
else if (ncVendorName.Equals("OSAI"))
|
||||
Config.VendorHmiConfig.Type = 3;
|
||||
else if (ncVendorName.Equals("S7NET"))
|
||||
Config.VendorHmiConfig.Type = 4;
|
||||
else
|
||||
{
|
||||
setStatus("Close the application!", "Errror in configuration, from server");
|
||||
error = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
//Read if the HMI must be visible
|
||||
if (ncVendorHMI.ToUpper().Equals("TRUE"))
|
||||
Config.VendorHmiConfig.Enabled = true;
|
||||
else
|
||||
Config.VendorHmiConfig.Enabled = false;
|
||||
|
||||
//Autorun
|
||||
if (Autorun.ToUpper().Equals("TRUE"))
|
||||
Config.ClientConfig.Autorun = true;
|
||||
else
|
||||
Config.ClientConfig.Autorun = false;
|
||||
|
||||
|
||||
//Read if the HMI must be visible
|
||||
if (ProdEnabled.ToUpper().Equals("TRUE"))
|
||||
Config.ProdSoftwareConfig.Enabled = true;
|
||||
else
|
||||
Config.ProdSoftwareConfig.Enabled = false;
|
||||
|
||||
// Paths
|
||||
Config.ProdSoftwareConfig.Path = ProdPath;
|
||||
Config.TextEditorPath = ConfigResponse.EditorPath;
|
||||
|
||||
if (ConfigResponse.ExtSoftwares != null)
|
||||
Config.ExtSoftwaresConfig = ConfigResponse.ExtSoftwares.ToArray();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
setStatus("Error!", "Error While loading the configuration");
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
//Set the Dot string
|
||||
String dot = "";
|
||||
for (int i = 0; i < WaitDot; i++) dot += ".";
|
||||
|
||||
//Set the status
|
||||
setStatus("Retry connection to " + Config.ConnectionConfig.ServerUrl + ":" + Config.ConnectionConfig.ServerPort + " " + dot, "Server not found (Error: " + ConnTestError + ")");
|
||||
if (WaitDot < 3)
|
||||
WaitDot++;
|
||||
else
|
||||
WaitDot = 0;
|
||||
|
||||
//Wait 500 ms
|
||||
Thread.Sleep(500);
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Sub-Method used to open the NC Window
|
||||
private bool OpenNcWindow()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//Sub-Method used to open the NC Window
|
||||
private bool OpenProdWindow(string ExePath, string ExeName)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#region CLOSE_BUTTON_BEHAVIUR
|
||||
|
||||
//On click Method
|
||||
private void CloseLabel_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
//Exit
|
||||
Environment.Exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//On Mouse Enter
|
||||
private void CloseLabel_MouseEnter(object sender, EventArgs e)
|
||||
{
|
||||
CloseLabel.ForeColor = Color.DarkRed;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//On Mouse Leave
|
||||
private void CloseLabel_MouseLeave(object sender, EventArgs e)
|
||||
{
|
||||
CloseLabel.ForeColor = Color.White;
|
||||
}
|
||||
#endregion
|
||||
|
||||
private void CloseLabel_MouseClick(object sender, EventArgs e)
|
||||
{
|
||||
Environment.Exit(0);
|
||||
}
|
||||
|
||||
private void CloseLabel_MouseClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,182 @@
|
||||
using Client.Config;
|
||||
using Client.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Management;
|
||||
using Microsoft.Win32;
|
||||
using CefSharp.WinForms;
|
||||
using CefSharp;
|
||||
|
||||
namespace Client2020
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
|
||||
static Mutex CmsStepClientMutex = new Mutex(true, "{66fa29db-925a-402b-a4c7-d3d780fb1bc3}");
|
||||
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
|
||||
//Crate General Exception Handler
|
||||
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(GeneralExMethod);
|
||||
|
||||
//Read App Configuration
|
||||
readConfiguration();
|
||||
|
||||
//Initialize Chromium
|
||||
InitializeCefSettings();
|
||||
|
||||
//Check if is already running an instance of this application
|
||||
if (!CmsStepClientMutex.WaitOne(TimeSpan.Zero, true))
|
||||
ShowAlarmAndClose("Only one istance of " + Application.ProductName + " can be executed!");
|
||||
|
||||
|
||||
//Check Graphic Card in Energy Saving mode
|
||||
checkGraphicCard();
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
//Run the Loading Form
|
||||
Application.Run(new OpeningForm());
|
||||
|
||||
//Run the Main-Browser Form
|
||||
Application.Run(new MainForm());
|
||||
}
|
||||
|
||||
static private void InitializeCefSettings()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (Config.ConnectionConfig.DeleteCahceFolderOnStartup && Directory.Exists(Constants.BROWSER_CACHE_FOLDER))
|
||||
{
|
||||
Directory.Delete(Constants.BROWSER_CACHE_FOLDER, true);
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
ShowAlarmAndClose(E.Message);
|
||||
}
|
||||
|
||||
//Setup the CEF Folder
|
||||
var settings = new CefSettings();
|
||||
|
||||
if (Config.ClientConfig.RenderingMethod == Constants.Rendering.CPU)
|
||||
settings.CefCommandLineArgs.Add("--disable-gpu");
|
||||
|
||||
if (Config.ClientConfig.EnableTransparent == true)
|
||||
settings.CefCommandLineArgs.Add("--enable-transparent-visuals");
|
||||
|
||||
settings.CefCommandLineArgs.Add("--disable-pinch");
|
||||
settings.CefCommandLineArgs.Add("--enable-media-stream");
|
||||
settings.CefCommandLineArgs.Add("--enable-usermedia-screen-capture");
|
||||
settings.CefCommandLineArgs.Add("--no-proxy-server");
|
||||
settings.CefCommandLineArgs.Add("--ignore-certificate-errors-spki-list");
|
||||
settings.CefCommandLineArgs.Add("--ignore-ssl-errors");
|
||||
CefSharpSettings.FocusedNodeChangedEnabled = true;
|
||||
CefSharpSettings.LegacyJavascriptBindingEnabled = true;
|
||||
|
||||
settings.LogSeverity = LogSeverity.Fatal;
|
||||
settings.CachePath = Constants.BROWSER_CACHE_FOLDER;
|
||||
|
||||
|
||||
//Initialize Cef
|
||||
try
|
||||
{
|
||||
Cef.Initialize(settings);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
ShowAlarmAndClose(E.Message);
|
||||
}
|
||||
}
|
||||
|
||||
#region CONFIG_METHODS
|
||||
|
||||
//Sub-Method used to read the configuration
|
||||
static private void readConfiguration()
|
||||
{
|
||||
//Read the Config
|
||||
try
|
||||
{
|
||||
ConfigController.ReadStartupConfig();
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
ShowAlarmAndClose(E.Message);
|
||||
}
|
||||
}
|
||||
|
||||
static private void checkGraphicCard()
|
||||
{
|
||||
|
||||
ManagementObjectSearcher VideoCardsQuery = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_VideoController");
|
||||
ManagementObjectCollection VideoCards = VideoCardsQuery.Get();
|
||||
//Check if i have more Cards
|
||||
if (VideoCards.Count > 1)
|
||||
{
|
||||
//Prepare List of Cards
|
||||
String Cardlist = "";
|
||||
foreach (ManagementObject card in VideoCards)
|
||||
{
|
||||
Cardlist = Cardlist + " - " + card["Name"] + "\n";
|
||||
}
|
||||
|
||||
//If is Win 10 check the Registry Key
|
||||
if (Environment.OSVersion.Version.Major == 10)
|
||||
{
|
||||
string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\DirectX\UserGpuPreferences";
|
||||
string valueName = System.Reflection.Assembly.GetExecutingAssembly().Location;
|
||||
Object value = Registry.GetValue(keyName, valueName, null);
|
||||
if (value == null || !value.Equals("GpuPreference=1;"))
|
||||
{
|
||||
//code if key Not Exist add it and restart
|
||||
Registry.SetValue(keyName, valueName, "GpuPreference=1;");
|
||||
MessageBox.Show("Active has foundthis Graphic Cards:\n\n" + Cardlist + "\nThe graphic configuration has been setted. Press Ok to restart the Application", Application.ProductName);
|
||||
Application.Restart();
|
||||
Environment.Exit(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
private static void GeneralExMethod(object sender, UnhandledExceptionEventArgs args)
|
||||
{
|
||||
Exception e = (Exception)args.ExceptionObject;
|
||||
|
||||
//Create Directory
|
||||
if (!Directory.Exists(Client.Utils.Constants.CEF_EXCEPTIONLOG_PATH))
|
||||
Directory.CreateDirectory(Constants.CEF_EXCEPTIONLOG_PATH);
|
||||
|
||||
//Log the exception on File
|
||||
string path = Constants.CEF_EXCEPTIONLOG_PATH + @"\" + DateTime.Now.ToString("yyyy_MM_dd") + @".txt";
|
||||
using (StreamWriter sw = File.AppendText(path))
|
||||
sw.WriteLine(DateTime.Now.ToString("HH:mm:ss") + " | Class.Name: " + e.TargetSite.ReflectedType.Name + " | Method.Name: " + e.TargetSite.Name + " | Error: " + e.Message);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//Method Used to Show an alarm and close the application
|
||||
public static void ShowAlarmAndClose(string Message)
|
||||
{
|
||||
MessageBox.Show(Message,
|
||||
Application.ProductName,
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error,
|
||||
MessageBoxDefaultButton.Button1
|
||||
);
|
||||
Environment.Exit(-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// Le informazioni generali relative a un assembly sono controllate dal seguente
|
||||
// set di attributi. Modificare i valori di questi attributi per modificare le informazioni
|
||||
// associate a un assembly.
|
||||
[assembly: AssemblyTitle("Active Client 2.0")]
|
||||
[assembly: AssemblyDescription("Active Client - Main HMI for CMS Machines")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("CMS Spa")]
|
||||
[assembly: AssemblyProduct("Active Client")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Se si imposta ComVisible su false, i tipi in questo assembly non saranno visibili
|
||||
// ai componenti COM. Se è necessario accedere a un tipo in questo assembly da
|
||||
// COM, impostare su true l'attributo ComVisible per tale tipo.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// Se il progetto viene esposto a COM, il GUID seguente verrà utilizzato come ID della libreria dei tipi
|
||||
[assembly: Guid("0780047f-12e4-4fcc-9748-6b23f0fd3711")]
|
||||
|
||||
// Le informazioni sulla versione di un assembly sono costituite dai seguenti quattro valori:
|
||||
//
|
||||
// Versione principale
|
||||
// Versione secondaria
|
||||
// Numero di build
|
||||
// Revisione
|
||||
//
|
||||
// È possibile specificare tutti i valori oppure impostare valori predefiniti per i numeri relativi alla revisione e alla build
|
||||
// usando l'asterisco '*' come illustrato di seguito:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("0.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("2.0")]
|
||||
@@ -0,0 +1,133 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// Il codice è stato generato da uno strumento.
|
||||
// Versione runtime:4.0.30319.42000
|
||||
//
|
||||
// Le modifiche apportate a questo file possono provocare un comportamento non corretto e andranno perse se
|
||||
// il codice viene rigenerato.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Client2020.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Classe di risorse fortemente tipizzata per la ricerca di stringhe localizzate e così via.
|
||||
/// </summary>
|
||||
// Questa classe è stata generata automaticamente dalla classe StronglyTypedResourceBuilder.
|
||||
// tramite uno strumento quale ResGen o Visual Studio.
|
||||
// Per aggiungere o rimuovere un membro, modificare il file con estensione ResX ed eseguire nuovamente ResGen
|
||||
// con l'opzione /str oppure ricompilare il progetto VS.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Restituisce l'istanza di ResourceManager nella cache utilizzata da questa classe.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Client2020.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esegue l'override della proprietà CurrentUICulture del thread corrente per tutte le
|
||||
/// ricerche di risorse eseguite utilizzando questa classe di risorse fortemente tipizzata.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Cerca una risorsa localizzata di tipo System.Drawing.Icon simile a (Icona).
|
||||
/// </summary>
|
||||
internal static System.Drawing.Icon ACTIVE_ICONA {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("ACTIVE_ICONA", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap ACTIVE_ICONA1 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("ACTIVE_ICONA1", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap CM_ACTIVE_LOGO {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("CM_ACTIVE_LOGO", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap CM_ACTIVE_LOGO_INVERTED {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("CM_ACTIVE_LOGO_INVERTED", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Cerca una risorsa localizzata di tipo System.Drawing.Icon simile a (Icona).
|
||||
/// </summary>
|
||||
internal static System.Drawing.Icon MAESTRO_ACTIVE_ICON {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("MAESTRO_ACTIVE_ICON", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Cerca una risorsa localizzata di tipo System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap MAESTRO_ACTIVE_LOGO {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("MAESTRO_ACTIVE_LOGO", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Cerca una risorsa localizzata di tipo System.Drawing.Icon simile a (Icona).
|
||||
/// </summary>
|
||||
internal static System.Drawing.Icon SinumerikHmi {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("SinumerikHmi", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,142 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="SinumerikHmi" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\SinumerikHmi.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="CM_ACTIVE_LOGO" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\CM_ACTIVE_LOGO.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="CM_ACTIVE_LOGO_INVERTED" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\CM_ACTIVE_LOGO_INVERTED.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="MAESTRO_ACTIVE_LOGO" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\MAESTRO_ACTIVE_LOGO.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="MAESTRO_ACTIVE_ICON" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\SCM_MAESTRO_ACTIVE_ICONA.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="ACTIVE_ICONA" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ACTIVE_ICONA.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="ACTIVE_ICONA1" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ACTIVE_ICONA.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -0,0 +1,30 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Client2020.Properties
|
||||
{
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
|
After Width: | Height: | Size: 104 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 174 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 428 KiB |
|
After Width: | Height: | Size: 101 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
@@ -0,0 +1,83 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
|
||||
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity type="Win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||
<security>
|
||||
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<!-- Opzioni manifesto di Controllo dell'account utente
|
||||
Per modificare il livello di Controllo dell'account utente di Windows, sostituire il
|
||||
nodo requestedExecutionLevel con uno dei seguenti.
|
||||
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||
|
||||
Se si specifica l'elemento requestedExecutionLevel, la funzionalità Virtualizzazione file system e registro di sistema verrà disabilitata.
|
||||
Rimuovere questo elemento se l'applicazione richiede questa virtualizzazione per
|
||||
compatibilità con le versioni precedenti.
|
||||
-->
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- Elenco delle versioni di Windows in cui è stata testata questa applicazione e
|
||||
per cui è stato previsto l'uso. Rimuovere il commento dagli elementi appropriati per
|
||||
fare in modo che Windows selezioni automaticamente l'ambiente più compatibile. -->
|
||||
|
||||
<!-- Windows Vista -->
|
||||
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
|
||||
|
||||
|
||||
<!-- Windows 8 -->
|
||||
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
|
||||
|
||||
<!-- Windows 8.1 -->
|
||||
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
|
||||
|
||||
<!-- Windows 7 -->
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
|
||||
|
||||
<!-- Windows 10 -->
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
|
||||
|
||||
</application>
|
||||
</compatibility>
|
||||
|
||||
<!-- Indica che l'applicazione è sensibile ai valori DPI e non verrà scalata automaticamente da Windows in caso di
|
||||
valori DPI maggiori. Le applicazioni Windows Presentation Foundation (WPF) sono automaticamente sensibili ai valori DPI, pertanto non è necessario
|
||||
acconsentire esplicitamente. Con le applicazioni Windows Form destinate a .NET Framework 4.6 per cui è stato acconsentito esplicitamente a questa impostazione,
|
||||
è anche necessario impostare 'EnableWindowsFormsHighDpiAutoResizing' su 'true' nel relativo file app.config. -->
|
||||
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiAware>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
|
||||
<!-- Abilita i temi per finestre di dialogo e controlli comuni di Windows (Windows XP e versioni successive) -->
|
||||
<!--
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="*"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
-->
|
||||
|
||||
</assembly>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="cef.redist.x64" version="84.4.1" targetFramework="net462" />
|
||||
<package id="cef.redist.x86" version="84.4.1" targetFramework="net462" />
|
||||
<package id="CefSharp.Common" version="84.4.10" targetFramework="net462" />
|
||||
<package id="CefSharp.WinForms" version="84.4.10" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net462" />
|
||||
</packages>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
|
||||
</startup>
|
||||
</configuration>
|
||||
@@ -0,0 +1,114 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\packages\CefSharp.WinForms.84.4.10\build\CefSharp.WinForms.props" Condition="Exists('..\packages\CefSharp.WinForms.84.4.10\build\CefSharp.WinForms.props')" />
|
||||
<Import Project="..\packages\CefSharp.Common.84.4.10\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.84.4.10\build\CefSharp.Common.props')" />
|
||||
<Import Project="..\packages\cef.redist.x86.84.4.1\build\cef.redist.x86.props" Condition="Exists('..\packages\cef.redist.x86.84.4.1\build\cef.redist.x86.props')" />
|
||||
<Import Project="..\packages\cef.redist.x64.84.4.1\build\cef.redist.x64.props" Condition="Exists('..\packages\cef.redist.x64.84.4.1\build\cef.redist.x64.props')" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{97474BC6-6405-4043-9BEE-E1BDE6B8D972}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>Client_New</RootNamespace>
|
||||
<AssemblyName>Client_New</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<Deterministic>true</Deterministic>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<OutputPath>bin\x64\Debug\</OutputPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<OutputPath>bin\x64\Release\</OutputPath>
|
||||
<Optimize>true</Optimize>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Form1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Form1.Designer.cs">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="Form1.resx">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\cef.redist.x64.84.4.1\build\cef.redist.x64.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x64.84.4.1\build\cef.redist.x64.props'))" />
|
||||
<Error Condition="!Exists('..\packages\cef.redist.x86.84.4.1\build\cef.redist.x86.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x86.84.4.1\build\cef.redist.x86.props'))" />
|
||||
<Error Condition="!Exists('..\packages\CefSharp.Common.84.4.10\build\CefSharp.Common.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.84.4.10\build\CefSharp.Common.props'))" />
|
||||
<Error Condition="!Exists('..\packages\CefSharp.Common.84.4.10\build\CefSharp.Common.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.84.4.10\build\CefSharp.Common.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\CefSharp.WinForms.84.4.10\build\CefSharp.WinForms.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.WinForms.84.4.10\build\CefSharp.WinForms.props'))" />
|
||||
<Error Condition="!Exists('..\packages\CefSharp.WinForms.84.4.10\build\CefSharp.WinForms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.WinForms.84.4.10\build\CefSharp.WinForms.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\CefSharp.Common.84.4.10\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.84.4.10\build\CefSharp.Common.targets')" />
|
||||
<Import Project="..\packages\CefSharp.WinForms.84.4.10\build\CefSharp.WinForms.targets" Condition="Exists('..\packages\CefSharp.WinForms.84.4.10\build\CefSharp.WinForms.targets')" />
|
||||
</Project>
|
||||
@@ -0,0 +1,51 @@
|
||||
|
||||
namespace Client_New
|
||||
{
|
||||
partial class Form1
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1264, 609);
|
||||
this.ControlBox = false;
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||
this.Name = "Form1";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Form1";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using CefSharp.WinForms;
|
||||
|
||||
namespace Client_New
|
||||
{
|
||||
public partial class Form1 : Form
|
||||
{
|
||||
public Form1()
|
||||
{
|
||||
InitializeComponent();
|
||||
var browser = new ChromiumWebBrowser("http:\\localhost:9000");
|
||||
this.Controls.Add(browser);
|
||||
}
|
||||
|
||||
private void cursort(object sender, EventArgs e)
|
||||
{
|
||||
//throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Client_New
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new Form1());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Client_New")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("Client_New")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("97474bc6-6405-4043-9bee-e1bde6b8d972")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@@ -0,0 +1,63 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Client_New.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Client_New.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,26 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Client_New.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="cef.redist.x64" version="84.4.1" targetFramework="net461" />
|
||||
<package id="cef.redist.x86" version="84.4.1" targetFramework="net461" />
|
||||
<package id="CefSharp.Common" version="84.4.10" targetFramework="net461" />
|
||||
<package id="CefSharp.WinForms" version="84.4.10" targetFramework="net461" />
|
||||
</packages>
|
||||
@@ -0,0 +1,29 @@
|
||||
# Progetto Thermo.Active CMS
|
||||
|
||||
|
||||
## Struttura Progetto
|
||||
|
||||
## Ambiente sviluppo e simulazione
|
||||
|
||||
## Procedura udpate DB
|
||||
|
||||
In caso di update del modello DB, seguendo questa guida (https://www.entityframeworktutorial.net/efcore/entity-framework-core-migration.aspx#:~:text=Adding%20a%20Migration,-At%20the%20very&text=So%2C%20firstly%2C%20you%20need%20to,command%20to%20add%20a%20migration.&text=If%20you%20are%20using%20dotnet,Interface%2C%20execute%20the%20following%20command.)
|
||||
|
||||
* si modifica lato classe il modello
|
||||
* si apre il PM Nuget,s elezionando il progetto DB (che contiene le migrations)
|
||||
* si da il comando di migrazione con un testo descrittivo, tipo
|
||||
add-migration MyFirstMigration
|
||||
* si può poi aggiornare il DB manualmente (o all'avvio del sw) con il comando
|
||||
Update-Database
|
||||
|
||||
## Procedura Riavvio su SIM
|
||||
|
||||
Step come indicati da M.Carissoni:
|
||||
* mettere macchina in MANUAL
|
||||
* Dai un paio di ResetSK (prima softkey! oppure sul pannello siemens)
|
||||
* fai cicloReset (softkey)
|
||||
* parcheggio macchina da GANT (fino a che si spegne)
|
||||
* quando si spegne ciclo reset auto
|
||||
* Inizia a lampeggiare start e lo clicchi e parte
|
||||
* Quando si spegne cicloReset fai cicloAuto
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("THermo.Active.Thermocamera")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("THermo.Active.Thermocamera")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("8d8ec91a-3a15-4a1d-951b-a35e7068debd")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{8D8EC91A-3A15-4A1D-951B-A35E7068DEBD}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>THermo.Active.Thermocamera</RootNamespace>
|
||||
<AssemblyName>THermo.Active.Thermocamera</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>true</Deterministic>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="WindowsBase" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ThermocameraComunicator.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Thermo.Active.Model\Thermo.Active.Model.csproj">
|
||||
<Project>{631375DD-06D3-49BB-8130-D9DDB34C429D}</Project>
|
||||
<Name>Thermo.Active.Model</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -0,0 +1,308 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.IO.MemoryMappedFiles;
|
||||
using System.Linq;
|
||||
using System.Net.NetworkInformation;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using Thermo.Active.Model.DTOModels.ThWarmers;
|
||||
|
||||
namespace Thermo.Active.Thermocamera
|
||||
{
|
||||
public class ThermocameraComunicator
|
||||
{
|
||||
#region Private Fields
|
||||
|
||||
private const int DIM_MMF = NUM_CHAR_MSG * 2 + 2;
|
||||
private const string MMF_REQ = "CMS_MMF_REQ";
|
||||
private const string MMF_RES = "CMS_MMF_RES";
|
||||
private const int NUM_CHAR_MSG = 5000;
|
||||
private const int REQ = 1;
|
||||
private const int RES = 2;
|
||||
private static ThermocameraComunicator _instance;
|
||||
private MemoryMappedViewAccessor accessor;
|
||||
private MemoryMappedViewAccessor accessorResp;
|
||||
private MemoryMappedFile mmf;
|
||||
private MemoryMappedFile mmfRes;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
/// <summary>
|
||||
/// Generatore random
|
||||
/// </summary>
|
||||
protected Random rnd = new Random();
|
||||
|
||||
/// <summary>
|
||||
/// Booleana dell'uso sw ext: true = Utilizzo vero sw lettura FLIR / false = simulazione SW RAND
|
||||
/// </summary>
|
||||
protected bool useTCamSw = true;
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Private Constructors
|
||||
|
||||
private ThermocameraComunicator()
|
||||
{
|
||||
mmf = MemoryMappedFile.CreateOrOpen(MMF_REQ, DIM_MMF);
|
||||
mmfRes = MemoryMappedFile.CreateOrOpen(MMF_RES, DIM_MMF);
|
||||
accessor = mmf.CreateViewAccessor();
|
||||
accessorResp = mmfRes.CreateViewAccessor();
|
||||
}
|
||||
|
||||
#endregion Private Constructors
|
||||
|
||||
#region Private Properties
|
||||
|
||||
/// <summary>
|
||||
/// Simulazione valore tra 100 e 300 °C
|
||||
/// </summary>
|
||||
private float simVal
|
||||
{
|
||||
get
|
||||
{
|
||||
float answ = 100 + 200 * (float)rnd.NextDouble();
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private bool readCommand(MemoryMappedViewAccessor accessor, string command, int timeoutMS, out string resp)
|
||||
{
|
||||
resp = "";
|
||||
byte response = 0;
|
||||
int totalCycle = 0;
|
||||
int sleepTime = 500;
|
||||
byte[] bytesToRead = new byte[NUM_CHAR_MSG];
|
||||
|
||||
if (!accessor.CanRead)
|
||||
return false;
|
||||
|
||||
//Read Pre-Command
|
||||
while (response != RES)
|
||||
{
|
||||
totalCycle++;
|
||||
accessor.Read(0, out response);
|
||||
if (response != RES)
|
||||
Thread.Sleep(sleepTime);
|
||||
if (totalCycle * sleepTime > timeoutMS)
|
||||
return false;
|
||||
}
|
||||
|
||||
//Read Command
|
||||
accessor.ReadArray(1, bytesToRead, 0, bytesToRead.Length);
|
||||
|
||||
//Elaborate String
|
||||
string textRecieved = Encoding.UTF8.GetString(bytesToRead);
|
||||
if (textRecieved == null)
|
||||
return false;
|
||||
|
||||
string[] textSplitted = textRecieved.Replace("\0", string.Empty).Split(';');
|
||||
if (textSplitted.Length < 2)
|
||||
return false;
|
||||
|
||||
if (textSplitted[0] != command)
|
||||
return false;
|
||||
|
||||
char[] bufferToClean = Enumerable.Repeat('\0', NUM_CHAR_MSG).ToArray();
|
||||
accessor.WriteArray(0, bufferToClean, 0, bufferToClean.Length);
|
||||
|
||||
//Output
|
||||
textSplitted = textSplitted.Skip(1).ToArray();
|
||||
resp = String.Join(";", textSplitted);
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool writeCommand(MemoryMappedViewAccessor accessor, string command)
|
||||
{
|
||||
char[] bufferToClean = Enumerable.Repeat('\0', NUM_CHAR_MSG).ToArray();
|
||||
accessor.WriteArray(0, bufferToClean, 0, bufferToClean.Length);
|
||||
|
||||
char[] bufferToWrite = command.ToCharArray();
|
||||
|
||||
//Write Pre-Command
|
||||
accessor.Write(0, REQ);
|
||||
|
||||
//Write Command
|
||||
accessor.WriteArray(1, bufferToWrite, 0, bufferToWrite.Length);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
/// Swap x/y requesto from FLIR camera
|
||||
/// </summary>
|
||||
public bool flirSwapXY
|
||||
{
|
||||
get
|
||||
{
|
||||
bool answ = false;
|
||||
bool.TryParse(ConfigurationManager.AppSettings["flirSwapXY"], out answ);
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
public static ThermocameraComunicator getInstance()
|
||||
{
|
||||
if (_instance == null)
|
||||
_instance = new ThermocameraComunicator();
|
||||
return _instance;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Restituisce lettura di tutti i punti (cetroidi) richeisti
|
||||
/// </summary>
|
||||
/// <param name="points">Dictionary dei canali e relativi punti medi (centro calcolato della resistenza di riferimento del canale)</param>
|
||||
/// <param name="timeoutMS">Timeout in ms, 10000 std, da conf</param>
|
||||
/// <param name="temp">°C</param>
|
||||
/// <returns></returns>
|
||||
public bool readMultiTemperatures(Dictionary<int, ThermoPoint> points, int timeoutMS, out Dictionary<int, double> temp)
|
||||
{
|
||||
temp = new Dictionary<int, double>();
|
||||
// modalità impiego vero sw esterno
|
||||
if (useTCamSw)
|
||||
{
|
||||
const string tempCommand = "GetTemperature";
|
||||
string response;
|
||||
|
||||
string cmdRead = "";
|
||||
foreach (var point in points)
|
||||
{
|
||||
if (flirSwapXY)
|
||||
{
|
||||
cmdRead += point.Value.Y + ";" + point.Value.X + ";";
|
||||
}
|
||||
else
|
||||
{
|
||||
cmdRead += point.Value.X + ";" + point.Value.Y + ";";
|
||||
}
|
||||
}
|
||||
|
||||
if (!writeCommand(accessor, tempCommand + ";" + cmdRead))
|
||||
return false;
|
||||
if (!readCommand(accessorResp, tempCommand, timeoutMS, out response))
|
||||
return false;
|
||||
|
||||
string[] respSplitted = response.Replace(",", ".").Split(';');
|
||||
int idxResp = 0;
|
||||
foreach (var item in points)
|
||||
{
|
||||
string str = respSplitted[idxResp];
|
||||
double tmp;
|
||||
if (str.Trim() != "")
|
||||
{
|
||||
if (double.TryParse(str.Trim(), NumberStyles.Float, CultureInfo.InvariantCulture, out tmp))
|
||||
temp.Add(item.Key, tmp);
|
||||
else
|
||||
return false;
|
||||
}
|
||||
idxResp++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// simulo!
|
||||
foreach (var item in points)
|
||||
{
|
||||
temp.Add(item.Key, simVal);
|
||||
}
|
||||
// attende 5 sec
|
||||
Thread.Sleep(5000);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Lettura temp singolo punto
|
||||
/// </summary>
|
||||
/// <param name="x"></param>
|
||||
/// <param name="y"></param>
|
||||
/// <param name="timeoutMS"></param>
|
||||
/// <param name="temp"></param>
|
||||
/// <returns></returns>
|
||||
public bool readTemperature(int x, int y, int timeoutMS, out float temp)
|
||||
{
|
||||
temp = 0f;
|
||||
|
||||
// modalità impiego vero sw esterno
|
||||
if (useTCamSw)
|
||||
{
|
||||
const string tempCommand = "GetTemperature";
|
||||
string response;
|
||||
|
||||
if (!writeCommand(accessor, tempCommand + ";" + x + ";" + y + ";"))
|
||||
return false;
|
||||
if (!readCommand(accessorResp, tempCommand, timeoutMS, out response))
|
||||
return false;
|
||||
response = response.TrimEnd(';');
|
||||
if (!float.TryParse(response, NumberStyles.Float, CultureInfo.InvariantCulture, out temp))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
// simulo!
|
||||
temp = simVal;
|
||||
// attende 5 sec
|
||||
Thread.Sleep(5000);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool showWindow(int x, int y, int dimX, int dimY, int timeoutMS)
|
||||
{
|
||||
const string tempCommand = "ShowWindow";
|
||||
string response;
|
||||
if (!writeCommand(accessor, tempCommand + ";" + x + ";" + y + ";" + dimX + ";" + dimY + ";"))
|
||||
return false;
|
||||
if (!readCommand(accessorResp, tempCommand, timeoutMS, out response))
|
||||
return false;
|
||||
if (!response.StartsWith("1;"))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Richiesta di scattare fotografia
|
||||
/// </summary>
|
||||
/// <param name="timeoutMS">attesa in ms, 10000 std, da conf</param>
|
||||
/// <returns></returns>
|
||||
public bool takePicture(int timeoutMS)
|
||||
{
|
||||
// modalità impiego vero sw esterno
|
||||
if (useTCamSw)
|
||||
{
|
||||
const string tempCommand = "SetParameter_Integer";
|
||||
string response;
|
||||
|
||||
if (!writeCommand(accessor, tempCommand + ";TAKE_IMAGE;"))
|
||||
return false;
|
||||
if (!readCommand(accessorResp, tempCommand, timeoutMS, out response))
|
||||
return false;
|
||||
if (!response.StartsWith("True;"))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
// attende 5 sec
|
||||
Thread.Sleep(5000);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Thermo.Active.Model.DTOModels.AlarmModels;
|
||||
using YamlDotNet.Core.Tokens;
|
||||
|
||||
namespace Thermo.Active.CmsConnectGateway
|
||||
{
|
||||
public static class CMSConnectConstants
|
||||
{
|
||||
public const string IP_ADDR_LABEL = "IP_ADDRESS=";
|
||||
public const string GATEWAY_LABEL = "DEFAULT_GATEWAY=";
|
||||
public const string DNSIP_LABEL = "DNS_IP=";
|
||||
public const string DNSPREFIX_LABEL = "DNS_SUFFIX=";
|
||||
public const string PROXY_ADDR_LABEL = "PROXY=";
|
||||
public const string NO_PROXY_LABEL = "NO_PROXY=";
|
||||
public const string UNDEF_VALUE = "none";
|
||||
public const string CONNECTION_OK_VALUE = "OK";
|
||||
public const string CONNECTION_NOWEB_VALUE = "NO_WEB";
|
||||
public const string CONNECTION_NOPORT_VALUE = "NO_PORTS";
|
||||
|
||||
public const int REBOOT_MINUTES_MAX = 2;
|
||||
public const int REBOOT_MSWAIT_BETWEEN_OP = 500;
|
||||
|
||||
public const string ADMIN_COMMAND = "sudo ";
|
||||
public const string SSH_SET_PROXY_COMMAND = ADMIN_COMMAND + "./setProxy.sh ";
|
||||
public const string SSH_SET_DNSIP_COMMAND = ADMIN_COMMAND + "./setDnsIp.sh ";
|
||||
public const string SSH_SET_DNSSUFFIX_COMMAND = ADMIN_COMMAND + "./setDnsSuffix.sh ";
|
||||
public const string SSH_SET_NETWORK_COMMAND = ADMIN_COMMAND + "./setNetwork.sh ";
|
||||
public const string SSH_GET_NETWORK_COMMAND = ADMIN_COMMAND + "./getNetworkConfiguration.sh ";
|
||||
public const string SSH_GET_PROXY_COMMAND = ADMIN_COMMAND + "./getProxyConfiguration.sh ";
|
||||
public const string SSH_TEST_CONNECTION_COMMAND = ADMIN_COMMAND + "./testConnection.sh ";
|
||||
public const string SSH_GW_REBOOT_COMMAND = ADMIN_COMMAND + "./gatewayReboot.sh ";
|
||||
|
||||
public const string YAML_CONFIG_FILE = "./example-mconnect.conf.yaml";
|
||||
|
||||
|
||||
public const string CONNECT_UNDEFINED = "UNDEFINED";
|
||||
public const string CONNECT_MACHINE_STAUTS_EXE = "EXE";
|
||||
public const string CONNECT_MACHINE_STAUTS_READY = "READY";
|
||||
public const string CONNECT_MACHINE_STAUTS_SETUP = "SETUP";
|
||||
public const string CONNECT_MACHINE_STAUTS_FAIL = "FAIL";
|
||||
public const string CONNECT_MACHINE_STAUTS_POWEROFF = "POWER_OFF";
|
||||
|
||||
public const string CONNECT_PROC_STAUTS_EXE = "EXE";
|
||||
public const string CONNECT_PROC_STAUTS_READY = "READY";
|
||||
public const string CONNECT_PROC_STAUTS_HOLD = "HOLD";
|
||||
public const string CONNECT_PROC_STAUTS_FHOLD = "FEED_HOLD";
|
||||
public const string CONNECT_PROC_STAUTS_OSTOP = "OPTIONAL_STOP";
|
||||
public const string CONNECT_PROC_STAUTS_PSTOPPED = "PROGRAM_STOPPED";
|
||||
|
||||
public const string CONNECT_PROC_MODE_AUTO = "AUTOMATIC";
|
||||
public const string CONNECT_PROC_MODE_EDIT = "EDIT";
|
||||
public const string CONNECT_PROC_MODE_JOG = "MANUAL_JOG";
|
||||
|
||||
public static string ConvertThermoToConnectStatus(int status)
|
||||
{
|
||||
switch (status)
|
||||
{
|
||||
case 0: return CONNECT_MACHINE_STAUTS_POWEROFF;
|
||||
case 1: return CONNECT_MACHINE_STAUTS_READY;
|
||||
case 2: return CONNECT_MACHINE_STAUTS_EXE;
|
||||
case 4: return CONNECT_MACHINE_STAUTS_SETUP;
|
||||
case 8: return CONNECT_MACHINE_STAUTS_FAIL;
|
||||
case 16: return CONNECT_MACHINE_STAUTS_READY;
|
||||
case 128: return CONNECT_MACHINE_STAUTS_FAIL;
|
||||
default: return CONNECT_UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
||||
public static string ConvertThermoToConnectProcessStatus(int status)
|
||||
{
|
||||
switch (status)
|
||||
{
|
||||
case 0: return CONNECT_PROC_STAUTS_READY;
|
||||
case 1: return CONNECT_PROC_STAUTS_READY;
|
||||
case 2: return CONNECT_PROC_STAUTS_EXE;
|
||||
case 4: return CONNECT_PROC_STAUTS_FHOLD;
|
||||
case 8: return CONNECT_PROC_STAUTS_OSTOP;
|
||||
case 16: return CONNECT_PROC_STAUTS_HOLD;
|
||||
case 128: return CONNECT_PROC_STAUTS_HOLD;
|
||||
default: return CONNECT_UNDEFINED;
|
||||
}
|
||||
}
|
||||
public static string ConvertThermoToConnectProcessMode(int status)
|
||||
{
|
||||
switch (status)
|
||||
{
|
||||
case 1: return CONNECT_PROC_MODE_EDIT;
|
||||
case 2: return CONNECT_PROC_MODE_AUTO;
|
||||
case 4: return CONNECT_PROC_MODE_JOG;
|
||||
default: return CONNECT_UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool ConvertThermoToConnectPower(int status)
|
||||
{
|
||||
switch (status)
|
||||
{
|
||||
case 0: return false;
|
||||
default: return true;
|
||||
}
|
||||
}
|
||||
public static bool ConvertThermoToConnectMachineAlarm(DTOAlarmsModel alarms)
|
||||
{
|
||||
return alarms.PlcAlarms.Count > 0;
|
||||
}
|
||||
|
||||
public static string ConvertThermoToConnectAlarms(DTOAlarmsModel alarms)
|
||||
{
|
||||
List<string> alms = new List<string>();
|
||||
foreach (DTOPlcAlarmModel alarm in alarms.PlcAlarms) {
|
||||
int severity = alarm.IsWarning ? 500 : 900;
|
||||
alms.Add(alarm.Id.ToString("D6") + "|" + severity);
|
||||
}
|
||||
return string.Join(",", alms);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
---------------------------------------------------------------
|
||||
------- MConnect Client SDK -------
|
||||
---------------------------------------------------------------
|
||||
|
||||
Libreria di utility per connessione con il cloud di Maestro Connect.
|
||||
|
||||
Le dipendenze inserite sono necessarie al funzionamento dell'SDK.
|
||||
|
||||
Sono inclusi a titolo di esempio due files:
|
||||
* example-mconnect.conf.yaml
|
||||
* example-NLog.config
|
||||
|
||||
Attenzione a configurare correttamente il file NLog.xml includendo il rule per la classe, vedere ad esempio il file example-NLog.config allegato.
|
||||
@@ -9,8 +9,9 @@
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Thermo.Active.CmsConnectGateway</RootNamespace>
|
||||
<AssemblyName>Thermo.Active.CmsConnectGateway</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
@@ -30,23 +31,84 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="MConnectSDK, Version=1.2.2007.218, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MConnectSDK.1.2.2007.218\lib\net462\MConnectSDK.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.1.1.1\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.4.6.7\lib\net45\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Pipelines.Sockets.Unofficial, Version=1.0.0.0, Culture=neutral, PublicKeyToken=42ea0a778e13fbe2, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Pipelines.Sockets.Unofficial.2.1.16\lib\net461\Pipelines.Sockets.Unofficial.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Renci.SshNet, Version=2016.1.0.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SSH.NET.2016.1.0\lib\net40\Renci.SshNet.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Net.IPNetwork, Version=2.4.0.126, Culture=neutral, PublicKeyToken=717343cc2c25edcf, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\IPNetwork2.2.4.0.126\lib\net46\System.Net.IPNetwork.dll</HintPath>
|
||||
<Reference Include="StackExchange.Redis, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c219ff1ca8c2ce46, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\StackExchange.Redis.2.1.58\lib\net461\StackExchange.Redis.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Diagnostics.PerformanceCounter, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.PerformanceCounter.4.7.0\lib\net461\System.Diagnostics.PerformanceCounter.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Pipelines, Version=4.0.2.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Pipelines.4.7.3\lib\net461\System.IO.Pipelines.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.IPNetwork, Version=2.5.226.0, Culture=neutral, PublicKeyToken=717343cc2c25edcf, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\IPNetwork2.2.5.226\lib\net46\System.Net.IPNetwork.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Threading.Channels, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Channels.4.7.1\lib\net461\System.Threading.Channels.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="YamlDotNet, Version=7.0.0.0, Culture=neutral, PublicKeyToken=ec19458f3c15af5e, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\YamlDotNet.7.0.0\lib\net45\YamlDotNet.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Builders\iBuilder.cs" />
|
||||
<Compile Include="CMSConnectConstants.cs" />
|
||||
<Compile Include="GatewayAdapter.cs" />
|
||||
<Compile Include="Events\GatewayRebootEventHandlerArgs.cs" />
|
||||
<Compile Include="Exceptions\GatewayException.cs" />
|
||||
@@ -56,8 +118,23 @@
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
<None Include="example-mconnect.conf.yaml" />
|
||||
<None Include="example-NLog.config" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<ItemGroup>
|
||||
<Content Include="README.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\cms_core_library\CMS_CORE_Library\CMS_CORE_Library.csproj">
|
||||
<Project>{4abf8eef-2b23-483e-acdc-53214fe28681}</Project>
|
||||
<Name>CMS_CORE_Library</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Thermo.Active.Model\Thermo.Active.Model.csproj">
|
||||
<Project>{631375dd-06d3-49bb-8130-d9ddb34c429d}</Project>
|
||||
<Name>Thermo.Active.Model</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.2.2" newVersion="4.0.2.2" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
|
||||
autoReload="true"
|
||||
throwExceptions="false"
|
||||
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log" >
|
||||
|
||||
|
||||
<!-- optional, add some variabeles
|
||||
https://github.com/nlog/NLog/wiki/Configuration-file#variables
|
||||
-->
|
||||
<variable name="myvar" value="myvalue"/>
|
||||
|
||||
<!--
|
||||
See https://github.com/nlog/nlog/wiki/Configuration-file
|
||||
for information on customizing logging rules and outputs.
|
||||
-->
|
||||
|
||||
<targets async="true">
|
||||
<target xsi:type="File"
|
||||
name="mconnect_sdk"
|
||||
fileName="${basedir}/logs/${shortdate}.log"
|
||||
layout="${longdate} ${uppercase:${level}} ${message}"
|
||||
/>
|
||||
</targets>
|
||||
|
||||
<rules>
|
||||
<logger name="MConnectSDK.*" minlevel="Debug" writeTo="mconnect_sdk" />
|
||||
</rules>
|
||||
</nlog>
|
||||
@@ -0,0 +1,14 @@
|
||||
#File di conf per MConnectClientSDK
|
||||
conf:
|
||||
Client_ID: "test"
|
||||
MachineID: "cjpjwuas400cb0slxs5zfj4yh"
|
||||
PingTarget: "stg.api.maestroconnect.scmgroup.com"
|
||||
AliveTarget: "https://stg.api.maestroconnect.scmgroup.com/health"
|
||||
BaseUrl: "https://stg.api.maestroconnect.scmgroup.com/api"
|
||||
UploadUrl: "https://stg.api.maestroconnect.scmgroup.com/storage-api/backups"
|
||||
WebAppUrl: "https://stg.maestroconnect.scmgroup.com/settings/machine-activation?user_code={0}&machine_id={1}"
|
||||
MemoryLayer:
|
||||
Redis:
|
||||
ConnectionString: "127.0.0.1,abortConnect=false,ssl=false"
|
||||
DbIndex: 1
|
||||
Module: "MCC"
|
||||
@@ -1,5 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="IPNetwork2" version="2.4.0.126" targetFramework="net461" />
|
||||
<package id="IPNetwork2" version="2.5.226" targetFramework="net462" />
|
||||
<package id="MConnectSDK" version="1.2.2007.218" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="1.1.1" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net462" />
|
||||
<package id="NLog" version="4.6.7" targetFramework="net462" />
|
||||
<package id="Pipelines.Sockets.Unofficial" version="2.1.16" targetFramework="net462" />
|
||||
<package id="SSH.NET" version="2016.1.0" targetFramework="net461" />
|
||||
<package id="StackExchange.Redis" version="2.1.58" targetFramework="net462" />
|
||||
<package id="System.Buffers" version="4.5.1" targetFramework="net462" />
|
||||
<package id="System.Diagnostics.PerformanceCounter" version="4.7.0" targetFramework="net462" />
|
||||
<package id="System.IO.Compression" version="4.3.0" targetFramework="net462" />
|
||||
<package id="System.IO.Pipelines" version="4.7.3" targetFramework="net462" />
|
||||
<package id="System.Memory" version="4.5.4" targetFramework="net462" />
|
||||
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net462" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="4.7.1" targetFramework="net462" />
|
||||
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net462" />
|
||||
<package id="System.Threading.Channels" version="4.7.1" targetFramework="net462" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net462" />
|
||||
<package id="YamlDotNet" version="7.0.0" targetFramework="net462" />
|
||||
</packages>
|
||||
@@ -0,0 +1,121 @@
|
||||
<ModelDesign>
|
||||
<Machine>
|
||||
<Property SymbolicName="Model" BrowseName="Model" DataType="ua:String" ValueRank="Scalar" Value="EIDOS" />
|
||||
<Property SymbolicName="Manufacturer" BrowseName="Manufacturer" DataType="ua:String" ValueRank="Scalar" Value="CMS Industries" />
|
||||
<Property SymbolicName="Serial" BrowseName="Serial" DataType="ua:String" ValueRank="Scalar" Value="9943" />
|
||||
<Property SymbolicName="Type" BrowseName="Type" DataType="ua:String" ValueRank="Scalar" Value="CNC_MACHINE" />
|
||||
<Property SymbolicName="BuildYear" BrowseName="BuildYear" DataType="ua:String" ValueRank="Scalar" Value="2020" />
|
||||
<Variable SymbolicName="Status" BrowseName="Status" DataType="ua:String" ValueRank="Scalar" Units="Enum" />
|
||||
<Variable SymbolicName="Alarm" BrowseName="Alarm" DataType="ua:Boolean" ValueRank="Scalar" Units="Bool" />
|
||||
<Variable SymbolicName="Emergency" BrowseName="Emergency" DataType="ua:Boolean" ValueRank="Scalar" Units="Bool" />
|
||||
<Variable SymbolicName="Power" BrowseName="Power" DataType="ua:Boolean" ValueRank="Scalar" Units="Bool" />
|
||||
<Variable SymbolicName="ActiveTime" BrowseName="ActiveTime" DataType="ua:Float" ValueRank="Scalar" Units="h" CmsDataType="CounterList" CmsDataIndex="001" CmsDataOpt="HOURS" />
|
||||
<Variable SymbolicName="ActiveWorkingTime" BrowseName="ActiveWorkingTime" DataType="ua:Float" ValueRank="Scalar" Units="h" CmsDataType="CounterList" CmsDataIndex="002" CmsDataOpt="HOURS" />
|
||||
|
||||
<Component Name="Cnc">
|
||||
<Property SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Value="SIEMENS" />
|
||||
<Property SymbolicName="Version" BrowseName="Version" DataType="ua:String" ValueRank="Scalar" Value="S71500" />
|
||||
<Condition SymbolicName="Condition" BrowseName="Condition" DataType="ua:String" ValueRank="Scalar" Type="OffNormalAlarmState" Units="" />
|
||||
<Component Name="CncProcesses">
|
||||
<Component Name="01">
|
||||
<Variable SymbolicName="Mode" BrowseName="Mode" DataType="ua:String" ValueRank="Scalar" Units="Enum" />
|
||||
<Variable SymbolicName="SubMode" BrowseName="SubMode" DataType="ua:String" ValueRank="Scalar" Units="" />
|
||||
<Variable SymbolicName="Status" BrowseName="Status" DataType="ua:String" ValueRank="Scalar" Units="Enum" />
|
||||
|
||||
<Variable SymbolicName="FeedOverride" BrowseName="FeedOverride" DataType="ua:String" ValueRank="Scalar" Units="Perc" />
|
||||
<Variable SymbolicName="RapidOverride" BrowseName="RapidOverride" DataType="ua:String" ValueRank="Scalar" Units="Perc" />
|
||||
<Variable SymbolicName="SpeedOverride" BrowseName="SpeedOverride" DataType="ua:String" ValueRank="Scalar" Units="Perc" />
|
||||
|
||||
</Component>
|
||||
</Component>
|
||||
</Component>
|
||||
<Component Name="Plc">
|
||||
<Property SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Value="SIEMENS" />
|
||||
<Property SymbolicName="Version" BrowseName="Version" DataType="ua:String" ValueRank="Scalar" Value="" />
|
||||
<Condition SymbolicName="Condition" BrowseName="Condition" DataType="ua:String" ValueRank="Scalar" Type="OffNormalAlarmState" Units="" />
|
||||
</Component>
|
||||
<Component Name="Hmi">
|
||||
<Property SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Value="CMS Active" />
|
||||
<Variable SymbolicName="Version" BrowseName="Version" DataType="ua:String" ValueRank="Scalar" Value="" />
|
||||
<Variable SymbolicName="User" BrowseName="User" DataType="ua:String" ValueRank="Scalar" Units="" />
|
||||
</Component>
|
||||
<Component Name="Axes">
|
||||
<Component Name="01">
|
||||
<Property SymbolicName="Type" BrowseName="Type" DataType="ua:String" ValueRank="Scalar" Value="LINEAR" />
|
||||
<Property SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Value="X" />
|
||||
<Property SymbolicName="Role" BrowseName="Role" DataType="ua:String" ValueRank="Scalar" Value="MASTER" />
|
||||
<Property SymbolicName="MasterId" BrowseName="MasterId" DataType="ua:String" ValueRank="Scalar" Value="0" />
|
||||
<Variable SymbolicName="Load" BrowseName="Load" DataType="ua:Float" ValueRank="Scalar" Units="Perc"/>
|
||||
<Variable SymbolicName="CurrentPos" BrowseName="CurrentPos" DataType="ua:Float" ValueRank="Scalar" Units="mm" SGroup="2" DBand="1" VGroup="P" />
|
||||
<Variable SymbolicName="FeedRate" BrowseName="FeedRate" DataType="ua:Float" ValueRank="Scalar" Units="m/min" SGroup="4" DBand="1" VGroup="P" />
|
||||
</Component>
|
||||
<Component Name="02">
|
||||
<Property SymbolicName="Type" BrowseName="Type" DataType="ua:String" ValueRank="Scalar" Value="LINEAR" />
|
||||
<Property SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Value="Y" />
|
||||
<Property SymbolicName="Role" BrowseName="Role" DataType="ua:String" ValueRank="Scalar" Value="MASTER" />
|
||||
<Property SymbolicName="MasterId" BrowseName="MasterId" DataType="ua:String" ValueRank="Scalar" Value="0" />
|
||||
<Variable SymbolicName="Load" BrowseName="Load" DataType="ua:Float" ValueRank="Scalar" Units="Perc"/>
|
||||
<Variable SymbolicName="CurrentPos" BrowseName="CurrentPos" DataType="ua:Float" ValueRank="Scalar" Units="mm" SGroup="2" DBand="1" VGroup="P" />
|
||||
<Variable SymbolicName="FeedRate" BrowseName="FeedRate" DataType="ua:Float" ValueRank="Scalar" Units="m/min" SGroup="4" DBand="1" VGroup="P" />
|
||||
</Component>
|
||||
<Component Name="03">
|
||||
<Property SymbolicName="Type" BrowseName="Type" DataType="ua:String" ValueRank="Scalar" Value="LINEAR" />
|
||||
<Property SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Value="Z" />
|
||||
<Property SymbolicName="Role" BrowseName="Role" DataType="ua:String" ValueRank="Scalar" Value="MASTER" />
|
||||
<Property SymbolicName="MasterId" BrowseName="MasterId" DataType="ua:String" ValueRank="Scalar" Value="0" />
|
||||
<Variable SymbolicName="Load" BrowseName="Load" DataType="ua:Float" ValueRank="Scalar" Units="Perc"/>
|
||||
<Variable SymbolicName="CurrentPos" BrowseName="CurrentPos" DataType="ua:Float" ValueRank="Scalar" Units="mm" SGroup="2" DBand="1" VGroup="P" />
|
||||
<Variable SymbolicName="FeedRate" BrowseName="FeedRate" DataType="ua:Float" ValueRank="Scalar" Units="m/min" SGroup="4" DBand="1" VGroup="P" />
|
||||
</Component>
|
||||
<Component Name="04">
|
||||
<Property SymbolicName="Type" BrowseName="Type" DataType="ua:String" ValueRank="Scalar" Value="LINEAR" />
|
||||
<Property SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Value="V" />
|
||||
<Property SymbolicName="Role" BrowseName="Role" DataType="ua:String" ValueRank="Scalar" Value="MASTER" />
|
||||
<Property SymbolicName="MasterId" BrowseName="MasterId" DataType="ua:String" ValueRank="Scalar" Value="0" />
|
||||
<Variable SymbolicName="Load" BrowseName="Load" DataType="ua:Float" ValueRank="Scalar" Units="Perc"/>
|
||||
<Variable SymbolicName="CurrentPos" BrowseName="CurrentPos" DataType="ua:Float" ValueRank="Scalar" Units="mm" SGroup="2" DBand="1" VGroup="P" />
|
||||
<Variable SymbolicName="FeedRate" BrowseName="FeedRate" DataType="ua:Float" ValueRank="Scalar" Units="m/min" SGroup="4" DBand="1" VGroup="P" />
|
||||
</Component>
|
||||
<Component Name="05">
|
||||
<Property SymbolicName="Type" BrowseName="Type" DataType="ua:String" ValueRank="Scalar" Value="LINEAR" />
|
||||
<Property SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Value="B" />
|
||||
<Property SymbolicName="Role" BrowseName="Role" DataType="ua:String" ValueRank="Scalar" Value="MASTER" />
|
||||
<Property SymbolicName="MasterId" BrowseName="MasterId" DataType="ua:String" ValueRank="Scalar" Value="0" />
|
||||
<Variable SymbolicName="Load" BrowseName="Load" DataType="ua:Float" ValueRank="Scalar" Units="Perc"/>
|
||||
<Variable SymbolicName="CurrentPos" BrowseName="CurrentPos" DataType="ua:Float" ValueRank="Scalar" Units="mm" SGroup="2" DBand="1" VGroup="P" />
|
||||
<Variable SymbolicName="FeedRate" BrowseName="FeedRate" DataType="ua:Float" ValueRank="Scalar" Units="m/min" SGroup="4" DBand="1" VGroup="P" />
|
||||
</Component>
|
||||
<Component Name="06">
|
||||
<Property SymbolicName="Type" BrowseName="Type" DataType="ua:String" ValueRank="Scalar" Value="LINEAR" />
|
||||
<Property SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Value="C" />
|
||||
<Property SymbolicName="Role" BrowseName="Role" DataType="ua:String" ValueRank="Scalar" Value="MASTER" />
|
||||
<Property SymbolicName="MasterId" BrowseName="MasterId" DataType="ua:String" ValueRank="Scalar" Value="0" />
|
||||
<Variable SymbolicName="Load" BrowseName="Load" DataType="ua:Float" ValueRank="Scalar" Units="Perc"/>
|
||||
<Variable SymbolicName="CurrentPos" BrowseName="CurrentPos" DataType="ua:Float" ValueRank="Scalar" Units="mm" SGroup="2" DBand="1" VGroup="P" />
|
||||
<Variable SymbolicName="FeedRate" BrowseName="FeedRate" DataType="ua:Float" ValueRank="Scalar" Units="m/min" SGroup="4" DBand="1" VGroup="P" />
|
||||
</Component>
|
||||
</Component>
|
||||
<Component Name="OperatingGroups">
|
||||
</Component>
|
||||
<Component Name="AuxiliaryGroups">
|
||||
</Component>
|
||||
<Component Name="ProductionProcesses">
|
||||
<Component Name="01">
|
||||
<Component Name="Programs">
|
||||
<Component Name="01">
|
||||
<Variable SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Units="" />
|
||||
<Variable SymbolicName="RepsTarget" BrowseName="RepsTarget" DataType="ua:String" ValueRank="Scalar" Units="" />
|
||||
<Variable SymbolicName="RepsDone" BrowseName="RepsDone" DataType="ua:String" ValueRank="Scalar" Units="" />
|
||||
</Component>
|
||||
</Component>
|
||||
</Component>
|
||||
</Component>
|
||||
<Component Name="Events">
|
||||
<Variable SymbolicName="Donwtimes" BrowseName="Donwtimes" DataType="ua:String" ValueRank="Scalar" />
|
||||
<Variable SymbolicName="Production" BrowseName="Production" DataType="ua:String" ValueRank="Scalar" />
|
||||
<Variable SymbolicName="Kpis" BrowseName="Kpis" DataType="ua:String" ValueRank="Scalar" />
|
||||
<Variable SymbolicName="Tools" BrowseName="Tools" DataType="ua:String" ValueRank="Scalar" />
|
||||
<Variable SymbolicName="Messages" BrowseName="Messages" DataType="ua:String" ValueRank="Scalar" />
|
||||
</Component>
|
||||
</Machine>
|
||||
</ModelDesign>
|
||||
@@ -0,0 +1,86 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
|
||||
<xs:element name="inputsOperator">
|
||||
<xs:complexType>
|
||||
<xs:choice maxOccurs="unbounded">
|
||||
<xs:element name="realValueModal" type="valuesType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="showValModal" type="showValType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="buttonsListModal" type="buttonsType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="simpleModal" type="modalType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name="valuesType">
|
||||
<xs:all>
|
||||
<xs:element name="id" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="title" type="translatedText" minOccurs='1' maxOccurs='1'/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="showValType">
|
||||
<xs:all>
|
||||
<xs:element name="id" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="title" type="translatedText" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="buttons">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="button">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="value" minOccurs="1" maxOccurs="1" type="xs:int"></xs:element>
|
||||
<xs:element name="title" type="translatedText" minOccurs='1' maxOccurs='1'/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="buttonsType">
|
||||
<xs:all>
|
||||
<xs:element name="id" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="title" type="translatedText" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="buttons">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="button">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="value" minOccurs="1" maxOccurs="1" type="xs:int"></xs:element>
|
||||
<xs:element name="title" type="translatedText" minOccurs='1' maxOccurs='1'/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="modalType">
|
||||
<xs:all>
|
||||
<xs:element name="id" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="title" type="translatedText" minOccurs='1' maxOccurs='1'/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- Translations field Type -->
|
||||
<xs:complexType name="translatedText">
|
||||
<xs:sequence>
|
||||
<xs:element name="lang" type="langType" minOccurs="0" maxOccurs="unbounded">
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- lang field -->
|
||||
<xs:complexType name="langType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="langKey" use="required" type="xs:string" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -552,17 +552,17 @@
|
||||
"233": 0
|
||||
},
|
||||
"RecipeOverview": {
|
||||
"General": "HasError",
|
||||
"Positions": "HasError",
|
||||
"Cycle": "ChangedOk",
|
||||
"Heats": "ChangedOk",
|
||||
"Pyrometer": "ChangedOk",
|
||||
"Drawing": "ChangedOk",
|
||||
"UpperPlate": "ChangedOk",
|
||||
"Cooling": "HasError",
|
||||
"Vacuum": "ChangedOk",
|
||||
"Extraction": "ChangedOk",
|
||||
"Options": "HasError"
|
||||
"General": "Unchanged",
|
||||
"Positions": "Unchanged",
|
||||
"Cycle": "Unchanged",
|
||||
"Heats": "Unchanged",
|
||||
"Pyrometer": "Unchanged",
|
||||
"Drawing": "Unchanged",
|
||||
"UpperPlate": "Unchanged",
|
||||
"Cooling": "Unchanged",
|
||||
"Vacuum": "Unchanged",
|
||||
"Extraction": "Unchanged",
|
||||
"Options": "Unchanged"
|
||||
},
|
||||
"TC_last": 2532.940840175
|
||||
}
|
||||
@@ -1,27 +1,37 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<axes>
|
||||
<axis id="1" >X</axis>
|
||||
<axis id="2" >Y</axis>
|
||||
<axis id="3" >Z</axis>
|
||||
<axis id="4" >B</axis>
|
||||
<axis id="5" >C</axis>
|
||||
<axis id="6" >V</axis>
|
||||
<axis id="7" ></axis>
|
||||
<axis id="8" ></axis>
|
||||
<axis id="9" ></axis>
|
||||
<axis id="10" ></axis>
|
||||
<axis id="11" ></axis>
|
||||
<axis id="12" ></axis>
|
||||
<axis id="13" ></axis>
|
||||
<axis id="14" ></axis>
|
||||
<axis id="15" ></axis>
|
||||
<axis id="16" ></axis>
|
||||
<axis id="17" >SP</axis>
|
||||
<axis id="18" ></axis>
|
||||
<axis id="19" ></axis>
|
||||
<axis id="20" ></axis>
|
||||
<axis id="21" ></axis>
|
||||
<axis id="22" ></axis>
|
||||
<axis id="23" ></axis>
|
||||
<axis id="24" ></axis>
|
||||
<axis id="1" name="KI_Asse_W1" type="LINEAR" enabled="true" />
|
||||
<axis id="2" name="KI_Asse_W2" type="LINEAR" enabled="true" />
|
||||
<axis id="3" name="KI_Asse_W3" type="LINEAR" enabled="false" />
|
||||
<axis id="4" name="KI_Asse_W4" type="LINEAR" enabled="false" />
|
||||
<axis id="5" name="KI_Asse_Z1" type="LINEAR" enabled="true" />
|
||||
<axis id="6" name="KI_Asse_Z2" type="LINEAR" enabled="true" />
|
||||
<axis id="7" name="KI_Asse_Z3" type="LINEAR" enabled="true" />
|
||||
<axis id="8" name="KI_Asse_Z4" type="LINEAR" enabled="true" />
|
||||
<axis id="9" name="KI_Asse_R1" type="LINEAR" enabled="true" />
|
||||
<axis id="10" name="KI_Asse_R2" type="LINEAR" enabled="false" />
|
||||
<axis id="11" name="KI_Asse_S1" type="LINEAR" enabled="true" />
|
||||
<axis id="12" name="KI_Asse_S2" type="LINEAR" enabled="false" />
|
||||
<axis id="13" name="KI_Asse_CZ1" type="LINEAR" enabled="true" />
|
||||
<axis id="14" name="KI_Asse_CZ2" type="LINEAR" enabled="true" />
|
||||
<axis id="15" name="KI_Asse_CZ3" type="LINEAR" enabled="true" />
|
||||
<axis id="16" name="KI_Asse_CZ4" type="LINEAR" enabled="true" />
|
||||
<axis id="17" name="KI_Asse_U1" type="LINEAR" enabled="true" />
|
||||
<axis id="18" name="KI_Asse_U2" type="LINEAR" enabled="true" />
|
||||
<axis id="19" name="KI_Asse_P" type="LINEAR" enabled="true" />
|
||||
<axis id="20" name="KI_Asse_X" type="LINEAR" enabled="true" />
|
||||
<axis id="21" name="KI_Asse_CX1" type="LINEAR" enabled="true" />
|
||||
<axis id="22" name="KI_Asse_CX2" type="LINEAR" enabled="true" />
|
||||
<axis id="23" name="KI_Asse_CY1" type="LINEAR" enabled="true" />
|
||||
<axis id="24" name="KI_Asse_CY2" type="LINEAR" enabled="true" />
|
||||
<axis id="25" name="KI_Asse_F11" type="LINEAR" enabled="true" />
|
||||
<axis id="26" name="KI_Asse_F12" type="LINEAR" enabled="false" />
|
||||
<axis id="27" name="KI_Asse_F21" type="LINEAR" enabled="true" />
|
||||
<axis id="28" name="KI_Asse_F22" type="LINEAR" enabled="false" />
|
||||
<axis id="29" name="KI_Asse_F31" type="LINEAR" enabled="true" />
|
||||
<axis id="30" name="KI_Asse_F32" type="LINEAR" enabled="false" />
|
||||
<axis id="31" name="KI_Asse_F41" type="LINEAR" enabled="true" />
|
||||
<axis id="32" name="KI_Asse_F42" type="LINEAR" enabled="false" />
|
||||
<axis id="33" name="KI_Asse_E" type="LINEAR" enabled="true" />
|
||||
<axis id="34" name="KI_Asse_M" type="LINEAR" enabled="false" />
|
||||
</axes>
|
||||
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="axes">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="axis" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="axisType"/>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:complexType name="axisType">
|
||||
<xs:attribute name="id" type="xs:integer" use="required">
|
||||
</xs:attribute>
|
||||
<xs:attribute name="name" type="xs:string" use="required">
|
||||
</xs:attribute>
|
||||
<xs:attribute name="type" type="axType" use="required">
|
||||
</xs:attribute>
|
||||
<xs:attribute name="enabled" type="xs:boolean" use="required">
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="axType" final="restriction" >
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="NA" />
|
||||
<xs:enumeration value="LINEAR" />
|
||||
<xs:enumeration value="ROTATIONAL" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,68 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<inputsOperator>
|
||||
<simpleModal>
|
||||
<id>1</id>
|
||||
<title>
|
||||
<lang langKey="it">Attesa carico/scarico lastra</lang>
|
||||
<lang langKey="en">Waiting sheet load/unload</lang>
|
||||
</title>
|
||||
</simpleModal>
|
||||
<simpleModal>
|
||||
<id>2</id>
|
||||
<title>
|
||||
<lang langKey="it">Attesa carico/scarico pezzo</lang>
|
||||
<lang langKey="en">Waiting piece load/unload</lang>
|
||||
</title>
|
||||
</simpleModal>
|
||||
<simpleModal>
|
||||
<id>3</id>
|
||||
<title>
|
||||
<lang langKey="it">Pausa ciclo attiva</lang>
|
||||
<lang langKey="en">Pause cycle active</lang>
|
||||
</title>
|
||||
</simpleModal>
|
||||
<simpleModal>
|
||||
<id>4</id>
|
||||
<title>
|
||||
<lang langKey="it">Ciclo parcheggio in corso</lang>
|
||||
<lang langKey="en">Parking cycle ongoing</lang>
|
||||
</title>
|
||||
</simpleModal>
|
||||
<realValueModal>
|
||||
<id>10</id>
|
||||
<title>
|
||||
<lang langKey="en">External water</lang>
|
||||
<lang langKey="it">Acqua esterna</lang>
|
||||
</title>
|
||||
</realValueModal>
|
||||
<realValueModal>
|
||||
<id>11</id>
|
||||
<title>
|
||||
<lang langKey="en">External water</lang>
|
||||
<lang langKey="it">Acqua esterna</lang>
|
||||
</title>
|
||||
</realValueModal>
|
||||
<buttonsListModal>
|
||||
<id>6</id>
|
||||
<title>
|
||||
<lang langKey="en">External water</lang>
|
||||
<lang langKey="it">Acqua esterna</lang>
|
||||
</title>
|
||||
<buttons>
|
||||
<button>
|
||||
<value>3</value>
|
||||
<title>
|
||||
<lang langKey="en">External water</lang>
|
||||
<lang langKey="it">Acqua esterna</lang>
|
||||
</title>
|
||||
</button>
|
||||
<button>
|
||||
<value>4</value>
|
||||
<title>
|
||||
<lang langKey="en">External water</lang>
|
||||
<lang langKey="it">Acqua esterna</lang>
|
||||
</title>
|
||||
</button>
|
||||
</buttons>
|
||||
</buttonsListModal>
|
||||
</inputsOperator>
|
||||
@@ -8,6 +8,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>false</showDelay>
|
||||
<priority>1</priority>
|
||||
<category>Positions</category>
|
||||
<subCategory_1>Frame</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>2</id>
|
||||
@@ -44,6 +46,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>false</showDelay>
|
||||
<priority>1</priority>
|
||||
<category>Positions</category>
|
||||
<subCategory_1>Mould</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>6</id>
|
||||
@@ -53,6 +57,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>false</showDelay>
|
||||
<priority>2</priority>
|
||||
<category>Heats</category>
|
||||
<subCategory_1>LowerHeaters</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>7</id>
|
||||
@@ -62,6 +68,8 @@
|
||||
<idParam>0</idParam>
|
||||
<showDelay>false</showDelay>
|
||||
<priority>1</priority>
|
||||
<category>Heats</category>
|
||||
<subCategory_1>UpperHeaters</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>8</id>
|
||||
@@ -71,6 +79,8 @@
|
||||
<idParam>80</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<priority>3</priority>
|
||||
<category>Pyrometer</category>
|
||||
<subCategory_1>Pyrometer</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>9</id>
|
||||
@@ -80,6 +90,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>false</showDelay>
|
||||
<priority>4</priority>
|
||||
<category>Heats</category>
|
||||
<subCategory_1>DecomSustain</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>10</id>
|
||||
@@ -89,6 +101,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>false</showDelay>
|
||||
<priority>5</priority>
|
||||
<category>Cycle</category>
|
||||
<subCategory_1>AcrylicFrame</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>11</id>
|
||||
@@ -107,6 +121,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>false</showDelay>
|
||||
<priority>1</priority>
|
||||
<category>Cycle</category>
|
||||
<subCategory_1>UpperOverheating</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>13</id>
|
||||
@@ -116,6 +132,7 @@
|
||||
<idParam>99</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<priority>2</priority>
|
||||
<category>Drawing</category>
|
||||
</block>
|
||||
<block>
|
||||
<id>14</id>
|
||||
@@ -125,6 +142,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<priority>1</priority>
|
||||
<category>Positions</category>
|
||||
<subCategory_1>Mould</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>15</id>
|
||||
@@ -143,6 +162,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<priority>3</priority>
|
||||
<category>Cooling</category>
|
||||
<subCategory_1>Blowing</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>17</id>
|
||||
@@ -152,15 +173,19 @@
|
||||
<idParam>139</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<priority>4</priority>
|
||||
<category>Cooling</category>
|
||||
<subCategory_1>Pyrometer</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>19</id>
|
||||
<label>MB_Mod_Vuoto</label>
|
||||
<type>VACUUM</type>
|
||||
<section>FORMING</section>
|
||||
<idParam>-1</idParam>
|
||||
<idParam>189</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<priority>5</priority>
|
||||
<category>Vacuum</category>
|
||||
<subCategory_1>Main</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>21</id>
|
||||
@@ -170,6 +195,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<priority>6</priority>
|
||||
<category>Vacuum</category>
|
||||
<subCategory_1>Direct</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>23</id>
|
||||
@@ -178,8 +205,9 @@
|
||||
<section>FORMING</section>
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
|
||||
<priority>7</priority>
|
||||
<category>Vacuum</category>
|
||||
<subCategory_1>Aux</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>25</id>
|
||||
@@ -189,6 +217,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<priority>8</priority>
|
||||
<category>Cooling</category>
|
||||
<subCategory_1>Nebulizer</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>26</id>
|
||||
@@ -207,6 +237,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<priority>9</priority>
|
||||
<category>Positions</category>
|
||||
<subCategory_1>UpperPlate</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>29</id>
|
||||
@@ -216,6 +248,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>false</showDelay>
|
||||
<priority>9</priority>
|
||||
<category>UpperPlate</category>
|
||||
<subCategory_1>Cycle</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>30</id>
|
||||
@@ -225,6 +259,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>false</showDelay>
|
||||
<priority>9</priority>
|
||||
<category>Positions</category>
|
||||
<subCategory_1>UpperPlate</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>31</id>
|
||||
@@ -234,6 +270,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<priority>10</priority>
|
||||
<category>UpperPlate</category>
|
||||
<subCategory_1>Air</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>33</id>
|
||||
@@ -243,6 +281,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<priority>11</priority>
|
||||
<category>UpperPlate</category>
|
||||
<subCategory_1>Vacuum</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>34</id>
|
||||
@@ -270,6 +310,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<priority>10</priority>
|
||||
<category>UpperPlate</category>
|
||||
<subCategory_1>Extraction</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>38</id>
|
||||
@@ -288,6 +330,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<priority>2</priority>
|
||||
<category>Extraction</category>
|
||||
<subCategory_1>Main</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>40</id>
|
||||
@@ -297,6 +341,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<priority>1</priority>
|
||||
<category>Positions</category>
|
||||
<subCategory_1>Mould</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>41</id>
|
||||
@@ -315,6 +361,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>false</showDelay>
|
||||
<priority>1</priority>
|
||||
<category>Positions</category>
|
||||
<subCategory_1>Frame</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>43</id>
|
||||
@@ -351,6 +399,8 @@
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<priority>6</priority>
|
||||
<category>Vacuum</category>
|
||||
<subCategory_1>Pre</subCategory_1>
|
||||
</block>
|
||||
<block>
|
||||
<id>47</id>
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
<xs:element name="priority" type="xs:int" />
|
||||
<xs:element name="scaleFactor" type="xs:int" minOccurs="0" />
|
||||
<xs:element name="numDec" type="xs:int" minOccurs="0" />
|
||||
<xs:element name="category" type="param_type" minOccurs="0" />
|
||||
<xs:element name="subCategory_1" type="xs:string" minOccurs="0" />
|
||||
<xs:element name="subCategory_2" type="xs:string" minOccurs="0" />
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
@@ -23,6 +26,23 @@
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<!-- Head Type -->
|
||||
<xs:simpleType name="param_type" final="restriction">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="General" />
|
||||
<xs:enumeration value="Positions" />
|
||||
<xs:enumeration value="Cycle"/>
|
||||
<xs:enumeration value="Heats"/>
|
||||
<xs:enumeration value="Pyrometer"/>
|
||||
<xs:enumeration value="Drawing"/>
|
||||
<xs:enumeration value="UpperPlate"/>
|
||||
<xs:enumeration value="Cooling"/>
|
||||
<xs:enumeration value="Vacuum"/>
|
||||
<xs:enumeration value="Extraction"/>
|
||||
<xs:enumeration value="Options"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- Language Type -->
|
||||
<xs:complexType name="langType">
|
||||
<xs:simpleContent>
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
|
||||
<xs:element name="recipe">
|
||||
<!-- Heads -->
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<!-- Heads -->
|
||||
<xs:element name="parameter" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
|
||||
@@ -1,64 +1,142 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<serverConfig>
|
||||
<ncConfig>
|
||||
<ncVendor>S7NET</ncVendor> <!-- NO_NC/DEMO/FANUC/SIEMENS/OSAI/S7NET -->
|
||||
<showNcHMI>false</showNcHMI>
|
||||
<ncIpAddress>192.168.0.102</ncIpAddress>
|
||||
<ncPort>102</ncPort>
|
||||
<machineModel>Thermo 2020</machineModel>
|
||||
<sharedPath>C:\PartPrg\</sharedPath>
|
||||
<sharedName>//PARTPRG:/</sharedName>
|
||||
<installationDate>01/06/2020</installationDate>
|
||||
<mgiOption>false</mgiOption>
|
||||
<siemensKeyboardOption>false</siemensKeyboardOption>
|
||||
<machineNumberHasLetters>false</machineNumberHasLetters>
|
||||
</ncConfig>
|
||||
<softwareProdConfig>
|
||||
<enabled>false</enabled>
|
||||
<path>C:\Program Files\Notepad++\notepad++.exe</path>
|
||||
</softwareProdConfig>
|
||||
<serverConfig>
|
||||
<serverPort>9000</serverPort>
|
||||
<serverAddress>*</serverAddress>
|
||||
<language>en</language>
|
||||
<enableDirectoryBrowsing>true</enableDirectoryBrowsing>
|
||||
<databaseAddress>localhost</databaseAddress>
|
||||
<autoOpenCmsClient>false</autoOpenCmsClient>
|
||||
<textEditorPath>C:\Windows\System32\notepad.exe</textEditorPath>
|
||||
<MTCFolderPath>C:\CMS\MTC\ADAPTER\</MTCFolderPath>
|
||||
<MTCApplicationName>SCMA</MTCApplicationName>
|
||||
<CMSConnectReady>false</CMSConnectReady>
|
||||
<maxAlarmsRows>50000</maxAlarmsRows>
|
||||
<alarmToDelete>5000</alarmToDelete>
|
||||
</serverConfig>
|
||||
<extSoftwares>
|
||||
<software>
|
||||
<longName>Calculator</longName>
|
||||
<shortName>CAL</shortName>
|
||||
<path>C:\Windows\System32\calc.exe</path>
|
||||
<arguments></arguments>
|
||||
<inMainMenuBar>true</inMainMenuBar>
|
||||
</software>
|
||||
<software>
|
||||
<longName>NotePad</longName>
|
||||
<shortName>NP</shortName>
|
||||
<path>C:\Windows\System32\notepad.exe</path>
|
||||
<arguments></arguments>
|
||||
<inMainMenuBar>true</inMainMenuBar>
|
||||
</software>
|
||||
<software>
|
||||
<longName>MsPaint</longName>
|
||||
<shortName>PA</shortName>
|
||||
<path>C:\Windows\System32\mspaint.exe</path>
|
||||
<arguments></arguments>
|
||||
<inMainMenuBar>false</inMainMenuBar>
|
||||
</software>
|
||||
<software>
|
||||
<longName>NotePad2</longName>
|
||||
<shortName>NP2</shortName>
|
||||
<path>C:\Windows\System32\notepad.exe</path>
|
||||
<arguments></arguments>
|
||||
<inMainMenuBar>false</inMainMenuBar>
|
||||
</software>
|
||||
<ncConfig>
|
||||
<ncVendor>S7NET</ncVendor>
|
||||
<!-- NO_NC/DEMO/FANUC/SIEMENS/OSAI/S7NET -->
|
||||
<showNcHMI>false</showNcHMI>
|
||||
<ncIpAddress>192.168.0.102</ncIpAddress>
|
||||
<ncPort>102</ncPort>
|
||||
<machineModel>Thermo 2020</machineModel>
|
||||
<sharedPath>C:\CMS\Recipes\</sharedPath>
|
||||
<sharedName>//PARTPRG:/</sharedName>
|
||||
<installationDate>01/06/2020</installationDate>
|
||||
<mgiOption>false</mgiOption>
|
||||
<siemensKeyboardOption>false</siemensKeyboardOption>
|
||||
<machineNumberHasLetters>false</machineNumberHasLetters>
|
||||
</ncConfig>
|
||||
<softwareProdConfig>
|
||||
<enabled>false</enabled>
|
||||
<path>C:\Program Files\Notepad++\notepad++.exe</path>
|
||||
</softwareProdConfig>
|
||||
<serverConfig>
|
||||
<serverPort>9000</serverPort>
|
||||
<serverAddress>*</serverAddress>
|
||||
<language>en</language>
|
||||
<enableDirectoryBrowsing>true</enableDirectoryBrowsing>
|
||||
<databaseAddress>localhost</databaseAddress>
|
||||
<autoOpenCmsClient>false</autoOpenCmsClient>
|
||||
<textEditorPath>C:\Windows\System32\notepad.exe</textEditorPath>
|
||||
<MTCFolderPath>C:\CMS\MTC\ADAPTER\</MTCFolderPath>
|
||||
<MTCApplicationName>SCMA</MTCApplicationName>
|
||||
<CMSConnectReady>true</CMSConnectReady>
|
||||
<maxAlarmsRows>50000</maxAlarmsRows>
|
||||
<alarmToDelete>5000</alarmToDelete>
|
||||
</serverConfig>
|
||||
<extSoftwares>
|
||||
<software>
|
||||
<longName>HC-DIAG2</longName>
|
||||
<shortName>HD2</shortName>
|
||||
<path>C:\Program Files (x86)\HC-DIAG2\HC-DIAG2.exe</path>
|
||||
<arguments></arguments>
|
||||
<inMainMenuBar>false</inMainMenuBar>
|
||||
</software>
|
||||
<software>
|
||||
<longName>Calc</longName>
|
||||
<shortName>NP</shortName>
|
||||
<path>C:\Windows\System32\calc.exe</path>
|
||||
<arguments></arguments>
|
||||
<inMainMenuBar>false</inMainMenuBar>
|
||||
</software>
|
||||
</extSoftwares>
|
||||
<additionalParameters>
|
||||
<entry>
|
||||
<key>warmerPlanSizeX</key>
|
||||
<value>1500</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>warmerPlanSizeY</key>
|
||||
<value>1200</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>flirImgX</key>
|
||||
<value>1000</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>flirImgY</key>
|
||||
<value>803</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>resistSizeX</key>
|
||||
<value>125</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>resistSizeY</key>
|
||||
<value>60</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>warmerAutocompStartValue</key>
|
||||
<value>50</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>warmerAutocompStep</key>
|
||||
<value>5</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>LoaderXsize</key>
|
||||
<value>1400</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>loaderSuckersNumber</key>
|
||||
<value>12</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>ThermoCameraXpos</key>
|
||||
<value>93</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>ThermoCameraYpos</key>
|
||||
<value>728</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>ThermoCameraXdim</key>
|
||||
<value>828</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>ThermoCameraYdim</key>
|
||||
<value>1004</value>
|
||||
</entry>
|
||||
</additionalParameters>
|
||||
<unitOfMeasures>
|
||||
<unitOfMeasure id="0" value="" />
|
||||
<unitOfMeasure id="1" value="mm" />
|
||||
<unitOfMeasure id="2" value="Nm" />
|
||||
<unitOfMeasure id="3" value="°C" />
|
||||
<unitOfMeasure id="4" value="mm/s" />
|
||||
<unitOfMeasure id="5" value="ms" />
|
||||
<unitOfMeasure id="6" value="s" />
|
||||
<unitOfMeasure id="7" value="%" />
|
||||
</unitOfMeasures>
|
||||
<sampling>
|
||||
<thread name="alarms" value="200" />
|
||||
<thread name="axis" value="200" />
|
||||
<thread name="area" value="500" />
|
||||
<thread name="confReq" value="2000" />
|
||||
<thread name="expMan" value="30000" />
|
||||
<thread name="functionEnab" value="300" />
|
||||
<thread name="gauges" value="500" />
|
||||
<thread name="m154" value="500" />
|
||||
<thread name="mCommands" value="250" />
|
||||
<thread name="powerOn" value="500" />
|
||||
<thread name="prodCycle" value="1000" />
|
||||
<thread name="prodInfo" value="1000" />
|
||||
<thread name="prodPanel" value="500" />
|
||||
<thread name="modules" value="200" />
|
||||
<thread name="recipe" value="400" />
|
||||
<thread name="scada" value="1000" />
|
||||
<thread name="statusCommand" value="250" />
|
||||
<thread name="FlirCamera" value="500" />
|
||||
<thread name="userSK" value="250" />
|
||||
<thread name="warmers" value="500" />
|
||||
<thread name="watchdog" value="250" />
|
||||
</sampling>
|
||||
</serverConfig>
|
||||
@@ -63,10 +63,61 @@
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="additionalParameters" >
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="entry" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="key" type="xs:string" />
|
||||
<xs:element name="value" type="xs:string" />
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="unitOfMeasures">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="unitOfMeasure" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="umType"/>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="sampling" >
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="thread" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="sampleType"/>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name="umType">
|
||||
<xs:attribute name="id" type="xs:integer" use="required">
|
||||
</xs:attribute>
|
||||
<xs:attribute name="value" type="xs:string" use="required">
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="sampleType">
|
||||
<xs:attribute name="name" type="xs:string" use="required">
|
||||
</xs:attribute>
|
||||
<xs:attribute name="value" type="xs:integer" use="required">
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="ncType" final="restriction" >
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="DEMO" />
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<scaleFactor>1000</scaleFactor>
|
||||
<numDec>1</numDec>
|
||||
<minVal>0</minVal>
|
||||
<maxVal>5000000</maxVal>
|
||||
<maxVal>2000000</maxVal>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<category>GAUGE</category>
|
||||
|
||||
@@ -17,29 +17,31 @@
|
||||
<active>true</active>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>2</plcId>
|
||||
<plcId>1</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Refresh alarms</lang>
|
||||
<lang langKey="it">Refresh allarmi</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<visible>false</visible>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>false</active>
|
||||
<category>3</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>3</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Termoregulator</lang>
|
||||
<lang langKey="en">Thermoregulator</lang>
|
||||
<lang langKey="it">Termoregolatori</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<refCallParam>options_thermoregulator_enable</refCallParam>
|
||||
<refCallLabel>options_thermoregulator_enable_button</refCallLabel>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>false</active>
|
||||
<category>4</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>4</plcId>
|
||||
<localizedNames>
|
||||
@@ -51,7 +53,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>5</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>5</plcId>
|
||||
<localizedNames>
|
||||
@@ -63,7 +65,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>6</category>
|
||||
<category>1</category>
|
||||
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
|
||||
<plcId>6</plcId>
|
||||
<localizedNames>
|
||||
@@ -76,7 +78,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>1</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>7</plcId>
|
||||
<localizedNames>
|
||||
@@ -85,11 +87,13 @@
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<starred>true</starred>
|
||||
<refCallParam>heaters_enable</refCallParam>
|
||||
<refCallLabel>heaters_enable_button</refCallLabel>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>1</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>8</plcId>
|
||||
<localizedNames>
|
||||
@@ -114,55 +118,67 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>10</category>
|
||||
<category>1</category>
|
||||
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
|
||||
<plcId>10</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">START Cycle</lang>
|
||||
<lang langKey="it">START Ciclo</lang>
|
||||
<lang langKey="en">Last load</lang>
|
||||
<lang langKey="it">Ultimo carico</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>10</category>
|
||||
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
|
||||
<plcId>11</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Gantry realignment</lang>
|
||||
<lang langKey="it">Riallineamento gantry</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>1</category>
|
||||
<category>4</category>
|
||||
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
|
||||
<plcId>12</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Reset hours pump 1</lang>
|
||||
<lang langKey="it">Reset contaore pompa 1</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<visible>false</visible>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>false</active>
|
||||
<category>1</category>
|
||||
<category>4</category>
|
||||
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
|
||||
<plcId>13</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Reset hours pump 2</lang>
|
||||
<lang langKey="it">Reset contaore pompa 2</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<visible>false</visible>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>false</active>
|
||||
<category>1</category>
|
||||
<category>4</category>
|
||||
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
|
||||
<plcId>14</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Reset hours pump 3</lang>
|
||||
<lang langKey="it">Reset contaore pompa 3</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<visible>false</visible>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>1</category>
|
||||
<category>4</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>15</plcId>
|
||||
<localizedNames>
|
||||
@@ -174,7 +190,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>1</category>
|
||||
<category>4</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>16</plcId>
|
||||
<localizedNames>
|
||||
@@ -186,7 +202,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>4</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>17</plcId>
|
||||
<localizedNames>
|
||||
@@ -198,7 +214,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>4</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>18</plcId>
|
||||
<localizedNames>
|
||||
@@ -210,7 +226,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>19</plcId>
|
||||
<localizedNames>
|
||||
@@ -222,7 +238,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>20</plcId>
|
||||
<localizedNames>
|
||||
@@ -234,7 +250,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>21</plcId>
|
||||
<localizedNames>
|
||||
@@ -246,7 +262,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
|
||||
<plcId>22</plcId>
|
||||
<localizedNames>
|
||||
@@ -254,11 +270,13 @@
|
||||
<lang langKey="it">Ventose setup</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<refCallParam>cycle_loader_enable</refCallParam>
|
||||
<refCallLabel>cycle_loader_enable_button</refCallLabel>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>23</plcId>
|
||||
<localizedNames>
|
||||
@@ -270,7 +288,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>24</plcId>
|
||||
<localizedNames>
|
||||
@@ -282,7 +300,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>25</plcId>
|
||||
<localizedNames>
|
||||
@@ -294,7 +312,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>26</plcId>
|
||||
<localizedNames>
|
||||
@@ -306,7 +324,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>27</plcId>
|
||||
<localizedNames>
|
||||
@@ -318,7 +336,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>28</plcId>
|
||||
<localizedNames>
|
||||
@@ -330,7 +348,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>false</active>
|
||||
<category>7</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>29</plcId>
|
||||
<localizedNames>
|
||||
@@ -342,12 +360,12 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>30</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Frame X</lang>
|
||||
<lang langKey="it">Apertura cornice</lang>
|
||||
<lang langKey="it">Larghezza cornice</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<refCallParam>general_sizes_frame_dim_x</refCallParam>
|
||||
@@ -356,7 +374,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>31</plcId>
|
||||
<localizedNames>
|
||||
@@ -370,7 +388,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>32</plcId>
|
||||
<localizedNames>
|
||||
@@ -384,7 +402,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>33</plcId>
|
||||
<localizedNames>
|
||||
@@ -398,38 +416,37 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>34</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Preheating cycles</lang>
|
||||
<lang langKey="it">Cicli di preriscaldo</lang>
|
||||
<lang langKey="en">Windowplate Up</lang>
|
||||
<lang langKey="it">Piastrafinestra su</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>false</active>
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>35</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Loader Cycle Start</lang>
|
||||
<lang langKey="it">Start Ciclo Caricatore</lang>
|
||||
<lang langKey="en">Heating pyrometer</lang>
|
||||
<lang langKey="it">Pirometro riscaldo</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<refCallParam>cycle_loader_enable</refCallParam>
|
||||
<refCallLabel>cycle_loader_enable_button</refCallLabel>
|
||||
<starred>true</starred>
|
||||
</softKey_procedure>
|
||||
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>1</category>
|
||||
<category>7</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>36</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Dashboard Setpoint Plus</lang>
|
||||
<lang langKey="it">Dashboard Setpoint Plus</lang>
|
||||
<lang langKey="en">Pyrometer +1</lang>
|
||||
<lang langKey="it">Pirometro +1</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<refCallParam>dash_setpoint_plus</refCallParam>
|
||||
@@ -438,12 +455,12 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>1</category>
|
||||
<category>7</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>37</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Dashboard Setpoint Minus</lang>
|
||||
<lang langKey="it">Dashboard Setpoint Minus</lang>
|
||||
<lang langKey="en">Pyrometer -1</lang>
|
||||
<lang langKey="it">Pirometro -1</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<refCallParam>dash_setpoint_minus</refCallParam>
|
||||
|
||||
@@ -552,17 +552,17 @@
|
||||
"233": 0
|
||||
},
|
||||
"RecipeOverview": {
|
||||
"General": "HasError",
|
||||
"Positions": "HasError",
|
||||
"Cycle": "ChangedOk",
|
||||
"Heats": "ChangedOk",
|
||||
"Pyrometer": "ChangedOk",
|
||||
"Drawing": "ChangedOk",
|
||||
"UpperPlate": "ChangedOk",
|
||||
"Cooling": "HasError",
|
||||
"Vacuum": "ChangedOk",
|
||||
"Extraction": "ChangedOk",
|
||||
"Options": "HasError"
|
||||
"General": "Unchanged",
|
||||
"Positions": "Unchanged",
|
||||
"Cycle": "Unchanged",
|
||||
"Heats": "Unchanged",
|
||||
"Pyrometer": "Unchanged",
|
||||
"Drawing": "Unchanged",
|
||||
"UpperPlate": "Unchanged",
|
||||
"Cooling": "Unchanged",
|
||||
"Vacuum": "Unchanged",
|
||||
"Extraction": "Unchanged",
|
||||
"Options": "Unchanged"
|
||||
},
|
||||
"TC_last": 2532.940840175
|
||||
}
|
||||
@@ -11,6 +11,9 @@ namespace Thermo.Active.Config
|
||||
public static ServerConfigModel ServerStartupConfig;
|
||||
public static NcConfigModel NcConfig;
|
||||
public static List<ExtSoftwareModel> ExtSoftwaresConfig;
|
||||
public static Dictionary<string, string> AdditionalParametersConfig;
|
||||
public static Dictionary<int, string> UnitMeasuresConfig;
|
||||
public static Dictionary<string, int> ThreadSamplingConfig;
|
||||
public static SoftwareProdConfigModel SoftwareProdConfig;
|
||||
public static MachineModel MachineConfig;
|
||||
public static List<MaintenanceConfigModel> MaintenancesConfig;
|
||||
@@ -51,10 +54,9 @@ namespace Thermo.Active.Config
|
||||
public static List<ScadaSchemaModel> SubscribedScada = new List<ScadaSchemaModel>();
|
||||
|
||||
public static List<string> MacrosConfig;
|
||||
|
||||
public static List<InputOperatorConfigModel> InputsOperatorConfig;
|
||||
public static string CMSMainProgramContent;
|
||||
|
||||
|
||||
// Thermo
|
||||
public static List<ThermoProdConfigModel> ThermoProdConfig;
|
||||
public static List<RecipeConfigModel> RecipeConfig;
|
||||
@@ -62,6 +64,10 @@ namespace Thermo.Active.Config
|
||||
public static List<RiskResistModel> RiskResistConfig;
|
||||
public static List<RiskChannelModel> RiskChannelConfig;
|
||||
public static List<RiskBoardModel> RiskBoardConfig;
|
||||
public static List<AxesConfigModel> AxesConfig;
|
||||
public static Dictionary<string,string> CMSConnectEntry;
|
||||
public static string CMSConnectDataModel;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@@ -51,6 +52,12 @@
|
||||
<Content Include="Config\axesConfig.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Config\DataModel.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Config\inputOperatorConfig.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Config\macrosConfig.xml">
|
||||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
@@ -200,6 +207,14 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Config\inputOperatorConfigValidator.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Config\axesConfigValidator.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
<None Include="Config\Recipes\template.tpl">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
@@ -80,6 +81,10 @@
|
||||
<Project>{b2366b08-96bd-4f6b-b748-b45089b87a14}</Project>
|
||||
<Name>Thermo.Active.NC</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\THermo.Active.Thermocamera\Thermo.Active.Thermocamera.csproj">
|
||||
<Project>{8D8EC91A-3A15-4A1D-951B-A35E7068DEBD}</Project>
|
||||
<Name>Thermo.Active.Thermocamera</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Thermo.Active.Utils\Thermo.Active.Utils.csproj">
|
||||
<Project>{cbeb631b-abfa-4042-9779-c0060b0dfefe}</Project>
|
||||
<Name>Thermo.Active.Utils</Name>
|
||||
|
||||