Compare commits

...

104 Commits

Author SHA1 Message Date
Samuele E. Locatelli b2932d927c Merge remote-tracking branch 'origin/develop' into new/ThermoCamManager 2021-03-24 11:25:04 +01:00
Thermo_SIM 68add4e08d Ottimizzazione Frontend 2021-03-24 11:24:33 +01:00
Samuele E. Locatelli 5585c11ef5 new rel start 2021-03-24 10:48:18 +01:00
Samuele E. Locatelli b9caa4ac74 setup serverConfig x SIM 2021-03-24 10:48:09 +01:00
Samuele E. Locatelli cde514eed8 refresh x test produzione 2021-03-24 09:29:37 +01:00
Samuele E. Locatelli fad45a5635 new rel 190 2021-03-24 09:29:26 +01:00
Samuele E. Locatelli 9bf2265082 pulizia riferimenti vers 0.8.1 --> 0.4.0 2021-03-24 09:29:18 +01:00
Samuele E. Locatelli e488619ae5 Merge remote-tracking branch 'origin/develop' into new/ThermoCamManager 2021-03-24 07:55:53 +01:00
Samuele E. Locatelli babd8b25da vers 189 semaforo unico 2021-03-24 07:55:40 +01:00
Thermo_SIM 5894cd63ce Check LastTakenImage 2021-03-24 07:33:58 +01:00
Samuele E. Locatelli 5a19d44b34 semaforo su confirm/cancel ricetta (strobe R798!) 2021-03-24 06:14:15 +01:00
Samuele E. Locatelli 577cbe5c9d start test new rel 2021-03-24 05:48:47 +01:00
Samuele E. Locatelli e881006857 gestione semafori x Reciper + Warmers 2021-03-23 21:47:31 +01:00
Samuele E. Locatelli 83fb0acfd0 helpers gestione semafori Recipe + Warmers 2021-03-23 21:47:21 +01:00
Samuele E. Locatelli 04b3588e7f lieve allungamento delay scrittura singole memorie ricetta 2021-03-23 21:46:54 +01:00
Samuele E. Locatelli c00e695c15 inizio nuova release 2021-03-23 19:34:02 +01:00
Samuele E. Locatelli c228c454f6 Merge remote-tracking branch 'origin/develop' into new/ThermoCamManager 2021-03-23 19:33:43 +01:00
Thermo_SIM e86495eab5 Added Thermocamera Takesnapshot 2021-03-23 17:31:13 +01:00
Samuele E. Locatelli 63e636cd36 fix base WebApi (NO dispose ncAdapter: non serve) 2021-03-23 12:49:04 +01:00
Samuele E. Locatelli 1458a4cf5d inserito force close 2021-03-23 12:43:55 +01:00
Samuele E. Locatelli 6cf7331081 Merge remote-tracking branch 'origin/develop' into new/ThermoCamManager 2021-03-23 12:09:26 +01:00
Samuele E. Locatelli 43402a785f aggiunti metodi dispose x WebAPI con ncAdapter 2021-03-23 12:09:10 +01:00
Thermo_SIM 88561778ce Fix Classes bitselector 2021-03-23 11:01:03 +01:00
Thermo_SIM 0d395fca33 Added LOG on Auth error 2021-03-23 10:48:17 +01:00
Samuele E. Locatelli 09fea8f0e3 start new rel 2021-03-23 10:47:34 +01:00
Thermo_SIM 42531aac49 Fix COnfirm IO 2021-03-23 10:23:24 +01:00
Thermo_SIM bbfc3ca64d Fix Caricatore 2021-03-23 09:18:02 +01:00
Thermo_SIM 50e76bd30c FIx Logs 2021-03-22 18:33:06 +01:00
Thermo_SIM 6f6559ce67 Fix Sheet read 2021-03-22 17:59:30 +01:00
Samuele E. Locatelli 5c2f69b8d2 fix serverconfig 2021-03-22 16:48:56 +01:00
Samuele E. Locatelli 0f7ce076f9 type 2021-03-22 16:18:47 +01:00
Samuele E. Locatelli 127b4ba1de new rel 185 2021-03-22 14:38:30 +01:00
Samuele E. Locatelli 9e2ee7d5b6 Merge branch 'develop' into new/ThermoCamManager 2021-03-22 14:38:10 +01:00
Thermo_SIM 2a0b3f7e72 Fix Frontend 2021-03-22 14:33:31 +01:00
Thermo_SIM 36dc4171e5 Added Migration 2021-03-22 14:24:34 +01:00
Thermo_SIM 29057c5431 Added TYpeval 2021-03-22 14:18:59 +01:00
Thermo_SIM a1336f9918 Merge branch 'Log_Lastre' into develop 2021-03-22 11:27:06 +01:00
Thermo_SIM 7ded45280f Fix THermocamera History 2021-03-22 11:26:33 +01:00
Thermo_SIM ef139a2365 Fix THermoprophet 2021-03-21 19:28:07 +01:00
Thermo_SIM fe6498f6ed Fix Vuoto Behaviour 2021-03-21 18:06:26 +01:00
Thermo_SIM 22ad46ab8c Fix bitselector 2021-03-21 17:57:19 +01:00
Thermo_SIM e098409b83 Fix COnfig FIle & Sheet cleaning 2021-03-19 22:52:17 +01:00
Thermo_SIM 083be20f02 Fix Frontend 2021-03-19 22:21:10 +01:00
Thermo_SIM f7ff6629ce Added NC Reading 2021-03-19 22:19:49 +01:00
Thermo_SIM 2a4c0e8335 Fix Frontend 2 2021-03-19 22:19:36 +01:00
Thermo_SIM bd1488bc02 FIx Frontend 2021-03-19 22:19:23 +01:00
Thermo_SIM bab9bf504a Removed ConsoleLog 2021-03-19 20:07:57 +01:00
Thermo_SIM c7f7c4f9c8 Added Frontend 2021-03-19 18:28:07 +01:00
Thermo_SIM 36e0927bd1 Backend 2021-03-19 18:00:03 +01:00
Thermo_SIM 7b132793d0 Third DB Commit 2021-03-19 17:26:34 +01:00
Thermo_SIM d01fcf7578 Second Commit 2021-03-19 17:11:18 +01:00
Thermo_SIM 539ed2508d First commit DB 2021-03-19 17:07:42 +01:00
Thermo_SIM cacae4eebf Fix pirometro in Dashboard 2021-03-19 16:40:07 +01:00
Thermo_SIM 34e31666cd Fix ricetta + Dashboard S 2021-03-19 16:05:30 +01:00
Samuele E. Locatelli 3b0dd98018 modifica meccanismo dispose FLIR 2021-03-19 10:11:43 +01:00
Samuele E. Locatelli 76fdf01d38 Merge branch 'new/ThermoCamManager' into develop 2021-03-18 11:49:36 +01:00
Samuele E. Locatelli 7918787ac6 new rel 2021-03-18 11:49:30 +01:00
Samuele E. Locatelli e797afabcb impostato in recipe current stesso comportamento di area 2021-03-18 11:48:46 +01:00
Samuele E. Locatelli c31edb94d5 Merge branch 'new/ThermoCamManager' into develop 2021-03-18 09:49:59 +01:00
Samuele E. Locatelli 86fd710aaa vers 182 2021-03-18 09:49:33 +01:00
Samuele E. Locatelli f1f8f3aa97 modifiche x evitare sovrapposizione chiamate lettura ricetta 2021-03-18 09:46:56 +01:00
Samuele E. Locatelli 83d6f40491 Merge branch 'develop' into new/ThermoCamManager 2021-03-17 19:06:03 +01:00
Samuele E. Locatelli 21cb4050b0 modifica DTO x upload stato connessione FLIR cam 2021-03-17 19:05:49 +01:00
Samuele E. Locatelli 027eed8770 Aggiunta gestione status camera connessa o meno (lettura) 2021-03-17 19:01:41 +01:00
Samuele E. Locatelli 43de959bca new rel number 2021-03-17 18:42:13 +01:00
Samuele E. Locatelli 5a56d53d90 fix thread thermo flir 2021-03-16 15:21:03 +01:00
Samuele E. Locatelli 89b0ce5f96 gestione conf XML server x abilitazione FLIR 2021-03-16 15:15:58 +01:00
Samuele E. Locatelli e57d16d690 vers 180 2021-03-15 17:09:26 +01:00
Samuele E. Locatelli fe25ae54e6 Merge remote-tracking branch 'origin/develop' into new/ThermoCamManager 2021-03-15 17:07:47 +01:00
Samuele E. Locatelli 614acd2e40 Fix scrittura nome IMG x thermo 2021-03-15 17:07:40 +01:00
Thermo_SIM d70474c01f Fix dashboard UI 2021-03-15 16:26:28 +01:00
Thermo_SIM 045dd808e5 Fix nebulizzatori 2021-03-15 15:55:07 +01:00
Thermo_SIM 92cb66d539 Fix thermoprophet view 2021-03-15 15:54:53 +01:00
Thermo_SIM 941535056d Fix Bitselect 2021-03-15 15:31:25 +01:00
Thermo_SIM f6d794d90c Fix UI 2021-03-15 15:05:17 +01:00
Thermo_SIM 1f769677d1 Added Backup features 2021-03-15 14:51:24 +01:00
Thermo_SIM 9de1286290 Fix Setup 2021-03-15 12:38:22 +01:00
Thermo_SIM 59bacaa1a6 Fix quote Frame 2021-03-15 08:31:48 +01:00
Thermo_SIM abc8564f2f Fix riscaldi 2021-03-12 17:34:59 +01:00
Thermo_SIM 8bfd294525 Merge remote-tracking branch 'origin/develop' into develop 2021-03-10 18:31:18 +01:00
Thermo_SIM 47119e7828 Implementato Assi 2021-03-10 18:30:25 +01:00
Samuele E. Locatelli a8dbf3d15d Merge remote-tracking branch 'origin/new/ThermoCamManager' into develop 2021-03-10 14:55:31 +01:00
Samuele E. Locatelli 7bbe807359 start new rel 178 2021-03-10 14:54:52 +01:00
Samuele E. Locatelli 5884f229b1 Merge remote-tracking branch 'origin/new/ThermoCamManager' into develop 2021-03-10 14:53:58 +01:00
Samuele E. Locatelli 8842111125 fix conf assi 2021-03-10 14:53:15 +01:00
Samuele E. Locatelli 7110d05782 Merge remote-tracking branch 'origin/develop' into new/ThermoCamManager 2021-03-10 14:40:01 +01:00
Thermo_SIM fa41a5f577 Fix visualizzazione assi 2021-03-10 10:46:50 +01:00
Samuele E. Locatelli e09ca359dd update version 2021-03-10 09:44:04 +01:00
Samuele E. Locatelli e01731685e Modifica stats x threads 2021-03-10 09:43:14 +01:00
Thermo_SIM 9a9fa64200 Fix translations 2021-03-09 18:05:53 +01:00
= 83492b3a00 Merge remote-tracking branch 'CMS/develop' into develop 2021-03-09 14:58:09 +01:00
= 954224c80f coolers bit selector 2021-03-09 14:57:59 +01:00
Thermo_SIM 64fbb2e106 Fix Under the hood + adv mode 2021-03-09 12:39:20 +01:00
Thermo_SIM 95559497af Added par "extraction_main_drawing_enabled" 2021-03-09 12:38:54 +01:00
Thermo_SIM 71667b87a9 Merge remote-tracking branch 'origin/new/ThermoCamManager' into develop 2021-03-09 12:07:10 +01:00
Samuele E. Locatelli 6919827661 Merge remote-tracking branch 'origin/new/ThermoCamManager' into new/ThermoCamManager 2021-03-09 11:22:19 +01:00
Samuele E. Locatelli 76044293af start new rel 2021-03-09 11:20:52 +01:00
Samuele E. Locatelli bc817fcbf6 fix decodifica comandi assi 2021-03-09 11:18:40 +01:00
Thermo_SIM 45e62c635f Fix Axis visible 2021-03-09 09:37:04 +01:00
Samuele E. Locatelli 0440202342 bozza metodi gestione AdvMode x assi 2021-03-05 07:39:24 +01:00
Samuele E. Locatelli 9a0705130a aggiunta preliminare metodo gen cmd/status assi 2021-03-04 17:25:57 +01:00
Samuele E. Locatelli bdf80680c2 new rel 175 2021-03-04 14:23:50 +01:00
= 729fa17209 Merge remote-tracking branch 'CMS/develop' into develop 2021-03-04 14:17:45 +01:00
= bf6e16a4d6 fix posizione valori x/y piastra 2021-03-04 14:17:28 +01:00
151 changed files with 21880 additions and 19451 deletions
+4 -2
View File
@@ -253,7 +253,7 @@ if($outFile -eq "True")
if ($excludeNugetUpdate -ne 1) {
Write-Host "Update the Nuget Packages"
CheckNugetScm
ExecuteLog "nuget restore"
ExecuteLog "nuget restore Thermo.Active.sln "
}
if ($version -ne "") {
@@ -332,12 +332,14 @@ if ($zipOutput -eq 1) {
ExecuteLog "Copy-Item -Path ""$PSScriptRoot\Thermo.Active\wwwroot\Assets\fonts"" -Destination ""view\Assets"" -Recurse"
ExecuteLog "Copy-Item -Path ""$PSScriptRoot\Thermo.Active\wwwroot\Assets\images"" -Destination ""view\Assets"" -Recurse"
ExecuteLog "Copy-Item -Path ""$PSScriptRoot\Thermo.Active\wwwroot\Assets\icons"" -Destination ""view\Assets"" -Recurse"
ExecuteLog "Copy-Item -Path ""$PSScriptRoot\Thermo.Active\wwwroot\Assets\svg"" -Destination ""view\Assets"" -Recurse"
ExecuteLog "Copy-Item -Path ""$PSScriptRoot\Thermo.Active\wwwroot\Assets\animations"" -Destination ""view\Assets"" -Recurse"
ExecuteLog "Copy-Item -Path ""$PSScriptRoot\Thermo.Active\wwwroot\Assets\styles\style.css"" -Destination ""view\Assets\styles"" "
ExecuteLog "Copy-Item -Path ""$PSScriptRoot\Thermo.Active\wwwroot\Assets\styles\style.css.map"" -Destination ""view\Assets\styles"" "
ExecuteLog "Copy-Item -Path ""$PSScriptRoot\Thermo.Active\wwwroot\Assets\styles\iziToast.min.css"" -Destination ""view\Assets\styles"" "
ExecuteLog "Copy-Item -Path ""$PSScriptRoot\Thermo.Active\wwwroot\Assets\styles\vue2-datepicker.css"" -Destination ""view\Assets\styles"" "
ExecuteLog "Copy-Item -Path ""$PSScriptRoot\Thermo.Active\wwwroot\index.html"" -Destination ""view"" -Recurse"
ExecuteLog "Copy-Item -Path ""$PSScriptRoot\Thermo.Active\wwwroot\favicon.ico"" -Destination ""view"" -Recurse"
ExecuteLog "Copy-Item -Path ""$PSScriptRoot\Thermo.Active\wwwroot\config.development.json"" -Destination ""view"" -Recurse"
Write-Host "Copy view in Zip file"
$outFile = Test-Path ".\View"
@@ -26,6 +26,7 @@ namespace Client2020.BrowserTools
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_RECIPE_FOLDER_NAME = @"Recipes";
private const string THERMO_SCREENSHOT_PATH = @"C:\CMS\Screenshots";
private const string CMS_PATH = @"C:\CMS";
@@ -313,6 +314,32 @@ namespace Client2020.BrowserTools
return JsonConvert.SerializeObject("");
}
public string backupSubRecipes(String p, String folder)
{
if (!Directory.Exists(p))
{
return (JsonConvert.SerializeObject(new ErrorContainer("path_not_exists")));
}
folder = folder.Remove(0,THERMO_RECIPE_FOLDER_NAME.Length);
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 + folder), new DirectoryInfo(finalPath));
File.WriteAllText(finalPath + "\\data.json", JsonConvert.SerializeObject(new FolderBackup(folder)));
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)
{
@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
namespace Client2020.BrowserTools.Models
{
public class FolderBackup
{
public String AbsolutePath;
public FolderBackup(String Str)
{
this.AbsolutePath = Str;
}
}
}
+2 -1
View File
@@ -76,6 +76,7 @@
<Compile Include="BrowserTools\Models\Drive.cs" />
<Compile Include="BrowserTools\Models\Errors\ErrorContainer.cs" />
<Compile Include="BrowserTools\Models\File.cs" />
<Compile Include="BrowserTools\Models\FolderBackup.cs" />
<Compile Include="BrowserTools\Models\InfoFile.cs" />
<Compile Include="BrowserTools\Models\JobToStep.cs" />
<Compile Include="BrowserTools\Models\MetadataToFile.cs" />
@@ -179,7 +180,7 @@
<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>
<ErrorText>Questo progetto fa riferimento a uno o più pacchetti NuGet che non sono presenti in questo computer. Usare lo strumento di ripristino dei pacchetti NuGet per scaricarli. Per altre informazioni, vedere http://go.microsoft.com/fwlink/?LinkID=322105. Il file mancante è {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'))" />
@@ -51,6 +51,14 @@
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="Flir.Atlas.Image, Version=2.0.14266.1000, Culture=neutral, PublicKeyToken=caa391fd8e07c76b, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\Program Files (x86)\FLIR Systems\FLIR Atlas SDK 6\bin\x86\Flir.Atlas.Image.dll</HintPath>
</Reference>
<Reference Include="Flir.Atlas.Live, Version=2.0.14266.1000, Culture=neutral, PublicKeyToken=caa391fd8e07c76b, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\Program Files (x86)\FLIR Systems\FLIR Atlas SDK 6\bin\x86\Flir.Atlas.Live.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
@@ -1,4 +1,5 @@
using System;
using Flir.Atlas.Live.Device;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@@ -26,6 +27,11 @@ namespace Thermo.Active.Thermocamera
public static readonly string BASE_PATH = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
/// <summary>
/// Indica se la camera sia connessa
/// </summary>
public bool CameraIsConnected = false;
#endregion Public Fields
#region Public Constructors
@@ -33,12 +39,15 @@ namespace Thermo.Active.Thermocamera
/// <summary>
/// Init classe
/// </summary>
/// <param name="isLive">Indica aabilitazione alive straming vs load dati storici</param>
/// <param name="isLive">Indica aabilitazione a live straming vs load dati storici</param>
public ThermoCamComunicator(bool isLive)
{
// init classe controllo camera
TCamLive = new TCContr($"{Constants.WEBSITE_DIRECTORY}\\{Constants.THERMO_DATA_FOLDER}", $"{BASE_PATH}\\{Constants.CONFIG_DIRECTORY}");
// aggancio evento connesisone/disconnessione
TCamLive.eh_CameraConnStatusChanged += TCamLive_eh_CameraConnStatusChanged;
// avvio classe gestione thermocamera...
TCamLive.tryReloadConf();
@@ -49,6 +58,12 @@ namespace Thermo.Active.Thermocamera
}
}
private void TCamLive_eh_CameraConnStatusChanged(object sender, Flir.Atlas.Live.ConnectionStatusChangedEventArgs e)
{
// salvo stato connessione
CameraIsConnected = e.Status == ConnectionStatus.Connected;
}
#endregion Public Constructors
#region Protected Methods
@@ -308,6 +308,7 @@
"options_thermoregulator_9_setpoint": 0.0,
"options_thermoregulator_10_enabled": 0.0,
"options_thermoregulator_10_setpoint": 0.0
"extraction_main_drawing_enabled": 0.0
},
"ChannelSetpoints": {
"1": 0,
+52 -34
View File
@@ -1,37 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
enabledWord:
bit 0 : Move Absolute [Ack]
bit 1 : Jog inc + [Ack]
bit 2 : Jog inc - [Ack]
bit 3 : Allinea [Ack]
bit 4 : Probe (Ack)
bit 5 : SetSlavePosition (Ack)
bit 6 : Azzera (Ack)
bit 7 - bit14: not used
bit15 : Target pos
Asse slave : 6
Asse master gantry con proxy: 56
Asse master gantry senza proxy: 2152
Asse singolo con proxy: 16
Asse singolo senza proxy: 2112
-->
<axes>
<axis id="1" name="KI_Asse_W1" type="LINEAR" enabled="true" master="0" enabledWord="56" />
<axis id="2" name="KI_Asse_W2" type="LINEAR" enabled="true" master="1" enabledWord="6" />
<axis id="3" name="KI_Asse_W3" type="LINEAR" enabled="false" master="1" enabledWord="6" />
<axis id="4" name="KI_Asse_W4" type="LINEAR" enabled="false" master="1" enabledWord="6" />
<axis id="5" name="KI_Asse_Z1" type="LINEAR" enabled="true" master="0" enabledWord="56" />
<axis id="6" name="KI_Asse_Z2" type="LINEAR" enabled="true" master="5" enabledWord="6" />
<axis id="7" name="KI_Asse_Z3" type="LINEAR" enabled="true" master="5" enabledWord="6" />
<axis id="8" name="KI_Asse_Z4" type="LINEAR" enabled="true" master="5" enabledWord="6" />
<axis id="9" name="KI_Asse_R1" type="LINEAR" enabled="true" master="0" enabledWord="56" />
<axis id="10" name="KI_Asse_R2" type="LINEAR" enabled="false" master="9" enabledWord="6" />
<axis id="11" name="KI_Asse_S1" type="LINEAR" enabled="true" master="0" enabledWord="56" />
<axis id="12" name="KI_Asse_S2" type="LINEAR" enabled="false" master="11" enabledWord="6" />
<axis id="13" name="KI_Asse_CZ1" type="LINEAR" enabled="true" master="0" enabledWord="56" />
<axis id="14" name="KI_Asse_CZ2" type="LINEAR" enabled="true" master="13" enabledWord="6" />
<axis id="15" name="KI_Asse_CZ3" type="LINEAR" enabled="true" master="13" enabledWord="6" />
<axis id="16" name="KI_Asse_CZ4" type="LINEAR" enabled="true" master="13" enabledWord="6" />
<axis id="17" name="KI_Asse_U1" type="LINEAR" enabled="true" master="0" enabledWord="56" />
<axis id="18" name="KI_Asse_U2" type="LINEAR" enabled="true" master="17" enabledWord="6" />
<axis id="19" name="KI_Asse_P" type="LINEAR" enabled="true" master="0" enabledWord="56" />
<axis id="20" name="KI_Asse_X" type="LINEAR" enabled="true" master="0" enabledWord="56" />
<axis id="21" name="KI_Asse_CX1" type="LINEAR" enabled="true" master="0" enabledWord="72" />
<axis id="22" name="KI_Asse_CX2" type="LINEAR" enabled="true" master="21" enabledWord="6" />
<axis id="23" name="KI_Asse_CY1" type="LINEAR" enabled="true" master="0" enabledWord="72" />
<axis id="24" name="KI_Asse_CY2" type="LINEAR" enabled="true" master="24" enabledWord="6" />
<axis id="25" name="KI_Asse_F11" type="LINEAR" enabled="true" master="0" enabledWord="16" />
<axis id="26" name="KI_Asse_F12" type="LINEAR" enabled="false" master="25" enabledWord="16" />
<axis id="27" name="KI_Asse_F21" type="LINEAR" enabled="true" master="0" enabledWord="16" />
<axis id="28" name="KI_Asse_F22" type="LINEAR" enabled="false" master="27" enabledWord="16" />
<axis id="29" name="KI_Asse_F31" type="LINEAR" enabled="true" master="0" enabledWord="16" />
<axis id="30" name="KI_Asse_F32" type="LINEAR" enabled="false" master="29" enabledWord="16" />
<axis id="31" name="KI_Asse_F41" type="LINEAR" enabled="true" master="0" enabledWord="16" />
<axis id="32" name="KI_Asse_F42" type="LINEAR" enabled="false" master="31" enabledWord="16" />
<axis id="33" name="KI_Asse_E" type="LINEAR" enabled="true" master="0" enabledWord="16" />
<axis id="34" name="KI_Asse_M" type="LINEAR" enabled="false" master="0" enabledWord="0" />
<axis id="1" name="W1" type="LINEAR" enabled="true" master="0" enabledWord="56" />
<axis id="2" name="W2" type="LINEAR" enabled="true" master="1" enabledWord="6" />
<axis id="3" name="W3" type="LINEAR" enabled="false" master="1" enabledWord="6" />
<axis id="4" name="W4" type="LINEAR" enabled="false" master="1" enabledWord="6" />
<axis id="5" name="Z1" type="LINEAR" enabled="true" master="0" enabledWord="56" />
<axis id="6" name="Z2" type="LINEAR" enabled="true" master="5" enabledWord="6" />
<axis id="7" name="Z3" type="LINEAR" enabled="true" master="5" enabledWord="6" />
<axis id="8" name="Z4" type="LINEAR" enabled="true" master="5" enabledWord="6" />
<axis id="9" name="R1" type="LINEAR" enabled="true" master="0" enabledWord="16" />
<axis id="10" name="R2" type="LINEAR" enabled="false" master="9" enabledWord="6" />
<axis id="11" name="S1" type="LINEAR" enabled="true" master="0" enabledWord="16" />
<axis id="12" name="S2" type="LINEAR" enabled="false" master="11" enabledWord="6" />
<axis id="13" name="CZ1" type="LINEAR" enabled="true" master="0" enabledWord="56" />
<axis id="14" name="CZ2" type="LINEAR" enabled="true" master="13" enabledWord="6" />
<axis id="15" name="CZ3" type="LINEAR" enabled="true" master="13" enabledWord="6" />
<axis id="16" name="CZ4" type="LINEAR" enabled="true" master="13" enabledWord="6" />
<axis id="17" name="U1" type="LINEAR" enabled="true" master="0" enabledWord="56" />
<axis id="18" name="U2" type="LINEAR" enabled="true" master="17" enabledWord="6" />
<axis id="19" name="P" type="LINEAR" enabled="true" master="0" enabledWord="16" />
<axis id="20" name="X" type="LINEAR" enabled="true" master="0" enabledWord="16" />
<axis id="21" name="CX1" type="LINEAR" enabled="true" master="0" enabledWord="2152" />
<axis id="22" name="CX2" type="LINEAR" enabled="true" master="21" enabledWord="6" />
<axis id="23" name="CY1" type="LINEAR" enabled="true" master="0" enabledWord="2152" />
<axis id="24" name="CY2" type="LINEAR" enabled="true" master="23" enabledWord="6" />
<axis id="25" name="F11" type="LINEAR" enabled="true" master="0" enabledWord="2112" />
<axis id="26" name="F12" type="LINEAR" enabled="false" master="25" enabledWord="6" />
<axis id="27" name="F21" type="LINEAR" enabled="true" master="0" enabledWord="2112" />
<axis id="28" name="F22" type="LINEAR" enabled="false" master="27" enabledWord="6" />
<axis id="29" name="F31" type="LINEAR" enabled="true" master="0" enabledWord="2112" />
<axis id="30" name="F32" type="LINEAR" enabled="false" master="29" enabledWord="6" />
<axis id="31" name="F41" type="LINEAR" enabled="true" master="0" enabledWord="2112" />
<axis id="32" name="F42" type="LINEAR" enabled="false" master="31" enabledWord="6" />
<axis id="33" name="E" type="LINEAR" enabled="true" master="0" enabledWord="16" />
<axis id="34" name="M" type="LINEAR" enabled="false" master="0" enabledWord="0" />
</axes>
@@ -3902,4 +3902,15 @@
<scaleFactor>1</scaleFactor>
<numDec>1</numDec>
</parameter>
<parameter>
<id>307</id>
<category>Extraction</category>
<subCategory_1>Main</subCategory_1>
<subCategory_2></subCategory_2>
<name>Drawing_Enabled</name>
<description>Abilitazione valvola imbutitura</description>
<format>boolean</format>
<scaleFactor>1</scaleFactor>
<numDec>1</numDec>
</parameter>
</recipe>
+12 -4
View File
@@ -4,6 +4,7 @@
<ncVendor>S7NET</ncVendor>
<!-- NO_NC/DEMO/FANUC/SIEMENS/OSAI/S7NET -->
<showNcHMI>false</showNcHMI>
<!--<ncIpAddress>192.168.139.1</ncIpAddress>-->
<ncIpAddress>192.168.0.102</ncIpAddress>
<ncPort>102</ncPort>
<machineModel>Thermo 2020</machineModel>
@@ -31,6 +32,8 @@
<CMSConnectReady>true</CMSConnectReady>
<maxAlarmsRows>50000</maxAlarmsRows>
<alarmToDelete>5000</alarmToDelete>
<maxSheetHistoryRows>10000</maxSheetHistoryRows>
<sheetHistoryToDelete>500</sheetHistoryToDelete>
</serverConfig>
<extSoftwares>
<software>
@@ -113,6 +116,10 @@
<key>RangeTempMax</key>
<value>100</value>
</entry>
<entry>
<key>EnableThermocam</key>
<value>true</value>
</entry>
</additionalParameters>
<unitOfMeasures>
<unitOfMeasure id="0" value="" />
@@ -129,24 +136,25 @@
<thread name="axis" value="200" />
<thread name="channelsIoFast" value="300" />
<thread name="channelsIoSlow" value="5000" />
<thread name="area" value="500" />
<thread name="area" value="2500" />
<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="m154" value="1000" />
<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="4000" />
<thread name="recipe" value="1000" />
<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="warmers" value="2000" />
<thread name="watchdog" value="250" />
<thread name="stats" value="2000" />
</sampling>
</serverConfig>
@@ -42,6 +42,8 @@
<xs:element name="MTCApplicationName" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="maxAlarmsRows" type="xs:int" minOccurs="1" maxOccurs="1"/>
<xs:element name="alarmToDelete" type="xs:int" minOccurs="1" maxOccurs="1"/>
<xs:element name="maxSheetHistoryRows" type="xs:int" minOccurs="1" maxOccurs="1"/>
<xs:element name="sheetHistoryToDelete" type="xs:int" minOccurs="1" maxOccurs="1"/>
<xs:element name="CMSConnectReady" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
</xs:all>
</xs:complexType>
@@ -129,7 +129,8 @@ namespace Thermo.Active.Config
Name = x.Attribute("name").Value,
MasterId = Convert.ToInt16(x.Attribute("master").Value),
EnabledWord = Convert.ToInt16(x.Attribute("enabledWord").Value),
Type = GetTActAxes_Type(x.Attribute("type").Value)
Type = GetTActAxes_Type(x.Attribute("type").Value),
IsVisible = Convert.ToBoolean(x.Attribute("enabled").Value)
})
.ToList();
}
@@ -1032,6 +1033,8 @@ namespace Thermo.Active.Config
MTCApplicationName = x.Element("MTCApplicationName").Value,
MaxAlarmsRows = Convert.ToInt32(x.Element("maxAlarmsRows").Value),
AlarmToDelete = Convert.ToInt32(x.Element("alarmToDelete").Value),
MaxSheetHistoryRows = Convert.ToInt32(x.Element("maxSheetHistoryRows").Value),
SheetHistoryToDelete = Convert.ToInt32(x.Element("sheetHistoryToDelete").Value),
CmsConnectReady = Convert.ToBoolean(x.Element("CMSConnectReady").Value)
}).FirstOrDefault();
+291 -131
View File
@@ -49,6 +49,7 @@ public static class ThreadsFunctions
public static int modulesRtCounter = 0;
public static int recipeRtCounter = 0;
public static bool reconnectionIsRunning = false;
public static bool forcetakeSnapshot = false;
#endregion Public Fields
@@ -193,34 +194,45 @@ public static class ThreadsFunctions
StatReset();
NcAdapter ncAdapter = new NcAdapter();
CmsError libraryError = NO_ERROR;
// Run loop until NC is connected
while (!ncAdapter.numericalControl.NC_IsConnected())
try
{
// Try reconnection
libraryError = ncAdapter.Connect();
if (libraryError.errorCode == CMS_ERROR_CODES.SIEMENS_ENVIRONMENT_NOT_FOUND || libraryError.errorCode == CMS_ERROR_CODES.SIEMENS_HMI_NOT_RUNNING || libraryError.errorCode == CMS_ERROR_CODES.OSAI_TT_FOLDER_NOT_FOUND)
ManageLibraryError(libraryError);
else if (libraryError.errorCode != CMS_ERROR_CODES.OK)
// Run loop until NC is connected
while (!ncAdapter.numericalControl.NC_IsConnected())
{
ncAdapter.Dispose();
// Try reconnection
libraryError = ncAdapter.Connect();
if (libraryError.errorCode == CMS_ERROR_CODES.SIEMENS_ENVIRONMENT_NOT_FOUND || libraryError.errorCode == CMS_ERROR_CODES.SIEMENS_HMI_NOT_RUNNING || libraryError.errorCode == CMS_ERROR_CODES.OSAI_TT_FOLDER_NOT_FOUND)
ManageLibraryError(libraryError);
else if (libraryError.errorCode != CMS_ERROR_CODES.OK)
{
ncAdapter.Dispose();
}
// Send status to UI
MessageServices.Current.Publish(SEND_NC_STATUS_UI, null, ncAdapter.numericalControl.NC_IsConnected());
// Send status to signalr
MessageServices.Current.Publish(SEND_NC_STATUS, null, ncAdapter.numericalControl.NC_IsConnected());
Thread.Sleep(1000);
}
// Send status to UI
MessageServices.Current.Publish(SEND_NC_STATUS_UI, null, ncAdapter.numericalControl.NC_IsConnected());
// Send status to signalr
MessageServices.Current.Publish(SEND_NC_STATUS, null, ncAdapter.numericalControl.NC_IsConnected());
if (!libraryError.IsError())
{
if (ServerStartupConfig.AutoOpenCmsClient)
StartCMSClient();
Thread.Sleep(1000);
// Start/Restart NC threads
ThreadsHandler.StartWorkers();
reconnectionIsRunning = false;
}
}
if (!libraryError.IsError())
catch (ThreadAbortException ex)
{
if (ServerStartupConfig.AutoOpenCmsClient)
StartCMSClient();
// Start/Restart NC threads
ThreadsHandler.StartWorkers();
reconnectionIsRunning = false;
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
@@ -230,21 +242,35 @@ public static class ThreadsFunctions
internal static void StatThread()
{
int samplePeriod = samplMsec("stats") > 0 ? samplMsec("stats") : 1000;
while (true)
{
long totTime = 0;
foreach (var value in Counter)
{
if (ThreadsHandler.RunningThreadStatus.ContainsKey(value.Key) && Counter[value.Key] != 0)
{
ThreadsHandler.RunningThreadStatus[value.Key] = $"{(Timers[value.Key] / Counter[value.Key])} ms x {Counter[value.Key]}";
totTime += Timers[value.Key];
ThreadsHandler.RunningThreadStatus[value.Key] = $"{((double)Timers[value.Key] / samplePeriod):P1} | {(Timers[value.Key] / Counter[value.Key])} ms x {Counter[value.Key]}";
Timers[value.Key] = 0;
Counter[value.Key] = 0;
}
}
// aggiungo totale
string grandTotal = $"{((double)totTime / samplePeriod):P1} | {totTime} ms";
if (ThreadsHandler.RunningThreadStatus.ContainsKey(" TOTAL"))
{
ThreadsHandler.RunningThreadStatus[" TOTAL"] = grandTotal;
}
else
{
ThreadsHandler.RunningThreadStatus.Add(" TOTAL", grandTotal);
}
MessageServices.Current.Publish(SEND_THREADS_STATUS, null, ThreadsHandler.RunningThreadStatus);
Thread.Sleep(2000);
Thread.Sleep(samplePeriod);
}
}
@@ -312,6 +338,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
/// <summary>
@@ -325,77 +355,106 @@ public static class ThreadsFunctions
public static void ManageFlirCamera()
{
NcAdapter ncAdapter = new NcAdapter();
ThermoCamComunicator TCCom = new ThermoCamComunicator(true);
Stopwatch sw = new Stopwatch();
try
// verifica abilitazione thermocam
if (NcAdapter.EnableThermocam)
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
ManageLibraryError(libraryError);
// avvio oggetto thermocam
ThermoCamComunicator TCCom = new ThermoCamComunicator(true);
Stopwatch sw = new Stopwatch();
forcetakeSnapshot = false;
while (true)
RegistrationInfo takeReginfo = MessageServices.Current.Subscribe(TAKE_SNAPSHOT_THERMO, (a, b) =>
{
bool flirImageReq = false;
sw.Restart();
ThreadsFunctions.forcetakeSnapshot = true;
});
// Check if client is connected
if (ncAdapter.numericalControl.NC_IsConnected())
try
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
ManageLibraryError(libraryError);
while (true)
{
// check if there is a photo request pending
libraryError = ncAdapter.checkFlirImageRequest(out flirImageReq);
if (libraryError.IsError())
ManageLibraryError(libraryError);
bool flirImageReq = false;
sw.Restart();
if (flirImageReq)
// Check if client is connected
if (ncAdapter.numericalControl.NC_IsConnected())
{
bool done = false;
// if requested --> give ack!
ncAdapter.ManageFlirStrobe();
// requesto photo from library
NcAdapter.lastThermoImage = TCCom.takePicture();
done = !string.IsNullOrEmpty(NcAdapter.lastThermoImage);
if (done)
// check if there is a photo request pending
libraryError = ncAdapter.checkFlirImageRequest(out flirImageReq);
if (libraryError.IsError())
ManageLibraryError(libraryError);
if (flirImageReq || forcetakeSnapshot)
{
// init
List<Thermo.Cam.Utils.MeasurePoint> measuredpoints = new List<Thermo.Cam.Utils.MeasurePoint>();
Dictionary<int, double> actualTemp = new Dictionary<int, double>();
Dictionary<int, ThermoPoint> chPoints = new Dictionary<int, ThermoPoint>();
// recupero punti centrali resistenze
ncAdapter.GetWarmersChannelCenterPoints(out chPoints);
// richiesta temperature per i punti
done = TCCom.readMultiTemperatures("", chPoints, out measuredpoints);
// converto in actualTemp
foreach (var item in measuredpoints)
forcetakeSnapshot = false;
bool done = false;
// if requested --> give ack!
if (flirImageReq)
ncAdapter.ManageFlirStrobe();
// requesto photo from library
NcAdapter.lastThermoImage = TCCom.takePicture();
done = !string.IsNullOrEmpty(NcAdapter.lastThermoImage);
if (done)
{
actualTemp.Add(item.Id, item.Temperature);
// init
List<Thermo.Cam.Utils.MeasurePoint> measuredpoints = new List<Thermo.Cam.Utils.MeasurePoint>();
Dictionary<int, double> actualTemp = new Dictionary<int, double>();
Dictionary<int, ThermoPoint> chPoints = new Dictionary<int, ThermoPoint>();
// recupero punti centrali resistenze
ncAdapter.GetWarmersChannelCenterPoints(out chPoints);
// richiesta temperature per i punti
done = TCCom.readMultiTemperatures("", chPoints, out measuredpoints);
// converto in actualTemp
foreach (var item in measuredpoints)
{
actualTemp.Add(item.Id, item.Temperature);
}
// salvo dati temp sul PLC
ncAdapter.WriteRecipeWarmChTCamTempAct(actualTemp);
NcAdapter.lastImageTaken = DateTime.Now;
// give PLC strobe for uploaded Actual TEMP from image
if(flirImageReq)
ncAdapter.SendTCamImageReadyStrb();
MessageServices.Current.Publish(SEND_NEWTCAMIMAGE, null, NcAdapter.lastImageTaken);
}
// salvo dati temp sul PLC
ncAdapter.WriteRecipeWarmChTCamTempAct(actualTemp);
// give PLC strobe for uploaded Actual TEMP from image
ncAdapter.SendTCamImageReadyStrb();
}
// salvo status thermocam...
NcAdapter.cameraIsConnected = TCCom.CameraIsConnected;
}
else
RestoreConnection();
sw.Stop();
// Update thread timer
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(samplMsec("FlirCamera"), (int)sw.ElapsedMilliseconds));
}
else
RestoreConnection();
sw.Stop();
// Update thread timer
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(samplMsec("FlirCamera"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
{
ncAdapter.Dispose();
}
finally
{
// chiudo thermocam
TCCom.Dispose();
catch (ThreadAbortException)
{
ncAdapter.Dispose();
// chiudo thermocam
TCCom.Dispose();
}
finally
{
MessageServices.Current.UnSubscribe(takeReginfo);
ncAdapter.Dispose();
// chiudo thermocam
TCCom.Dispose();
}
}
}
@@ -470,6 +529,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void ManageWatchdog()
@@ -516,6 +579,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void ReadAlarms()
@@ -560,6 +627,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void ReadAreaData()
@@ -602,6 +673,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
/// <summary>
@@ -655,6 +730,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
/// <summary>
@@ -704,6 +783,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void ReadEnabledFunctionality()
@@ -748,6 +831,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void ReadExpiredMaintenances()
@@ -802,6 +889,11 @@ public static class ThreadsFunctions
}
catch (Exception ex)
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
@@ -846,6 +938,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void ReadM154Data()
@@ -1020,6 +1116,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void ReadMComandsData()
@@ -1066,6 +1166,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void ReadModulesData()
@@ -1108,6 +1212,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void ReadPowerOnData()
@@ -1150,6 +1258,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void ReadProcessesPPStatus()
@@ -1196,6 +1308,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void ReadProdCycleData()
@@ -1239,6 +1355,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void ReadProdInfoData()
@@ -1282,6 +1402,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void ReadProdPanelData()
@@ -1325,6 +1449,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void ReadRecipeData()
@@ -1351,39 +1479,46 @@ public static class ThreadsFunctions
// Check if client is connected
if (ncAdapter.numericalControl.NC_IsConnected())
{
// Get new data from PLC
libraryError = ncAdapter.ReadRecipeData(onlyRt, false, out Dictionary<string, DTORecipeParam> currRecipe);
if (libraryError.IsError())
ManageLibraryError(libraryError);
MessageServices.Current.Publish(SEND_THERMO_RECIPE_FULL, null, currRecipe);
// ora gestisco la overview!
libraryError = ncAdapter.GetRecipeOverview(out Dictionary<RecipeSection, RecipeCatStatus> currOverview);
if (libraryError.IsError())
ManageLibraryError(libraryError);
MessageServices.Current.Publish(SEND_THERMO_RECIPE_OVERWIEW, null, currOverview);
// ora gestisco la lettura della overview di "modificata
DTORecipeStatus message = new DTORecipeStatus()
// controllo su redis che NON sia bloccata lettura ricetta..
if (!RedisController.getRecipeReadSem)
{
recipeName = NcAdapter.RecipeLiveData.RecipeName,
hasChanged = NcAdapter.RecipeLiveData.hasChanged
};
// Get new data from PLC
libraryError = ncAdapter.ReadRecipeData(onlyRt, false, out Dictionary<string, DTORecipeParam> currRecipe);
if (libraryError.IsError())
ManageLibraryError(libraryError);
MessageServices.Current.Publish(SEND_THERMO_RECIPE_CHANGED, null, message);
MessageServices.Current.Publish(SEND_THERMO_RECIPE_FULL, null, currRecipe);
// verifico se dal PLC è segnalato che i setpointHMI sono invalidati, nel qual caso INVIO
bool setpointHmiInvalidated = false;
libraryError = ncAdapter.checkSetpointInvalidated(out setpointHmiInvalidated);
if (setpointHmiInvalidated)
{
// ora gestisco l'ack della richiesta
libraryError = ncAdapter.doAckSetpointInvalidated();
// ora gestisco la overview!
libraryError = ncAdapter.GetRecipeOverview(out Dictionary<RecipeSection, RecipeCatStatus> currOverview);
if (libraryError.IsError())
ManageLibraryError(libraryError);
MessageServices.Current.Publish(SEND_THERMO_RECIPE_OVERWIEW, null, currOverview);
// ora gestisco la lettura della overview di "modificata
DTORecipeStatus message = new DTORecipeStatus()
{
recipeName = NcAdapter.RecipeLiveData.RecipeName,
hasChanged = NcAdapter.RecipeLiveData.hasChanged
};
MessageServices.Current.Publish(SEND_THERMO_RECIPE_CHANGED, null, message);
// verifico se dal PLC è segnalato che i setpointHMI sono invalidati, nel qual caso INVIO
bool setpointHmiInvalidated = false;
libraryError = ncAdapter.checkSetpointInvalidated(out setpointHmiInvalidated);
if (setpointHmiInvalidated)
{
// ora gestisco l'ack della richiesta
libraryError = ncAdapter.doAckSetpointInvalidated();
}
// pubblico booleana dei setpointHMI invalidati
MessageServices.Current.Publish(SEND_THERMO_RECIPE_SETPOINTHMI_CHANGED, null, setpointHmiInvalidated);
}
else
{
}
// pubblico booleana dei setpointHMI invalidati
MessageServices.Current.Publish(SEND_THERMO_RECIPE_SETPOINTHMI_CHANGED, null, setpointHmiInvalidated);
}
else
RestoreConnection();
@@ -1400,6 +1535,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void ReadScadaData()
@@ -1445,6 +1584,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void ReadUserSoftKeysData()
@@ -1489,6 +1632,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void ReadWarmersData()
@@ -1506,33 +1653,38 @@ public static class ThreadsFunctions
bool useCache = false;
while (true)
{
sw.Restart();
// Check if client is connected
if (ncAdapter.numericalControl.NC_IsConnected())
// controllo su redis che NON sia bloccata lettura ricetta..
if (!RedisController.getWarmersReadSem)
{
if (cacheWarmers)
sw.Restart();
// Check if client is connected
if (ncAdapter.numericalControl.NC_IsConnected())
{
// every 10 reads all data...
useCache = (readCount != 0);
readCount++;
// ciclo resettato ogni 20
readCount = readCount % 20;
if (cacheWarmers)
{
// every 10 reads all data...
useCache = (readCount != 0);
readCount++;
// ciclo resettato ogni 20
readCount = readCount % 20;
}
// Get new data from PLC
libraryError = ncAdapter.ReadWarmers(useCache, out Dictionary<int, DTOWarmers> currWarmers);
if (libraryError.IsError())
ManageLibraryError(libraryError);
// pubblico
MessageServices.Current.Publish(SEND_THERMO_WARMERS_DATA, null, currWarmers);
}
// Get new data from PLC
libraryError = ncAdapter.ReadWarmers(useCache, out Dictionary<int, DTOWarmers> currWarmers);
if (libraryError.IsError())
ManageLibraryError(libraryError);
// pubblico
MessageServices.Current.Publish(SEND_THERMO_WARMERS_DATA, null, currWarmers);
else
RestoreConnection();
sw.Stop();
// Update thread timer
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
}
else
RestoreConnection();
sw.Stop();
// Update thread timer
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(samplMsec("warmers"), (int)sw.ElapsedMilliseconds));
}
@@ -1541,6 +1693,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void RestoreConnection()
@@ -1634,6 +1790,10 @@ public static class ThreadsFunctions
{
ncAdapter.Dispose();
}
finally
{
ncAdapter.Dispose();
}
}
public static void StartCMSClient()
-4
View File
@@ -38,10 +38,6 @@
<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>
<dependentAssembly>
<assemblyIdentity name="S7.Net" publicKeyToken="d5812d469e84c693" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-0.8.1.0" newVersion="0.8.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
-4
View File
@@ -57,10 +57,6 @@
<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>
<dependentAssembly>
<assemblyIdentity name="S7.Net" publicKeyToken="d5812d469e84c693" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-0.8.1.0" newVersion="0.8.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
@@ -0,0 +1,83 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Thermo.Active.Model.DatabaseModels;
using static Thermo.Active.Config.ServerConfig;
namespace Thermo.Active.Database.Controllers
{
public class HistorySheetsController : IDisposable
{
private DatabaseContext dbCtx;
public HistorySheetsController()
{
// Initialize database context
dbCtx = new DatabaseContext();
}
public void Dispose()
{
dbCtx.Dispose();
}
public HistorySheetModel Create(string recipe, short piece, float value1, float value2, float value3, ushort typeval)
{
HistorySheetModel mod = new HistorySheetModel()
{
DtEvent = DateTime.Now,
RecipeName = recipe,
NumDone = piece,
FirstVal = value1,
SecondVal = value2,
ThirdVal = value3,
TypeVal = typeval
};
// Add to database
dbCtx.HistorySheet.Add(mod);
// Commit changes
dbCtx.SaveChanges();
return mod;
}
public void Clean()
{
if (this.count() >= ServerStartupConfig.MaxSheetHistoryRows)
{
dbCtx.Database.ExecuteSqlCommand("DELETE FROM historysheets LIMIT {0}", ServerStartupConfig.SheetHistoryToDelete);
}
}
public List<HistorySheetModel> GetData(int start, int number)
{
// Get page numbers
return dbCtx
.HistorySheet
.OrderByDescending(x => x.DtEvent).Skip(start).Take(number).ToList();
}
public List<HistorySheetModel> GetData()
{
// Get page numbers
return dbCtx
.HistorySheet
.OrderByDescending(x => x.DtEvent).ToList();
}
public int count()
{
// Get page numbers
return dbCtx
.HistorySheet.Count();
}
}
}
@@ -21,6 +21,12 @@ namespace Thermo.Active.Database.Controllers
// Initialize database context
dbCtx = new DatabaseContext();
}
public void Dispose()
{
// Clear database context
dbCtx.Dispose();
}
#endregion Public Constructors
@@ -80,11 +86,6 @@ namespace Thermo.Active.Database.Controllers
return prodData;
}
public void Dispose()
{
// Clear database context
dbCtx.Dispose();
}
/// <summary>
/// Get record by NumDone
@@ -36,6 +36,12 @@ namespace Thermo.Active.Database.Controllers
private const string machineEventKpis = "Events:Kpis";
private const string machineMessagePath = "Events:Messages";
private const string thermoSemRecipe = "Thermo:Semaphore:All";
private const string thermoSemWarmers = "Thermo:Semaphore:All";
//private const string thermoSemRecipe = "Thermo:Semaphore:Recipe";
//private const string thermoSemWarmers = "Thermo:Semaphore:Warmers";
public static void WriteProductionNotification(uint ProductionProcess, string Notification)
{
string redisHash = redUtil.man.redHash(redisNotificationAddress).Replace("%NN%", ProductionProcess.ToString("00"));
@@ -246,5 +252,89 @@ namespace Thermo.Active.Database.Controllers
return true;
}
/// <summary>
/// Imposta semaforo Recipe
/// </summary>
/// <param name="doLock">true: imposto lock per 5 sec, false: tolgo lock (stringa vuota)</param>
/// <returns></returns>
public static bool setRecipeReadSem(bool doLock)
{
return setSemaphore(doLock, redUtil.man.redHash(thermoSemRecipe));
}
/// <summary>
/// Restituisce semaforo Recipe
/// </summary>
/// <returns></returns>
public static bool getRecipeReadSem
{
get
{
return getSemaphore(redUtil.man.redHash(thermoSemRecipe));
}
}
/// <summary>
/// Imposta semaforo Warmers
/// </summary>
/// <param name="doLock">true: imposto lock per 5 sec, false: tolgo lock (stringa vuota)</param>
/// <returns></returns>
public static bool setWarmersReadSem(bool doLock)
{
return setSemaphore(doLock, redUtil.man.redHash(thermoSemWarmers));
}
/// <summary>
/// Restituisce semaforo Warmers
/// </summary>
/// <returns></returns>
public static bool getWarmersReadSem
{
get
{
return getSemaphore(redUtil.man.redHash(thermoSemWarmers));
}
}
/// <summary>
/// Gestione generica SET semaforo
/// </summary>
/// <param name="doLock"></param>
/// <param name="redisHash"></param>
/// <returns></returns>
private static bool setSemaphore(bool doLock, string redisHash)
{
bool answ = true;
int ttlSec = 5;
string rawData = $"{DateTime.Now}";
try
{
if (doLock)
{
// imposto lock
answ = redUtil.man.setRSV(redisHash, rawData, ttlSec);
}
else
{
// metto empty string a 1 sec
answ = redUtil.man.setRSV(redisHash, "", 1);
}
}
catch
{ }
return answ;
}
/// <summary>
/// Gestione generica GET semafoto
/// </summary>
/// <param name="redisHash"></param>
/// <returns></returns>
private static bool getSemaphore(string redisHash)
{
bool answ = true;
string rawData = redUtil.man.getRSV(redisHash);
// se non nulla --> ho semaforo!
answ = !string.IsNullOrEmpty(rawData);
return answ;
}
}
}
+1 -1
View File
@@ -44,7 +44,7 @@ namespace Thermo.Active.Database
// thermo!
public DbSet<ProdInfoModel> ProdInfo { get; set; }
public DbSet<HistorySheetModel> HistorySheet { get; set; }
// Create migration string
public static string CONNECTION_STRING = "Server = " + "localhost" + "; Database=" + DATABASE_NAME + ";Uid=" + DATABASE_USER + ";Pwd=" + DATABASE_PWD + ";";
@@ -0,0 +1,29 @@
// <auto-generated />
namespace Thermo.Active.Database.Migrations
{
using System.CodeDom.Compiler;
using System.Data.Entity.Migrations;
using System.Data.Entity.Migrations.Infrastructure;
using System.Resources;
[GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")]
public sealed partial class HistorySheets : IMigrationMetadata
{
private readonly ResourceManager Resources = new ResourceManager(typeof(HistorySheets));
string IMigrationMetadata.Id
{
get { return "202103191608500_HistorySheets"; }
}
string IMigrationMetadata.Source
{
get { return null; }
}
string IMigrationMetadata.Target
{
get { return Resources.GetString("Target"); }
}
}
}
@@ -0,0 +1,29 @@
namespace Thermo.Active.Database.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class HistorySheets : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.HistorySheets",
c => new
{
DtEvent = c.DateTime(nullable: false, precision: 0),
Recipe = c.String(unicode: false),
FirstVal = c.Single(nullable: false),
SecondVal = c.Single(nullable: false),
ThirdVal = c.Single(nullable: false),
})
.PrimaryKey(t => t.DtEvent);
}
public override void Down()
{
DropTable("dbo.HistorySheets");
}
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,29 @@
// <auto-generated />
namespace Thermo.Active.Database.Migrations
{
using System.CodeDom.Compiler;
using System.Data.Entity.Migrations;
using System.Data.Entity.Migrations.Infrastructure;
using System.Resources;
[GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")]
public sealed partial class HistorySheetsCycle : IMigrationMetadata
{
private readonly ResourceManager Resources = new ResourceManager(typeof(HistorySheetsCycle));
string IMigrationMetadata.Id
{
get { return "202103191626072_HistorySheetsCycle"; }
}
string IMigrationMetadata.Source
{
get { return null; }
}
string IMigrationMetadata.Target
{
get { return Resources.GetString("Target"); }
}
}
}
@@ -0,0 +1,18 @@
namespace Thermo.Active.Database.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class HistorySheetsCycle : DbMigration
{
public override void Up()
{
AddColumn("dbo.HistorySheets", "NumDone", c => c.Short(nullable: false));
}
public override void Down()
{
DropColumn("dbo.HistorySheets", "NumDone");
}
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,29 @@
// <auto-generated />
namespace Thermo.Active.Database.Migrations
{
using System.CodeDom.Compiler;
using System.Data.Entity.Migrations;
using System.Data.Entity.Migrations.Infrastructure;
using System.Resources;
[GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")]
public sealed partial class addedTypeValHistory : IMigrationMetadata
{
private readonly ResourceManager Resources = new ResourceManager(typeof(addedTypeValHistory));
string IMigrationMetadata.Id
{
get { return "202103221323362_addedTypeValHistory"; }
}
string IMigrationMetadata.Source
{
get { return null; }
}
string IMigrationMetadata.Target
{
get { return Resources.GetString("Target"); }
}
}
}
@@ -0,0 +1,18 @@
namespace Thermo.Active.Database.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class addedTypeValHistory : DbMigration
{
public override void Up()
{
AddColumn("dbo.HistorySheets", "TypeVal", c => c.Int(nullable: false));
}
public override void Down()
{
DropColumn("dbo.HistorySheets", "TypeVal");
}
}
}
File diff suppressed because one or more lines are too long
@@ -124,6 +124,7 @@
<ItemGroup>
<Compile Include="Controllers\AlarmsController.cs" />
<Compile Include="Controllers\FunctionsAccessController.cs" />
<Compile Include="Controllers\HistorySheetsController.cs" />
<Compile Include="Controllers\ProdInfoController.cs" />
<Compile Include="Controllers\MachinesController.cs" />
<Compile Include="Controllers\MaintenancesController.cs" />
@@ -158,6 +159,18 @@
<Compile Include="Migrations\202102171753226_Added_ThermoImage_prodInfo.Designer.cs">
<DependentUpon>202102171753226_Added_ThermoImage_prodInfo.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\202103191608500_HistorySheets.cs" />
<Compile Include="Migrations\202103191608500_HistorySheets.Designer.cs">
<DependentUpon>202103191608500_HistorySheets.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\202103191626072_HistorySheetsCycle.cs" />
<Compile Include="Migrations\202103191626072_HistorySheetsCycle.Designer.cs">
<DependentUpon>202103191626072_HistorySheetsCycle.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\202103221323362_addedTypeValHistory.cs" />
<Compile Include="Migrations\202103221323362_addedTypeValHistory.Designer.cs">
<DependentUpon>202103221323362_addedTypeValHistory.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\Configuration.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Redis\redUtil.cs" />
@@ -212,6 +225,15 @@
<EmbeddedResource Include="Migrations\202102171753226_Added_ThermoImage_prodInfo.resx">
<DependentUpon>202102171753226_Added_ThermoImage_prodInfo.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Migrations\202103191608500_HistorySheets.resx">
<DependentUpon>202103191608500_HistorySheets.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Migrations\202103191626072_HistorySheetsCycle.resx">
<DependentUpon>202103191626072_HistorySheetsCycle.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Migrations\202103221323362_addedTypeValHistory.resx">
<DependentUpon>202103221323362_addedTypeValHistory.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
@@ -8,6 +8,7 @@ namespace Thermo.Active.Model.ConfigModels
public int Id;
public string Name { get; set; }
public bool IsSelectable { get; set; } = true;
public bool IsVisible { get; set; }
public TACT_AXES_TYPE Type { get; set; }
public int MasterId { get; set; } = 0;
public int EnabledWord { get; set; } = 0;
@@ -18,5 +18,9 @@ namespace Thermo.Active.Model.ConfigModels
public int MaxAlarmsRows { get; set; }
public int AlarmToDelete { get; set; }
public int MaxSheetHistoryRows { get; set; }
public int SheetHistoryToDelete { get; set; }
}
}
+2
View File
@@ -23,6 +23,7 @@ namespace Thermo.Active.Model
public const string AXES_CONFIG_PATH = CONFIG_DIRECTORY + "axesConfig.xml";
public const string AXES_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + @"axesConfigValidator.xsd";
public const string BROADCAST_DATA = "BROADCAST_DATA";
public const string TAKE_SNAPSHOT_THERMO = "TAKE_SNAPSHOT_THERMO";
// File paths
public const string CLIENT_EXE_NAME = @"Active_Client.exe";
@@ -104,6 +105,7 @@ namespace Thermo.Active.Model
public const string SEND_AXIS_INFO = "SEND_AXIS_INFO";
public const string SEND_CHANNELS_IO_DATA = "SEND_CHANNELS_IO_DATA";
public const string SEND_NEWTCAMIMAGE = "SEND_NEWTCAMIMAGE";
public const string SEND_CMSCONNECT_GW_REBOOT_STATUS = "SEND_CMSCONNECT_GW_REBOOT_STATUS";
public const string SEND_ERROR_TO_UI = "SEND_ERROR_TO_UI";
public const string SEND_EXPIRED_MAINTENANCES_DATA = "SEND_EXPIRED_MAINTENANCES_DATA";
@@ -18,6 +18,10 @@ namespace Thermo.Active.Model.DTOModels.ThAxes
/// </summary>
public string name { get; set; } = "";
/// <summary>
/// visible in the page
/// </summary>
public bool visible { get; set; } = false;
/// <summary>
/// Master (0--> is master, > 0 --> is slave)
/// </summary>
public int masterID { get; set; } = 0;
@@ -30,11 +30,21 @@ namespace Thermo.Active.Model.DTOModels.ThWarmers
/// </summary>
public bool ThermoCamOnOff { get; set; } = false;
/// <summary>
/// Stato connessione ThermoCamera (in rete)
/// </summary>
public bool ThermoCamConnected { get; set; } = false;
/// <summary>
/// Opzione ThermoCamera (set by PLC)
/// </summary>
public bool ThermoOptionActive { get; set; } = false;
/// <summary>
/// Data ultima acquisizione
/// </summary>
public DateTime LastTakenImage { get; set; } = new DateTime(0);
#endregion Public Properties
#region Public Methods
@@ -59,7 +69,9 @@ namespace Thermo.Active.Model.DTOModels.ThWarmers
return false;
if (RangeTemperature != item.RangeTemperature)
return false;
if (LastTakenImage != item.LastTakenImage)
return false;
return true;
}
@@ -0,0 +1,38 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Thermo.Active.Model.DatabaseModels
{
[Table("HistorySheets")]
public class HistorySheetModel
{
#region Public Properties
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column("DtEvent", Order = 0)]
public DateTime DtEvent { get; set; }
[Column("Recipe")]
public string RecipeName { get; set; }
[Column("NumDone")]
public short NumDone { get; set; }
[Column("FirstVal")]
public float FirstVal { get; set; }
[Column("SecondVal")]
public float SecondVal { get; set; }
[Column("ThirdVal")]
public float ThirdVal { get; set; }
[Column("TypeVal")]
public int TypeVal { get; set; }
#endregion Public Properties
}
}
@@ -85,6 +85,7 @@
<Compile Include="DatabaseModels\AlarmNoteModel.cs" />
<Compile Include="DatabaseModels\AlarmOccurrencesModel.cs" />
<Compile Include="DatabaseModels\AlarmUserModel.cs" />
<Compile Include="DatabaseModels\HistorySheetModel.cs" />
<Compile Include="DatabaseModels\FavoriteUserSoftKeyModel.cs" />
<Compile Include="DatabaseModels\FunctionAccessModel.cs" />
<Compile Include="ConfigModels\MessageModel.cs" />
+187 -14
View File
@@ -135,6 +135,16 @@ namespace Thermo.Active.NC
/// </summary>
public NcThermo numericalControl;
/// <summary>
/// Indica se la FLIR camera è connessa
/// </summary>
public static bool cameraIsConnected = false;
/// <summary>
/// Indica se la FLIR camera è connessa
/// </summary>
public static DateTime lastImageTaken = new DateTime(0);
#endregion Public Fields
#region Public Constructors
@@ -465,10 +475,16 @@ namespace Thermo.Active.NC
// solo x S7...
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
{
// registro in redis blocco x lettura ricetta...
RedisController.setRecipeReadSem(true);
// call NC for update
CmsError libraryError = numericalControl.PLC_WRecipeEdit(confirmUpdate);
if (libraryError.IsError())
return libraryError;
// tolgo blocco x lettura ricetta...
RedisController.setRecipeReadSem(false);
}
else
{
@@ -523,7 +539,7 @@ namespace Thermo.Active.NC
{
CmsError libraryError = NO_ERROR;
currCycleLog = new DTOCycleLog();
// fix valori
from = from > 0 ? from - 1 : 0;
//selezione
@@ -551,7 +567,7 @@ namespace Thermo.Active.NC
// effettuo traduzione e riordino
foreach (var item in currLogCycleData.OrderByDescending(i => i.DtEvent))
{
machineLog.events.Add(new CycleEvent() { dtEvent=item.DtEvent, code= item.Code });
machineLog.events.Add(new CycleEvent() { dtEvent = item.DtEvent, code = item.Code });
}
// salvo
lastCycleLogData = machineLog;
@@ -582,31 +598,31 @@ namespace Thermo.Active.NC
break;
case AxisCommand.MoveAbsolute:
doWrite = true;
biteCommand = 0;
biteCommand = 1;
break;
case AxisCommand.JogIncPlus:
doWrite = true;
biteCommand = 1;
biteCommand = 2;
break;
case AxisCommand.JogIncMinus:
doWrite = true;
biteCommand = 2;
biteCommand = 3;
break;
case AxisCommand.Align:
doWrite = true;
biteCommand = 3;
biteCommand = 4;
break;
case AxisCommand.Probe:
doWrite = true;
biteCommand = 4;
biteCommand = 5;
break;
case AxisCommand.SetSlavePosition:
doWrite = true;
biteCommand = 5;
biteCommand = 6;
break;
case AxisCommand.Reset:
doWrite = true;
biteCommand = 6;
biteCommand = 7;
break;
case AxisCommand.Num07:
break;
@@ -1409,7 +1425,9 @@ namespace Thermo.Active.NC
// leggo la ricetta dal PLC!
var currRecipe = new Dictionary<string, DTORecipeParam>();
libraryError = ReadFullRecipe(out currRecipe);
//libraryError = ReadFullRecipe(out currRecipe);
libraryError = ReadRecipeData(true, true, out currRecipe);
if (libraryError.IsError())
return libraryError;
@@ -1680,7 +1698,7 @@ namespace Thermo.Active.NC
var currRecipe = new Dictionary<string, DTORecipeParam>();
// read recipe
libraryError = ReadRecipeData(false, true, out currRecipe);
libraryError = ReadRecipeData(true, true, out currRecipe);
if (libraryError.IsError())
return libraryError;
@@ -1752,10 +1770,16 @@ namespace Thermo.Active.NC
{
if (NcFileAdapter.RecipeLiveData.ChannelSetpoints != null)
{
// registro in redis blocco x lettura ricetta...
RedisController.setRecipeReadSem(true);
// se si in questo caso scrivo configurazione...
WriteRecipeWarmConfig();
// Ack !
libraryError = numericalControl.PLC_WAckConfRiskRequest();
// tolgo in redis blocco x lettura ricetta...
RedisController.setRecipeReadSem(false);
}
}
if (ThermoReqConfRecipeStr)
@@ -1783,8 +1807,12 @@ namespace Thermo.Active.NC
return NOT_FOUND_ERROR;
}
}
// registro in redis blocco x lettura ricetta...
RedisController.setRecipeReadSem(true);
// se si in questo caso scrivo configurazione attuale...
WriteRecipeParams(updtRecipe, nMaxParamWrite, delayParamWrite);
// tolgo in redis blocco x lettura ricetta...
RedisController.setRecipeReadSem(false);
using (UserSoftkeysController controller = new UserSoftkeysController())
{
@@ -1801,6 +1829,9 @@ namespace Thermo.Active.NC
newRisk.Add(item.Key, item.Value);
}
// registro in redis blocco x lettura ricetta...
RedisController.setRecipeReadSem(true);
// write to PLC SetPointHMI (%)
libraryError = WriteRecipeWarmChSetpHMI(newRisk);
if (libraryError.IsError())
@@ -1815,6 +1846,9 @@ namespace Thermo.Active.NC
libraryError = ConfirmRecipeData(true);
if (libraryError.IsError())
return libraryError;
// tolgo in redis blocco x lettura ricetta...
RedisController.setRecipeReadSem(true);
}
}
}
@@ -1930,7 +1964,8 @@ namespace Thermo.Active.NC
name = x.Name,
masterID = x.MasterId,
enabledWord = (AxisCommand)x.EnabledWord,
type = x.Type.ToString()
type = x.Type.ToString(),
visible = x.IsVisible
}).ToDictionary(x => x.ID, x => x);
// se ho valori in cache uso quelli, altrimenti init obj
@@ -1947,7 +1982,8 @@ namespace Thermo.Active.NC
name = x.Name,
masterID = x.MasterId,
enabledWord = (AxisCommand)x.EnabledWord,
type = x.Type.ToString()
type = x.Type.ToString(),
visible = x.IsVisible
}).ToDictionary(x => x.ID, x => x);
}
@@ -2501,7 +2537,12 @@ namespace Thermo.Active.NC
// save on DB! attenzione: RAW DATA perché salvo pezzo PRECEDENTE...
using (ProdInfoController prodInfoController = new ProdInfoController())
{
prodInfoController.Create(pInfoRaw.NumTarget, pInfoRaw.NumDone, pInfoRaw.TimeWarm, pInfoRaw.TimeVent, pInfoRaw.TimeVacuum, pInfoRaw.TimeCycleGross, pInfoRaw.TimeCycleNet, pInfoRaw.MaterialTempEndWarm, pInfoRaw.MaterialTempEndVent, pInfoRaw.MoldTemp, pInfoRaw.VacuumReadVal, pInfoRaw.MouldEnergyOUT, pInfoRaw.MouldEnergyIN, false, pInfoRaw.ThermoImage);
string imgName = string.IsNullOrEmpty(pInfoRaw.ThermoImage) ? "_last" : pInfoRaw.ThermoImage;
if (imgName == "_last")
{
imgName = "UNDEFINED";
}
prodInfoController.Create(pInfoRaw.NumTarget, pInfoRaw.NumDone, pInfoRaw.TimeWarm, pInfoRaw.TimeVent, pInfoRaw.TimeVacuum, pInfoRaw.TimeCycleGross, pInfoRaw.TimeCycleNet, pInfoRaw.MaterialTempEndWarm, pInfoRaw.MaterialTempEndVent, pInfoRaw.MoldTemp, pInfoRaw.VacuumReadVal, pInfoRaw.MouldEnergyOUT, pInfoRaw.MouldEnergyIN, false, imgName);
// indico di rileggere il DB...
forceProdPanelDbReload = true;
}
@@ -2547,6 +2588,26 @@ namespace Thermo.Active.NC
lastProdStart = DateTime.Now;
}
ThermoModels.HistorySheet sheetRaw = new ThermoModels.HistorySheet();
libraryError = numericalControl.PLC_RHistorySheets(ref sheetRaw);
if (libraryError.IsError())
return libraryError;
if (sheetRaw.newData)
{
using (HistorySheetsController HSC = new HistorySheetsController())
{
HSC.Create(NcFileAdapter.RecipeLiveData.RecipeName, prodInfoData.NumDone, (float) sheetRaw.Value1, (float) sheetRaw.Value2, (float) sheetRaw.Value3,sheetRaw.TypeVal);
// manage strobe/ack!
libraryError = numericalControl.PLC_WAckHistorySheets();
if (libraryError.IsError())
return libraryError;
}
}
return libraryError;
}
@@ -3113,6 +3174,16 @@ namespace Thermo.Active.NC
return libraryError;
}
public static bool EnableThermocam
{
get
{
bool answ = false;
bool.TryParse(AdditionalParametersConfig["EnableThermocam"], out answ);
return answ;
}
}
public CmsError ReadTCamData(out DTOThermoCam currTCamData)
{
CmsError libraryError = NO_ERROR;
@@ -3146,6 +3217,11 @@ namespace Thermo.Active.NC
Min = minVal,
Max = maxVal
};
// controllo se connessa
currTCamData.ThermoCamConnected = cameraIsConnected;
// DataOra ultima immagine scattata
currTCamData.LastTakenImage = lastImageTaken;
}
return libraryError;
}
@@ -3367,8 +3443,14 @@ namespace Thermo.Active.NC
/// <returns></returns>
public CmsError SetTCamActiv(bool enableTCam)
{
// registro in redis blocco x lettura ricetta...
RedisController.setWarmersReadSem(true);
CmsError libraryError = numericalControl.PLC_WTCamActiv(enableTCam);
// tolgo in redis blocco x lettura ricetta...
RedisController.setWarmersReadSem(false);
return libraryError;
}
@@ -3379,8 +3461,14 @@ namespace Thermo.Active.NC
/// <returns></returns>
public CmsError SetTCamMode(bool enableTCam)
{
// registro in redis blocco x lettura ricetta...
RedisController.setWarmersReadSem(true);
CmsError libraryError = numericalControl.PLC_WTCamMode(enableTCam);
// tolgo in redis blocco x lettura ricetta...
RedisController.setWarmersReadSem(false);
return libraryError;
}
@@ -3478,6 +3566,52 @@ namespace Thermo.Active.NC
return NO_ERROR;
}
/// <summary>
/// Set AdvMode for AXES
/// </summary>
/// <param name="advMode">Boolean for advmode true/false</param>
/// <returns></returns>
public CmsError SetAxesAdvMode(bool advMode)
{
// solo x S7...
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
{
// scrivo!
CmsError libraryError = numericalControl.PLC_WAxisGeneralControl(advMode);
if (libraryError.IsError())
return libraryError;
}
else
{
return FUNCTION_NOT_ALLOWED_ERROR;
}
return NO_ERROR;
}
/// <summary>
/// Get AdvMode for AXES
/// </summary>
/// <param name="advMode">Boolean for advmode true/false</param>
/// <returns></returns>
public CmsError GetAxesAdvMode(out bool advMode)
{
advMode = false;
// solo x S7...
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
{
// scrivo!
CmsError libraryError = numericalControl.PLC_RAxisGeneralStatus(ref advMode);
if (libraryError.IsError())
return libraryError;
}
else
{
return FUNCTION_NOT_ALLOWED_ERROR;
}
return NO_ERROR;
}
public void WriteCandy(DateTime value, int machNumber)
{
long nDays;
@@ -3569,8 +3703,15 @@ namespace Thermo.Active.NC
/// <returns></returns>
public CmsError WriteRecipeParams(Dictionary<string, DTORecipeParam> updtRecipe, int nMaxParamWrite, int delayParamWrite)
{
// registro in redis blocco x lettura ricetta...
RedisController.setRecipeReadSem(true);
CmsError libraryError = WriteRecipeParametersToPLC(updtRecipe, nMaxParamWrite, delayParamWrite);
// tolgo blocco x lettura ricetta...
RedisController.setRecipeReadSem(false);
return libraryError;
}
@@ -3581,8 +3722,15 @@ namespace Thermo.Active.NC
/// <returns></returns>
public CmsError WriteRecipeWarmChSetpHMI(Dictionary<int, int> updtSetpHmi)
{
// registro in redis blocco x lettura warmers...
RedisController.setWarmersReadSem(true);
CmsError libraryError = numericalControl.PLC_WWarmerChSetpHmi(updtSetpHmi);
// tolgo blocco x lettura warmers...
RedisController.setWarmersReadSem(false);
return libraryError;
}
@@ -3593,8 +3741,14 @@ namespace Thermo.Active.NC
/// <returns></returns>
public CmsError WriteRecipeWarmChTCamEnab(Dictionary<int, bool> actualStates)
{
// registro in redis blocco x lettura warmers...
RedisController.setWarmersReadSem(true);
CmsError libraryError = numericalControl.PLC_WWarmerChTCamEnab(actualStates);
// tolgo blocco x lettura warmers...
RedisController.setWarmersReadSem(false);
return libraryError;
}
@@ -3605,8 +3759,14 @@ namespace Thermo.Active.NC
/// <returns></returns>
public CmsError WriteRecipeWarmChTCamTempAct(Dictionary<int, double> actualTemp)
{
// registro in redis blocco x lettura warmers...
RedisController.setWarmersReadSem(true);
CmsError libraryError = numericalControl.PLC_WWarmerChTCamTempAct(actualTemp);
// tolgo blocco x lettura warmers...
RedisController.setWarmersReadSem(false);
return libraryError;
}
@@ -3617,8 +3777,14 @@ namespace Thermo.Active.NC
/// <returns></returns>
public CmsError WriteRecipeWarmChTCamTempSet(Dictionary<int, double> referenceTemp)
{
// registro in redis blocco x lettura warmers...
RedisController.setWarmersReadSem(true);
CmsError libraryError = numericalControl.PLC_WWarmerChTCamTempSet(referenceTemp);
// tolgo blocco x lettura warmers...
RedisController.setWarmersReadSem(false);
return libraryError;
}
@@ -3632,6 +3798,9 @@ namespace Thermo.Active.NC
Dictionary<int, int> newData = new Dictionary<int, int>();
CmsError libraryError = NO_ERROR;
// registro in redis blocco x lettura warmers...
RedisController.setWarmersReadSem(true);
// scrivo l'abilitazione dei canali...
foreach (var item in RiskBoardConfig)
{
@@ -3693,6 +3862,10 @@ namespace Thermo.Active.NC
numericalControl.PLC_WWarmerChTCamEnab(resetTCamEnab);
numericalControl.PLC_WWarmerChTCamTempAct(resetTCamTemp);
numericalControl.PLC_WWarmerChTCamTempSet(resetTCamTemp);
// tolgo blocco x lettura warmers...
RedisController.setWarmersReadSem(false);
// esce
return libraryError;
}
-4
View File
@@ -38,10 +38,6 @@
<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>
<dependentAssembly>
<assemblyIdentity name="S7.Net" publicKeyToken="d5812d469e84c693" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-0.8.1.0" newVersion="0.8.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
+400 -400
View File
@@ -30,436 +30,436 @@ namespace Thermo.Active.UI
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerControlWindow));
this.StepNotifyIcon = new System.Windows.Forms.NotifyIcon(this.components);
this.NotifyIconMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
this.adminMachineToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.passwordToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.goBackToStandardModeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator = new System.Windows.Forms.ToolStripSeparator();
this.resetSpindleHoursToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.resetCountersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.resetMachineWorkingHoursToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.StopServerItem = new System.Windows.Forms.ToolStripMenuItem();
this.TXTstatus = new System.Windows.Forms.TextBox();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.stopServerButton = new System.Windows.Forms.Button();
this.openUiButton = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
this.label3 = new System.Windows.Forms.Label();
this.TXTVersion = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.TXTType = new System.Windows.Forms.Label();
this.CHNcConnected = new System.Windows.Forms.CheckBox();
this.label2 = new System.Windows.Forms.Label();
this.TXTMachId = new System.Windows.Forms.Label();
this.LISTThreadStatus = new System.Windows.Forms.ListView();
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.menuToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.closeCMSServerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.serviceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.passwordToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.goBackToStandardModeToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.resetSpindleHoursToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.resetCountersToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.resetMachineWorkingHoursToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.NotifyIconMenu.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
this.panel1.SuspendLayout();
this.menuStrip1.SuspendLayout();
this.SuspendLayout();
//
// StepNotifyIcon
//
this.StepNotifyIcon.BalloonTipText = "Active";
this.StepNotifyIcon.ContextMenuStrip = this.NotifyIconMenu;
this.StepNotifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("StepNotifyIcon.Icon")));
this.StepNotifyIcon.Text = "Active";
this.StepNotifyIcon.Visible = true;
this.StepNotifyIcon.DoubleClick += new System.EventHandler(this.NotifyIcon_Click);
//
// NotifyIconMenu
//
this.NotifyIconMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerControlWindow));
this.StepNotifyIcon = new System.Windows.Forms.NotifyIcon(this.components);
this.NotifyIconMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
this.adminMachineToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.passwordToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.goBackToStandardModeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator = new System.Windows.Forms.ToolStripSeparator();
this.resetSpindleHoursToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.resetCountersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.resetMachineWorkingHoursToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.StopServerItem = new System.Windows.Forms.ToolStripMenuItem();
this.TXTstatus = new System.Windows.Forms.TextBox();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.stopServerButton = new System.Windows.Forms.Button();
this.openUiButton = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
this.label3 = new System.Windows.Forms.Label();
this.TXTVersion = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.TXTType = new System.Windows.Forms.Label();
this.CHNcConnected = new System.Windows.Forms.CheckBox();
this.label2 = new System.Windows.Forms.Label();
this.TXTMachId = new System.Windows.Forms.Label();
this.LISTThreadStatus = new System.Windows.Forms.ListView();
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.menuToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.closeCMSServerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.serviceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.passwordToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.goBackToStandardModeToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.resetSpindleHoursToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.resetCountersToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.resetMachineWorkingHoursToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.NotifyIconMenu.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
this.panel1.SuspendLayout();
this.menuStrip1.SuspendLayout();
this.SuspendLayout();
//
// StepNotifyIcon
//
this.StepNotifyIcon.BalloonTipText = "Active";
this.StepNotifyIcon.ContextMenuStrip = this.NotifyIconMenu;
this.StepNotifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("StepNotifyIcon.Icon")));
this.StepNotifyIcon.Text = "Active";
this.StepNotifyIcon.Visible = true;
this.StepNotifyIcon.DoubleClick += new System.EventHandler(this.NotifyIcon_Click);
//
// NotifyIconMenu
//
this.NotifyIconMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.adminMachineToolStripMenuItem,
this.toolStripSeparator3,
this.StopServerItem});
this.NotifyIconMenu.Name = "NotifyIconMenu";
this.NotifyIconMenu.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
this.NotifyIconMenu.Size = new System.Drawing.Size(175, 54);
//
// adminMachineToolStripMenuItem
//
this.adminMachineToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.NotifyIconMenu.Name = "NotifyIconMenu";
this.NotifyIconMenu.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
this.NotifyIconMenu.Size = new System.Drawing.Size(175, 54);
//
// adminMachineToolStripMenuItem
//
this.adminMachineToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.passwordToolStripMenuItem,
this.goBackToStandardModeToolStripMenuItem,
this.toolStripSeparator,
this.resetSpindleHoursToolStripMenuItem,
this.resetCountersToolStripMenuItem,
this.resetMachineWorkingHoursToolStripMenuItem});
this.adminMachineToolStripMenuItem.Name = "adminMachineToolStripMenuItem";
this.adminMachineToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
this.adminMachineToolStripMenuItem.Text = "Service";
//
// passwordToolStripMenuItem
//
this.passwordToolStripMenuItem.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Lock_icon;
this.passwordToolStripMenuItem.Name = "passwordToolStripMenuItem";
this.passwordToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.passwordToolStripMenuItem.Text = "Password";
this.passwordToolStripMenuItem.Click += new System.EventHandler(this.passwordToolStripMenuItem_Click);
//
// goBackToStandardModeToolStripMenuItem
//
this.goBackToStandardModeToolStripMenuItem.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Unlock_icon;
this.goBackToStandardModeToolStripMenuItem.Name = "goBackToStandardModeToolStripMenuItem";
this.goBackToStandardModeToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.goBackToStandardModeToolStripMenuItem.Text = "Go back to standard mode";
this.goBackToStandardModeToolStripMenuItem.Visible = false;
this.goBackToStandardModeToolStripMenuItem.Click += new System.EventHandler(this.goBackToStandardModeToolStripMenuItem_Click);
//
// toolStripSeparator
//
this.toolStripSeparator.Name = "toolStripSeparator";
this.toolStripSeparator.Size = new System.Drawing.Size(231, 6);
this.toolStripSeparator.Visible = false;
//
// resetSpindleHoursToolStripMenuItem
//
this.resetSpindleHoursToolStripMenuItem.Name = "resetSpindleHoursToolStripMenuItem";
this.resetSpindleHoursToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.resetSpindleHoursToolStripMenuItem.Text = "Reset Spindle Active Time";
this.resetSpindleHoursToolStripMenuItem.Visible = false;
this.resetSpindleHoursToolStripMenuItem.Click += new System.EventHandler(this.resetSpindleHoursToolStripMenuItem_Click);
//
// resetCountersToolStripMenuItem
//
this.resetCountersToolStripMenuItem.Name = "resetCountersToolStripMenuItem";
this.resetCountersToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.resetCountersToolStripMenuItem.Text = "Reset CMS-Active Counters";
this.resetCountersToolStripMenuItem.Visible = false;
this.resetCountersToolStripMenuItem.Click += new System.EventHandler(this.resetCountersToolStripMenuItem_Click);
//
// resetMachineWorkingHoursToolStripMenuItem
//
this.resetMachineWorkingHoursToolStripMenuItem.Name = "resetMachineWorkingHoursToolStripMenuItem";
this.resetMachineWorkingHoursToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.resetMachineWorkingHoursToolStripMenuItem.Text = "Reset Machine Working Hours";
this.resetMachineWorkingHoursToolStripMenuItem.Visible = false;
this.resetMachineWorkingHoursToolStripMenuItem.Click += new System.EventHandler(this.resetMachineWorkingHoursToolStripMenuItem_Click);
//
// toolStripSeparator3
//
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(171, 6);
//
// StopServerItem
//
this.StopServerItem.Name = "StopServerItem";
this.StopServerItem.Size = new System.Drawing.Size(174, 22);
this.StopServerItem.Text = "Close Active Server";
this.StopServerItem.Click += new System.EventHandler(this.StopServerItem_Click);
//
// TXTstatus
//
this.TXTstatus.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
this.adminMachineToolStripMenuItem.Name = "adminMachineToolStripMenuItem";
this.adminMachineToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
this.adminMachineToolStripMenuItem.Text = "Service";
//
// passwordToolStripMenuItem
//
this.passwordToolStripMenuItem.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Lock_icon;
this.passwordToolStripMenuItem.Name = "passwordToolStripMenuItem";
this.passwordToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.passwordToolStripMenuItem.Text = "Password";
this.passwordToolStripMenuItem.Click += new System.EventHandler(this.passwordToolStripMenuItem_Click);
//
// goBackToStandardModeToolStripMenuItem
//
this.goBackToStandardModeToolStripMenuItem.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Unlock_icon;
this.goBackToStandardModeToolStripMenuItem.Name = "goBackToStandardModeToolStripMenuItem";
this.goBackToStandardModeToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.goBackToStandardModeToolStripMenuItem.Text = "Go back to standard mode";
this.goBackToStandardModeToolStripMenuItem.Visible = false;
this.goBackToStandardModeToolStripMenuItem.Click += new System.EventHandler(this.goBackToStandardModeToolStripMenuItem_Click);
//
// toolStripSeparator
//
this.toolStripSeparator.Name = "toolStripSeparator";
this.toolStripSeparator.Size = new System.Drawing.Size(231, 6);
this.toolStripSeparator.Visible = false;
//
// resetSpindleHoursToolStripMenuItem
//
this.resetSpindleHoursToolStripMenuItem.Name = "resetSpindleHoursToolStripMenuItem";
this.resetSpindleHoursToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.resetSpindleHoursToolStripMenuItem.Text = "Reset Spindle Active Time";
this.resetSpindleHoursToolStripMenuItem.Visible = false;
this.resetSpindleHoursToolStripMenuItem.Click += new System.EventHandler(this.resetSpindleHoursToolStripMenuItem_Click);
//
// resetCountersToolStripMenuItem
//
this.resetCountersToolStripMenuItem.Name = "resetCountersToolStripMenuItem";
this.resetCountersToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.resetCountersToolStripMenuItem.Text = "Reset CMS-Active Counters";
this.resetCountersToolStripMenuItem.Visible = false;
this.resetCountersToolStripMenuItem.Click += new System.EventHandler(this.resetCountersToolStripMenuItem_Click);
//
// resetMachineWorkingHoursToolStripMenuItem
//
this.resetMachineWorkingHoursToolStripMenuItem.Name = "resetMachineWorkingHoursToolStripMenuItem";
this.resetMachineWorkingHoursToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.resetMachineWorkingHoursToolStripMenuItem.Text = "Reset Machine Working Hours";
this.resetMachineWorkingHoursToolStripMenuItem.Visible = false;
this.resetMachineWorkingHoursToolStripMenuItem.Click += new System.EventHandler(this.resetMachineWorkingHoursToolStripMenuItem_Click);
//
// toolStripSeparator3
//
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(171, 6);
//
// StopServerItem
//
this.StopServerItem.Name = "StopServerItem";
this.StopServerItem.Size = new System.Drawing.Size(174, 22);
this.StopServerItem.Text = "Close Active Server";
this.StopServerItem.Click += new System.EventHandler(this.StopServerItem_Click);
//
// TXTstatus
//
this.TXTstatus.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tableLayoutPanel1.SetColumnSpan(this.TXTstatus, 2);
this.TXTstatus.Enabled = false;
this.TXTstatus.Location = new System.Drawing.Point(3, 435);
this.TXTstatus.Name = "TXTstatus";
this.TXTstatus.ReadOnly = true;
this.TXTstatus.Size = new System.Drawing.Size(438, 20);
this.TXTstatus.TabIndex = 8;
this.TXTstatus.Text = "...";
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
this.tableLayoutPanel1.SetColumnSpan(this.TXTstatus, 2);
this.TXTstatus.Enabled = false;
this.TXTstatus.Location = new System.Drawing.Point(3, 620);
this.TXTstatus.Name = "TXTstatus";
this.TXTstatus.ReadOnly = true;
this.TXTstatus.Size = new System.Drawing.Size(438, 20);
this.TXTstatus.TabIndex = 8;
this.TXTstatus.Text = "...";
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Controls.Add(this.stopServerButton, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.openUiButton, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.TXTstatus, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.LISTThreadStatus, 0, 0);
this.tableLayoutPanel1.Location = new System.Drawing.Point(12, 27);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 3;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 89F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 54F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(444, 457);
this.tableLayoutPanel1.TabIndex = 58;
//
// stopServerButton
//
this.stopServerButton.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Controls.Add(this.stopServerButton, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.openUiButton, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.TXTstatus, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.LISTThreadStatus, 0, 0);
this.tableLayoutPanel1.Location = new System.Drawing.Point(12, 27);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 3;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 89F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 54F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(444, 642);
this.tableLayoutPanel1.TabIndex = 58;
//
// stopServerButton
//
this.stopServerButton.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.stopServerButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stopServerButton.Location = new System.Drawing.Point(225, 381);
this.stopServerButton.Name = "stopServerButton";
this.stopServerButton.Size = new System.Drawing.Size(216, 48);
this.stopServerButton.TabIndex = 3;
this.stopServerButton.TabStop = false;
this.stopServerButton.Text = "Close Active";
this.stopServerButton.Click += new System.EventHandler(this.StopServerButton_Click);
//
// openUiButton
//
this.openUiButton.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
this.stopServerButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stopServerButton.Location = new System.Drawing.Point(225, 566);
this.stopServerButton.Name = "stopServerButton";
this.stopServerButton.Size = new System.Drawing.Size(216, 48);
this.stopServerButton.TabIndex = 3;
this.stopServerButton.TabStop = false;
this.stopServerButton.Text = "Close Active";
this.stopServerButton.Click += new System.EventHandler(this.StopServerButton_Click);
//
// openUiButton
//
this.openUiButton.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.openUiButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.openUiButton.Location = new System.Drawing.Point(3, 381);
this.openUiButton.Name = "openUiButton";
this.openUiButton.Size = new System.Drawing.Size(216, 48);
this.openUiButton.TabIndex = 58;
this.openUiButton.TabStop = false;
this.openUiButton.Text = "Open Active Client";
this.openUiButton.Click += new System.EventHandler(this.OpenUiButton_Click);
//
// panel1
//
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
this.openUiButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.openUiButton.Location = new System.Drawing.Point(3, 566);
this.openUiButton.Name = "openUiButton";
this.openUiButton.Size = new System.Drawing.Size(216, 48);
this.openUiButton.TabIndex = 58;
this.openUiButton.TabStop = false;
this.openUiButton.Text = "Open Active Client";
this.openUiButton.Click += new System.EventHandler(this.OpenUiButton_Click);
//
// panel1
//
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tableLayoutPanel1.SetColumnSpan(this.panel1, 2);
this.panel1.Controls.Add(this.label3);
this.panel1.Controls.Add(this.TXTVersion);
this.panel1.Controls.Add(this.label1);
this.panel1.Controls.Add(this.TXTType);
this.panel1.Controls.Add(this.CHNcConnected);
this.panel1.Controls.Add(this.label2);
this.panel1.Controls.Add(this.TXTMachId);
this.panel1.Location = new System.Drawing.Point(3, 292);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(438, 83);
this.panel1.TabIndex = 9;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(3, 49);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(78, 13);
this.label3.TabIndex = 59;
this.label3.Text = "Active Version:";
//
// TXTVersion
//
this.TXTVersion.AutoSize = true;
this.TXTVersion.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.TXTVersion.Location = new System.Drawing.Point(87, 49);
this.TXTVersion.Name = "TXTVersion";
this.TXTVersion.Size = new System.Drawing.Size(19, 13);
this.TXTVersion.TabIndex = 58;
this.TXTVersion.Text = "---";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(3, 24);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(44, 13);
this.label1.TabIndex = 54;
this.label1.Text = "Vendor:";
//
// TXTType
//
this.TXTType.AutoSize = true;
this.TXTType.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.TXTType.Location = new System.Drawing.Point(48, 24);
this.TXTType.Name = "TXTType";
this.TXTType.Size = new System.Drawing.Size(19, 13);
this.TXTType.TabIndex = 53;
this.TXTType.Text = "---";
//
// CHNcConnected
//
this.CHNcConnected.AutoCheck = false;
this.CHNcConnected.ForeColor = System.Drawing.SystemColors.ControlText;
this.CHNcConnected.Location = new System.Drawing.Point(340, 24);
this.CHNcConnected.Name = "CHNcConnected";
this.CHNcConnected.Size = new System.Drawing.Size(81, 20);
this.CHNcConnected.TabIndex = 52;
this.CHNcConnected.Text = "Connected";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(142, 24);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(63, 13);
this.label2.TabIndex = 57;
this.label2.Text = "Machine Id:";
//
// TXTMachId
//
this.TXTMachId.AutoSize = true;
this.TXTMachId.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.TXTMachId.Location = new System.Drawing.Point(240, 24);
this.TXTMachId.Name = "TXTMachId";
this.TXTMachId.Size = new System.Drawing.Size(19, 13);
this.TXTMachId.TabIndex = 56;
this.TXTMachId.Text = "---";
//
// LISTThreadStatus
//
this.LISTThreadStatus.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.tableLayoutPanel1.SetColumnSpan(this.panel1, 2);
this.panel1.Controls.Add(this.label3);
this.panel1.Controls.Add(this.TXTVersion);
this.panel1.Controls.Add(this.label1);
this.panel1.Controls.Add(this.TXTType);
this.panel1.Controls.Add(this.CHNcConnected);
this.panel1.Controls.Add(this.label2);
this.panel1.Controls.Add(this.TXTMachId);
this.panel1.Location = new System.Drawing.Point(3, 477);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(438, 83);
this.panel1.TabIndex = 9;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(3, 49);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(78, 13);
this.label3.TabIndex = 59;
this.label3.Text = "Active Version:";
//
// TXTVersion
//
this.TXTVersion.AutoSize = true;
this.TXTVersion.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.TXTVersion.Location = new System.Drawing.Point(87, 49);
this.TXTVersion.Name = "TXTVersion";
this.TXTVersion.Size = new System.Drawing.Size(19, 13);
this.TXTVersion.TabIndex = 58;
this.TXTVersion.Text = "---";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(3, 24);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(44, 13);
this.label1.TabIndex = 54;
this.label1.Text = "Vendor:";
//
// TXTType
//
this.TXTType.AutoSize = true;
this.TXTType.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.TXTType.Location = new System.Drawing.Point(48, 24);
this.TXTType.Name = "TXTType";
this.TXTType.Size = new System.Drawing.Size(19, 13);
this.TXTType.TabIndex = 53;
this.TXTType.Text = "---";
//
// CHNcConnected
//
this.CHNcConnected.AutoCheck = false;
this.CHNcConnected.ForeColor = System.Drawing.SystemColors.ControlText;
this.CHNcConnected.Location = new System.Drawing.Point(340, 24);
this.CHNcConnected.Name = "CHNcConnected";
this.CHNcConnected.Size = new System.Drawing.Size(81, 20);
this.CHNcConnected.TabIndex = 52;
this.CHNcConnected.Text = "Connected";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(142, 24);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(63, 13);
this.label2.TabIndex = 57;
this.label2.Text = "Machine Id:";
//
// TXTMachId
//
this.TXTMachId.AutoSize = true;
this.TXTMachId.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.TXTMachId.Location = new System.Drawing.Point(240, 24);
this.TXTMachId.Name = "TXTMachId";
this.TXTMachId.Size = new System.Drawing.Size(19, 13);
this.TXTMachId.TabIndex = 56;
this.TXTMachId.Text = "---";
//
// LISTThreadStatus
//
this.LISTThreadStatus.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1,
this.columnHeader2});
this.tableLayoutPanel1.SetColumnSpan(this.LISTThreadStatus, 2);
this.LISTThreadStatus.Dock = System.Windows.Forms.DockStyle.Fill;
this.LISTThreadStatus.HideSelection = false;
this.LISTThreadStatus.Location = new System.Drawing.Point(3, 3);
this.LISTThreadStatus.Name = "LISTThreadStatus";
this.LISTThreadStatus.Size = new System.Drawing.Size(438, 283);
this.LISTThreadStatus.TabIndex = 59;
this.LISTThreadStatus.UseCompatibleStateImageBehavior = false;
this.LISTThreadStatus.View = System.Windows.Forms.View.Details;
//
// columnHeader1
//
this.columnHeader1.Text = "Thread Name";
this.columnHeader1.Width = 328;
//
// columnHeader2
//
this.columnHeader2.Text = "Time";
this.columnHeader2.Width = 78;
//
// menuStrip1
//
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.tableLayoutPanel1.SetColumnSpan(this.LISTThreadStatus, 2);
this.LISTThreadStatus.Dock = System.Windows.Forms.DockStyle.Fill;
this.LISTThreadStatus.HideSelection = false;
this.LISTThreadStatus.Location = new System.Drawing.Point(3, 3);
this.LISTThreadStatus.Name = "LISTThreadStatus";
this.LISTThreadStatus.Size = new System.Drawing.Size(438, 468);
this.LISTThreadStatus.TabIndex = 59;
this.LISTThreadStatus.UseCompatibleStateImageBehavior = false;
this.LISTThreadStatus.View = System.Windows.Forms.View.Details;
//
// columnHeader1
//
this.columnHeader1.Text = "Thread Name";
this.columnHeader1.Width = 200;
//
// columnHeader2
//
this.columnHeader2.Text = "Time";
this.columnHeader2.Width = 230;
//
// menuStrip1
//
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menuToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(468, 24);
this.menuStrip1.TabIndex = 59;
this.menuStrip1.Text = "menuStrip1";
//
// menuToolStripMenuItem
//
this.menuToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(468, 24);
this.menuStrip1.TabIndex = 59;
this.menuStrip1.Text = "menuStrip1";
//
// menuToolStripMenuItem
//
this.menuToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.closeCMSServerToolStripMenuItem,
this.toolStripSeparator2,
this.serviceToolStripMenuItem});
this.menuToolStripMenuItem.Name = "menuToolStripMenuItem";
this.menuToolStripMenuItem.Size = new System.Drawing.Size(50, 20);
this.menuToolStripMenuItem.Text = "Menu";
//
// closeCMSServerToolStripMenuItem
//
this.closeCMSServerToolStripMenuItem.Name = "closeCMSServerToolStripMenuItem";
this.closeCMSServerToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
this.closeCMSServerToolStripMenuItem.Text = "Close Active Server";
this.closeCMSServerToolStripMenuItem.Click += new System.EventHandler(this.closeCMSServerToolStripMenuItem_Click);
//
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(171, 6);
//
// serviceToolStripMenuItem
//
this.serviceToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menuToolStripMenuItem.Name = "menuToolStripMenuItem";
this.menuToolStripMenuItem.Size = new System.Drawing.Size(50, 20);
this.menuToolStripMenuItem.Text = "Menu";
//
// closeCMSServerToolStripMenuItem
//
this.closeCMSServerToolStripMenuItem.Name = "closeCMSServerToolStripMenuItem";
this.closeCMSServerToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
this.closeCMSServerToolStripMenuItem.Text = "Close Active Server";
this.closeCMSServerToolStripMenuItem.Click += new System.EventHandler(this.closeCMSServerToolStripMenuItem_Click);
//
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(171, 6);
//
// serviceToolStripMenuItem
//
this.serviceToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.passwordToolStripMenuItem1,
this.goBackToStandardModeToolStripMenuItem1,
this.toolStripSeparator1,
this.resetSpindleHoursToolStripMenuItem1,
this.resetCountersToolStripMenuItem1,
this.resetMachineWorkingHoursToolStripMenuItem1});
this.serviceToolStripMenuItem.Name = "serviceToolStripMenuItem";
this.serviceToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
this.serviceToolStripMenuItem.Text = "Service";
//
// passwordToolStripMenuItem1
//
this.passwordToolStripMenuItem1.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Lock_icon;
this.passwordToolStripMenuItem1.Name = "passwordToolStripMenuItem1";
this.passwordToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.passwordToolStripMenuItem1.Text = "Password";
this.passwordToolStripMenuItem1.Click += new System.EventHandler(this.passwordToolStripMenuItem1_Click);
//
// goBackToStandardModeToolStripMenuItem1
//
this.goBackToStandardModeToolStripMenuItem1.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Unlock_icon;
this.goBackToStandardModeToolStripMenuItem1.Name = "goBackToStandardModeToolStripMenuItem1";
this.goBackToStandardModeToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.goBackToStandardModeToolStripMenuItem1.Text = "Go back to standard mode";
this.goBackToStandardModeToolStripMenuItem1.Visible = false;
this.goBackToStandardModeToolStripMenuItem1.Click += new System.EventHandler(this.goBackToStandardModeToolStripMenuItem1_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(231, 6);
this.toolStripSeparator1.Visible = false;
//
// resetSpindleHoursToolStripMenuItem1
//
this.resetSpindleHoursToolStripMenuItem1.Name = "resetSpindleHoursToolStripMenuItem1";
this.resetSpindleHoursToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.resetSpindleHoursToolStripMenuItem1.Text = "Reset Spindle Active Time";
this.resetSpindleHoursToolStripMenuItem1.Visible = false;
this.resetSpindleHoursToolStripMenuItem1.Click += new System.EventHandler(this.resetSpindleHoursToolStripMenuItem1_Click);
//
// resetCountersToolStripMenuItem1
//
this.resetCountersToolStripMenuItem1.Name = "resetCountersToolStripMenuItem1";
this.resetCountersToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.resetCountersToolStripMenuItem1.Text = "Reset CMS-Active Counters";
this.resetCountersToolStripMenuItem1.Visible = false;
this.resetCountersToolStripMenuItem1.Click += new System.EventHandler(this.resetCountersToolStripMenuItem1_Click);
//
// resetMachineWorkingHoursToolStripMenuItem1
//
this.resetMachineWorkingHoursToolStripMenuItem1.Name = "resetMachineWorkingHoursToolStripMenuItem1";
this.resetMachineWorkingHoursToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.resetMachineWorkingHoursToolStripMenuItem1.Text = "Reset Machine Working Hours";
this.resetMachineWorkingHoursToolStripMenuItem1.Visible = false;
this.resetMachineWorkingHoursToolStripMenuItem1.Click += new System.EventHandler(this.resetMachineWorkingHoursToolStripMenuItem1_Click);
//
// ServerControlWindow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(468, 496);
this.Controls.Add(this.menuStrip1);
this.Controls.Add(this.tableLayoutPanel1);
this.ForeColor = System.Drawing.SystemColors.ControlText;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MainMenuStrip = this.menuStrip1;
this.Margin = new System.Windows.Forms.Padding(2);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "ServerControlWindow";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ServerControlWindow_FormClosing);
this.Load += new System.EventHandler(this.ServerControlWindow_Load);
this.NotifyIconMenu.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
this.serviceToolStripMenuItem.Name = "serviceToolStripMenuItem";
this.serviceToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
this.serviceToolStripMenuItem.Text = "Service";
//
// passwordToolStripMenuItem1
//
this.passwordToolStripMenuItem1.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Lock_icon;
this.passwordToolStripMenuItem1.Name = "passwordToolStripMenuItem1";
this.passwordToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.passwordToolStripMenuItem1.Text = "Password";
this.passwordToolStripMenuItem1.Click += new System.EventHandler(this.passwordToolStripMenuItem1_Click);
//
// goBackToStandardModeToolStripMenuItem1
//
this.goBackToStandardModeToolStripMenuItem1.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Unlock_icon;
this.goBackToStandardModeToolStripMenuItem1.Name = "goBackToStandardModeToolStripMenuItem1";
this.goBackToStandardModeToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.goBackToStandardModeToolStripMenuItem1.Text = "Go back to standard mode";
this.goBackToStandardModeToolStripMenuItem1.Visible = false;
this.goBackToStandardModeToolStripMenuItem1.Click += new System.EventHandler(this.goBackToStandardModeToolStripMenuItem1_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(231, 6);
this.toolStripSeparator1.Visible = false;
//
// resetSpindleHoursToolStripMenuItem1
//
this.resetSpindleHoursToolStripMenuItem1.Name = "resetSpindleHoursToolStripMenuItem1";
this.resetSpindleHoursToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.resetSpindleHoursToolStripMenuItem1.Text = "Reset Spindle Active Time";
this.resetSpindleHoursToolStripMenuItem1.Visible = false;
this.resetSpindleHoursToolStripMenuItem1.Click += new System.EventHandler(this.resetSpindleHoursToolStripMenuItem1_Click);
//
// resetCountersToolStripMenuItem1
//
this.resetCountersToolStripMenuItem1.Name = "resetCountersToolStripMenuItem1";
this.resetCountersToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.resetCountersToolStripMenuItem1.Text = "Reset CMS-Active Counters";
this.resetCountersToolStripMenuItem1.Visible = false;
this.resetCountersToolStripMenuItem1.Click += new System.EventHandler(this.resetCountersToolStripMenuItem1_Click);
//
// resetMachineWorkingHoursToolStripMenuItem1
//
this.resetMachineWorkingHoursToolStripMenuItem1.Name = "resetMachineWorkingHoursToolStripMenuItem1";
this.resetMachineWorkingHoursToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.resetMachineWorkingHoursToolStripMenuItem1.Text = "Reset Machine Working Hours";
this.resetMachineWorkingHoursToolStripMenuItem1.Visible = false;
this.resetMachineWorkingHoursToolStripMenuItem1.Click += new System.EventHandler(this.resetMachineWorkingHoursToolStripMenuItem1_Click);
//
// ServerControlWindow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(468, 681);
this.Controls.Add(this.menuStrip1);
this.Controls.Add(this.tableLayoutPanel1);
this.ForeColor = System.Drawing.SystemColors.ControlText;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MainMenuStrip = this.menuStrip1;
this.Margin = new System.Windows.Forms.Padding(2);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "ServerControlWindow";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ServerControlWindow_FormClosing);
this.Load += new System.EventHandler(this.ServerControlWindow_Load);
this.NotifyIconMenu.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
+11 -9
View File
@@ -267,16 +267,18 @@ namespace Thermo.Active.UI
if (!isUpdatingThreads)
{
isUpdatingThreads = true;
Dictionary<String, String> Threads = new Dictionary<String, String>((Dictionary<String, String>)a);
//Begin the update
LISTThreadStatus.BeginUpdate();
//clear the List
LISTThreadStatus.Items.Clear();
//Add all items
foreach (KeyValuePair<string, String> Thr in Threads)
Dictionary<String, String> myThreads = new Dictionary<String, String>((Dictionary<String, String>)a);
//Begin the update
LISTThreadStatus.BeginUpdate();
//clear the List
LISTThreadStatus.Items.Clear();
//Add all items
foreach (KeyValuePair<string, String> Thr in myThreads)
{
LISTThreadStatus.Items.Add(new ListViewItem(new String[]{Thr.Key,Thr.Value }));
//End the update
LISTThreadStatus.EndUpdate();
}
//End the update
LISTThreadStatus.EndUpdate();
isUpdatingThreads = false;
}
});
-4
View File
@@ -38,10 +38,6 @@
<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>
<dependentAssembly>
<assemblyIdentity name="S7.Net" publicKeyToken="d5812d469e84c693" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-0.8.1.0" newVersion="0.8.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
@@ -47,6 +47,10 @@ namespace Thermo.Active.Utils
{
Log.Info(message);
}
public static void LogDebug(string message)
{
Log.Debug(message);
}
public static void LogWarning(string message)
{
+66 -4
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Automatically generated by nicola.carminati: 2021-02-25 -->
<!-- Automatically generated by nicola.carminati: 2021-03-10 -->
<root>
<language_it>Italiano</language_it>
<header_maintainance_request>Effettuare manutenzione</header_maintainance_request>
@@ -358,8 +358,8 @@
<underthehood_label_val>Valore</underthehood_label_val>
<underthehood_label_force>Forzatura</underthehood_label_force>
<underthehood_label_io>Gestione IO</underthehood_label_io>
<underthehood_label_loga>Log - Lastre</underthehood_label_loga>
<underthehood_label_logm>Log - Ciclo automatico</underthehood_label_logm>
<underthehood_label_loga>Log - Ciclo automatico</underthehood_label_loga>
<underthehood_label_logm>Log - Lastre</underthehood_label_logm>
<underthehood_label_assi>Gestione assi</underthehood_label_assi>
<underthehood_label_riscaldi>Gestione riscaldi</underthehood_label_riscaldi>
<underthehood_btn_details>Dettagli</underthehood_btn_details>
@@ -368,6 +368,68 @@
<underthehood_label_channel>Canale</underthehood_label_channel>
<underthehood_label_board>Board</underthehood_label_board>
<underthehood_label_currenta>Corrente [A]</underthehood_label_currenta>
<underthehood_label_currentp>Corrente [%%]</underthehood_label_currentp>
<underthehood_label_currentp>Power [%%]</underthehood_label_currentp>
<underthehood_label_status>Stato</underthehood_label_status>
<underthehood_label_date>Data</underthehood_label_date>
<underthehood_label_message>Messaggio</underthehood_label_message>
<underthehood_btn_zero>Set Zero</underthehood_btn_zero>
<underthehood_label_axis_enabled>Abilitato</underthehood_label_axis_enabled>
<underthehood_label_axes>Asse</underthehood_label_axes>
<underthehood_label_position>Posizione</underthehood_label_position>
<underthehood_label_speed>Velocità</underthehood_label_speed>
<underthehood_label_torque>Carico</underthehood_label_torque>
<underthehood_label_errorcode>Cod. errore</underthehood_label_errorcode>
<underthehood_label_motion>Fase mot.</underthehood_label_motion>
<underthehood_btn_align>Allinea</underthehood_btn_align>
<underthehood_btn_probe>Set Probe</underthehood_btn_probe>
<underthehood_btn_setslaves>Set posizione slave</underthehood_btn_setslaves>
<cmsconnect_info_lbl_title>Gestione CMS-Connect</cmsconnect_info_lbl_title>
<cmsconnect_info_menu_conn_status>Stato connessione</cmsconnect_info_menu_conn_status>
<cmsconnect_info_menu_networkconfig>Configurazione rete</cmsconnect_info_menu_networkconfig>
<cmsconnect_info_menu_proxyconfig>Configurazione s. proxy</cmsconnect_info_menu_proxyconfig>
<cmsconnect_info_menu_activation>Attivazione</cmsconnect_info_menu_activation>
<cmsconnect_info_menu_messages>Messaggi</cmsconnect_info_menu_messages>
<cmsconnect_info_menu_reboot>Riavvio</cmsconnect_info_menu_reboot>
<cmsconnect_info_lbl_url>Url</cmsconnect_info_lbl_url>
<cmsconnect_info_lbl_port>Porta</cmsconnect_info_lbl_port>
<cmsconnect_info_btn_run_conn_test>Avvia test</cmsconnect_info_btn_run_conn_test>
<star_keyboard_softkeys>Softkey in console</star_keyboard_softkeys>
<footer_tooltip_under_hood>Sotto il cofano</footer_tooltip_under_hood>
<underthehood_btn_move>Muovi</underthehood_btn_move>
<modal_confirm_mode_manual>Confermi di voler passare alla modalità manuale?</modal_confirm_mode_manual>
<cmsconnect_info_lbl_dhcp>Dhcp</cmsconnect_info_lbl_dhcp>
<cmsconnect_info_lbl_netmask>Netmask</cmsconnect_info_lbl_netmask>
<cmsconnect_info_lbl_dgateway>Default Gateway</cmsconnect_info_lbl_dgateway>
<cmsconnect_info_lbl_dns>Server Dns</cmsconnect_info_lbl_dns>
<cmsconnect_info_lbl_pref>Prefissi</cmsconnect_info_lbl_pref>
<cmsconnect_info_lbl_pref_placeholder>aggiungi un prefisso in ogni linea</cmsconnect_info_lbl_pref_placeholder>
<cmsconnect_info_lbl_proxy>Proxy</cmsconnect_info_lbl_proxy>
<cmsconnect_info_lbl_ip>Ip</cmsconnect_info_lbl_ip>
<cmsconnect_info_lbl_username>Username</cmsconnect_info_lbl_username>
<cmsconnect_info_lbl_password>Password</cmsconnect_info_lbl_password>
<cmsconnect_info_lbl_proxy_filters>Filtri proxy</cmsconnect_info_lbl_proxy_filters>
<cmsconnect_info_lbl_dns_placeholder>aggiungi un indirizzo in ogni linea</cmsconnect_info_lbl_dns_placeholder>
<cmsconnect_info_btn_load>Carica</cmsconnect_info_btn_load>
<cmsconnect_info_btn_save>Salva</cmsconnect_info_btn_save>
<connect_qrcode_activation_title>Scansiona il codice QR</connect_qrcode_activation_title>
<connect_link_activation_title>E inserisci il codice:</connect_link_activation_title>
<messages_lbl_create_message>Messaggio</messages_lbl_create_message>
<cmsconnect_info_messages_duration>Durata</cmsconnect_info_messages_duration>
<cmsconnect_info_messages_department>Dipartimento</cmsconnect_info_messages_department>
<cmsconnect_info_messages_department_maintenance>Manutenzione</cmsconnect_info_messages_department_maintenance>
<cmsconnect_info_messages_department_production>Produzione</cmsconnect_info_messages_department_production>
<cmsconnect_info_btn_send_message>Invia messaggio</cmsconnect_info_btn_send_message>
<cmsconnect_info_btn_reboot>Riavvia</cmsconnect_info_btn_reboot>
<modal_axis_info>Info Asse</modal_axis_info>
<axis_info_id>Id:</axis_info_id>
<axis_info_name>Nome:</axis_info_name>
<axis_info_torque>In coppia:</axis_info_torque>
<axis_info_gantry>Gantry:</axis_info_gantry>
<axis_info_moving>In movimento:</axis_info_moving>
<axis_info_zero>Azzerato:</axis_info_zero>
<axis_info_position>In posizione:</axis_info_position>
<axis_info_error>In errore:</axis_info_error>
<axis_info_brakealm>Allarme test freno:</axis_info_brakealm>
<bitselect_select_none>Nessuno</bitselect_select_none>
<bitselect_select_all>Tutti</bitselect_select_all>
</root>
+66 -4
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Automatically generated by nicola.carminati: 2021-02-25 -->
<!-- Automatically generated by nicola.carminati: 2021-03-10 -->
<root>
<language_it>English</language_it>
<header_maintainance_request>Maintenance request</header_maintainance_request>
@@ -358,8 +358,8 @@
<underthehood_label_val>Value</underthehood_label_val>
<underthehood_label_force>Force</underthehood_label_force>
<underthehood_label_io>IO Manager</underthehood_label_io>
<underthehood_label_loga>Log - Sheets</underthehood_label_loga>
<underthehood_label_logm>Log - Automatic cycle</underthehood_label_logm>
<underthehood_label_loga>Log - Automatic cycle</underthehood_label_loga>
<underthehood_label_logm>Log - Sheets</underthehood_label_logm>
<underthehood_label_assi>Axes Manager</underthehood_label_assi>
<underthehood_label_riscaldi>Warmers Manager</underthehood_label_riscaldi>
<underthehood_btn_details>Details</underthehood_btn_details>
@@ -368,6 +368,68 @@
<underthehood_label_channel>Channel</underthehood_label_channel>
<underthehood_label_board>Board</underthehood_label_board>
<underthehood_label_currenta>Current [A]</underthehood_label_currenta>
<underthehood_label_currentp>Current [%%]</underthehood_label_currentp>
<underthehood_label_currentp>Power [%%]</underthehood_label_currentp>
<underthehood_label_status>Status</underthehood_label_status>
<underthehood_label_date>Date</underthehood_label_date>
<underthehood_label_message>Message</underthehood_label_message>
<underthehood_btn_zero>Zero</underthehood_btn_zero>
<underthehood_label_axis_enabled>Enabled</underthehood_label_axis_enabled>
<underthehood_label_axes>Axes</underthehood_label_axes>
<underthehood_label_position>Position</underthehood_label_position>
<underthehood_label_speed>Speed</underthehood_label_speed>
<underthehood_label_torque>Torque</underthehood_label_torque>
<underthehood_label_errorcode>Error Code</underthehood_label_errorcode>
<underthehood_label_motion>Motion Ph.</underthehood_label_motion>
<underthehood_btn_align>Align</underthehood_btn_align>
<underthehood_btn_probe>Probe</underthehood_btn_probe>
<underthehood_btn_setslaves>Set slaves position</underthehood_btn_setslaves>
<cmsconnect_info_lbl_title>CMS-Connect Manager</cmsconnect_info_lbl_title>
<cmsconnect_info_menu_conn_status>Connection status</cmsconnect_info_menu_conn_status>
<cmsconnect_info_menu_networkconfig>Network configuration</cmsconnect_info_menu_networkconfig>
<cmsconnect_info_menu_proxyconfig>Proxy configuration</cmsconnect_info_menu_proxyconfig>
<cmsconnect_info_menu_activation>Activation</cmsconnect_info_menu_activation>
<cmsconnect_info_menu_messages>Messages</cmsconnect_info_menu_messages>
<cmsconnect_info_menu_reboot>Reboot</cmsconnect_info_menu_reboot>
<cmsconnect_info_lbl_url>Url</cmsconnect_info_lbl_url>
<cmsconnect_info_lbl_port>Port</cmsconnect_info_lbl_port>
<cmsconnect_info_btn_run_conn_test>Run test</cmsconnect_info_btn_run_conn_test>
<star_keyboard_softkeys>Softkey in console</star_keyboard_softkeys>
<footer_tooltip_under_hood>Unther the Hood</footer_tooltip_under_hood>
<underthehood_btn_move>Move</underthehood_btn_move>
<modal_confirm_mode_manual>Are you sure you want to switch to manual mode?</modal_confirm_mode_manual>
<cmsconnect_info_lbl_dhcp>Dhcp</cmsconnect_info_lbl_dhcp>
<cmsconnect_info_lbl_netmask>Netmask</cmsconnect_info_lbl_netmask>
<cmsconnect_info_lbl_dgateway>Default Gateway</cmsconnect_info_lbl_dgateway>
<cmsconnect_info_lbl_dns>Dns</cmsconnect_info_lbl_dns>
<cmsconnect_info_lbl_pref>Prefixes</cmsconnect_info_lbl_pref>
<cmsconnect_info_lbl_pref_placeholder>add a prefix in a new line</cmsconnect_info_lbl_pref_placeholder>
<cmsconnect_info_lbl_proxy>Proxy</cmsconnect_info_lbl_proxy>
<cmsconnect_info_lbl_ip>Ip</cmsconnect_info_lbl_ip>
<cmsconnect_info_lbl_username>Username</cmsconnect_info_lbl_username>
<cmsconnect_info_lbl_password>Password</cmsconnect_info_lbl_password>
<cmsconnect_info_lbl_proxy_filters>Proxy filters</cmsconnect_info_lbl_proxy_filters>
<cmsconnect_info_lbl_dns_placeholder>add an address in a new line</cmsconnect_info_lbl_dns_placeholder>
<cmsconnect_info_btn_load>Load</cmsconnect_info_btn_load>
<cmsconnect_info_btn_save>Save</cmsconnect_info_btn_save>
<connect_qrcode_activation_title>Scan the QRCode</connect_qrcode_activation_title>
<connect_link_activation_title>and type the code:</connect_link_activation_title>
<messages_lbl_create_message>Message</messages_lbl_create_message>
<cmsconnect_info_messages_duration>Duration</cmsconnect_info_messages_duration>
<cmsconnect_info_messages_department>Department</cmsconnect_info_messages_department>
<cmsconnect_info_messages_department_maintenance>Maintenance</cmsconnect_info_messages_department_maintenance>
<cmsconnect_info_messages_department_production>Production</cmsconnect_info_messages_department_production>
<cmsconnect_info_btn_send_message>Send Message</cmsconnect_info_btn_send_message>
<cmsconnect_info_btn_reboot>Reboot</cmsconnect_info_btn_reboot>
<modal_axis_info>Axis Info</modal_axis_info>
<axis_info_id>Id:</axis_info_id>
<axis_info_name>Name:</axis_info_name>
<axis_info_torque>In Torque:</axis_info_torque>
<axis_info_gantry>Gantry:</axis_info_gantry>
<axis_info_moving>Is Moving:</axis_info_moving>
<axis_info_zero>Zeroed:</axis_info_zero>
<axis_info_position>In Position:</axis_info_position>
<axis_info_error>In Error:</axis_info_error>
<axis_info_brakealm>Brake Test Alarm:</axis_info_brakealm>
<bitselect_select_none>None</bitselect_select_none>
<bitselect_select_all>All</bitselect_select_all>
</root>
+1 -5
View File
@@ -15,7 +15,7 @@
<add key="ClientSettingsProvider.ServiceUri" value="" />
<add key="ServerServiceName" value="MariaDB" />
<add key="nMaxParamWrite" value="5" />
<add key="delayParamWrite" value="5" />
<add key="delayParamWrite" value="10" />
<add key="ewmaPar100" value="40" />
<add key="flirSwapXY" value="true" />
<add key="cacheWarmers" value="false" />
@@ -115,10 +115,6 @@
<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>
<dependentAssembly>
<assemblyIdentity name="S7.Net" publicKeyToken="d5812d469e84c693" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-0.8.1.0" newVersion="0.8.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<connectionStrings>
@@ -8,6 +8,7 @@ using System.Security.Principal;
using Thermo.Active.Config;
using Thermo.Active.Database.Controllers;
using Thermo.Active.Model.DatabaseModels;
using Thermo.Active.Utils;
using static Thermo.Active.Config.ServerConfig;
using static Thermo.Active.Listeners.SignalRStaticObjects;
using static Thermo.Active.Model.Constants;
@@ -28,7 +29,11 @@ namespace Thermo.Active.Attributes
// Find user session on this machine
SessionModel session = sessionsController.FindSessionByToken(token);
if (session == null)
{
ThermoActiveLogger.LogError($"SignalRAuthorizeAttribute | AuthorizeHubConnection | session == null");
return false;
}
}
return base.AuthorizeHubConnection(hubDescriptor, request);
@@ -39,11 +44,16 @@ namespace Thermo.Active.Attributes
var connectionId = hubIncomingInvokerContext.Hub.Context.ConnectionId;
var request = hubIncomingInvokerContext.Hub.Context.Request;
var token = request.QueryString.Get("Authorization");
if (!string.IsNullOrEmpty(token))
{
// check authorization
if (!CheckAuthorization(FunctionAccess, token, out int machineId, out int userId))
{
ThermoActiveLogger.LogError($"SignalRAuthorizeAttribute | AuthorizeHubMethodInvocation | CheckAuthorization == false");
return false;
}
var claims = new ClaimsIdentity(AUTHENTICATION_TYPE);
claims.AddClaim(new Claim(USER_ID_KEY, userId.ToString()));
@@ -66,11 +76,17 @@ namespace Thermo.Active.Attributes
// Find user session on this machine
SessionModel session = sessionsController.FindSessionByToken(token);
if (session == null)
{
ThermoActiveLogger.LogError($"SignalRAuthorizeAttribute | CheckAuthorization | session == null");
return false;
}
// Check if the machine is the same where the user logged in
if (session.MachineUser.MachineId != MachineConfig.MachineId)
{
ThermoActiveLogger.LogError($"SignalRAuthorizeAttribute | CheckAuthorization | session.MachineUser.MachineId != MachineConfig.MachineId | " + session.MachineUser.MachineId + "," + MachineConfig.MachineId);
return false;
}
machineId = session.MachineUser.MachineId;
userId = session.MachineUser.UserId;
@@ -91,12 +107,18 @@ namespace Thermo.Active.Attributes
if (Action == ACTIONS.READ)
{ // Check read permissions
if (functionAccess.ReadLevelMin > machineUser.Role.Level)
{
ThermoActiveLogger.LogError($"SignalRAuthorizeAttribute | CheckAuthorization | functionAccess.ReadLevelMin > machineUser.Role.Level | " + functionAccess.ReadLevelMin + "," + machineUser.Role.Level);
return false; // Not authorized
}
}
else
{ // Check write permissions
if (functionAccess.WriteLevelMin > machineUser.Role.Level)
{
ThermoActiveLogger.LogError($"SignalRAuthorizeAttribute | CheckAuthorization | functionAccess.WriteLevelMin > machineUser.Role.Level | " + functionAccess.WriteLevelMin + "," + machineUser.Role.Level);
return false; // Not authorized
}
}
// Check if PLC bit exists
@@ -105,13 +127,21 @@ namespace Thermo.Active.Attributes
// Check if functionality is enabled by PLC
var functionalityIsEnabled = LastRuntimeFunctionality.Where(x => x.Name == functionName).FirstOrDefault();
if (functionalityIsEnabled == null || functionalityIsEnabled.Enabled == false)
return false;
{
ThermoActiveLogger.LogError($"SignalRAuthorizeAttribute | CheckAuthorization | functionalityIsEnabled == null || functionalityIsEnabled.Enabled == false | " + functionalityIsEnabled + "," + functionalityIsEnabled.Enabled);
return false; // Not authorized
}
}
}
else
{
ThermoActiveLogger.LogError($"SignalRAuthorizeAttribute | CheckAuthorization | functionAccess != null && ServerConfigController.CheckAreaStatus(functionAccess.Area) | " + functionAccess + "," + functionAccess.Area);
return false;
}
// Authorized
ThermoActiveLogger.LogInfo($"SignalRAuthorizeAttribute | CheckAuthorization | Authorized | ");
return true;
}
}
@@ -22,12 +22,14 @@ using static Thermo.Active.Model.Constants;
namespace Thermo.Active.Controllers.WebApi
{
[RoutePrefix("api/maintenance_manager")]
public class ApiMaintenanceController : ApiController
public class ApiMaintenanceController : aBaseApiController // ApiController
{
#if false
/// <summary>
/// Oggetto adapter condiviso da WebAPI
/// </summary>
protected static NcAdapter ncAdapter = new NcAdapter();
protected static NcAdapter ncAdapter = new NcAdapter();
#endif
[Route("maintenances"), HttpGet]
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.MAINTENANCE, Action = ACTIONS.READ)]
@@ -10,7 +10,7 @@ using static Thermo.Active.Model.Constants;
namespace Thermo.Active.Controllers.WebApi
{
[RoutePrefix("api/authorization")]
public class AuthorizationController : ApiController
public class AuthorizationController : ApiController
{
[Route("functions"), HttpGet]
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.GENERAL, Action = ACTIONS.READ)]
@@ -13,12 +13,14 @@ using static Thermo.Active.Model.Constants;
namespace Thermo.Active.Controllers.WebApi
{
[RoutePrefix("api/user_softkey")]
public class FavoriteUserSoftkeyController : ApiController
public class FavoriteUserSoftkeyController : aBaseApiController // ApiController
{
#if false
/// <summary>
/// Oggetto adapter condiviso da WebAPI
/// </summary>
protected static NcAdapter ncAdapter = new NcAdapter();
protected static NcAdapter ncAdapter = new NcAdapter();
#endif
[Route("favorite"), HttpGet]
@@ -12,12 +12,14 @@ using static Thermo.Active.Utils.LanguageController;
namespace Thermo.Active.Controllers.WebApi
{
[RoutePrefix("api/language")]
public class LanguageController : ApiController
public class LanguageController : aBaseApiController // ApiController
{
#if false
/// <summary>
/// Oggetto adapter condiviso da WebAPI
/// </summary>
protected static NcAdapter ncAdapter = new NcAdapter();
protected static NcAdapter ncAdapter = new NcAdapter();
#endif
[Route("languages"), HttpGet]
public IHttpActionResult GetLanguageList()
@@ -8,12 +8,14 @@ using Thermo.Active.Utils;
namespace Thermo.Active.Controllers.WebApi
{
[RoutePrefix("api/ModBlock")]
public class ModulesController : ApiController
public class ModulesController : aBaseApiController // ApiController
{
#if false
/// <summary>
/// Oggetto adapter condiviso da WebAPI
/// </summary>
protected static NcAdapter ncAdapter = new NcAdapter();
protected static NcAdapter ncAdapter = new NcAdapter();
#endif
[Route("current"), HttpGet]
public IHttpActionResult GetCurrentModules()
@@ -8,13 +8,15 @@ using static Thermo.Active.Model.Constants;
namespace Thermo.Active.Controllers.WebApi
{
[RoutePrefix("api/nc")]
public class NcApiController : ApiController
public class NcApiController : aBaseApiController // ApiController
{
#if false
/// <summary>
/// Oggetto adapter condiviso da WebAPI
/// </summary>
protected static NcAdapter ncAdapter = new NcAdapter();
#endif
[Route("generic_data"), HttpGet]
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.NC_DATA, Action = ACTIONS.READ)]
public IHttpActionResult GetNcGenericData()
@@ -11,13 +11,16 @@ using static Thermo.Active.Model.Constants;
namespace Thermo.Active.Controllers.WebApi
{
[RoutePrefix("api/prod")]
public class ProdController : ApiController
public class ProdController : aBaseApiController //ApiController
{
#if false
/// <summary>
/// Oggetto adapter condiviso da WebAPI
/// </summary>
protected static NcAdapter ncAdapter = new NcAdapter();
#endif
/// <summary>
/// Request mode SETUP
/// </summary>
@@ -26,12 +26,14 @@ using static Thermo.Active.Model.Constants;
namespace Thermo.Active.Controllers.WebApi
{
[RoutePrefix("api/recipe")]
public class RecipeController : ApiController
public class RecipeController : aBaseApiController // ApiController
{
#if false
/// <summary>
/// Oggetto adapter condiviso da WebAPI
/// </summary>
protected static NcAdapter ncAdapter = new NcAdapter();
protected static NcAdapter ncAdapter = new NcAdapter();
#endif
[Route("overview"), HttpGet]
public IHttpActionResult GetOverview()
@@ -100,7 +102,8 @@ namespace Thermo.Active.Controllers.WebApi
}
// read recipe!
libraryError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> prevRecipe);
//libraryError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> prevRecipe);
libraryError = ncAdapter.ReadRecipeData(true, true, out Dictionary<string, DTORecipeParam> prevRecipe);
if (libraryError.IsError())
{
ThermoActiveLogger.LogError($"GetRecipeOverview error | {libraryError.exception}");
@@ -698,6 +701,7 @@ namespace Thermo.Active.Controllers.WebApi
}
// copy data to PLC
checkError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> prevRecipe);
if (checkError.IsError())
@@ -13,12 +13,14 @@ namespace Thermo.Active.Controllers.WebApi
{
[RoutePrefix("api/scada")]
public class ScadaController : ApiController
public class ScadaController : aBaseApiController // ApiController
{
#if false
/// <summary>
/// Oggetto adapter condiviso da WebAPI
/// </summary>
protected static NcAdapter ncAdapter = new NcAdapter();
protected static NcAdapter ncAdapter = new NcAdapter();
#endif
[Route("list"), HttpGet]
public IHttpActionResult GetScadaList()
@@ -8,12 +8,14 @@ using Thermo.Active.Utils;
namespace Thermo.Active.Controllers.WebApi
{
[RoutePrefix("api/starred_softkey")]
public class StarredUserSoftKeyController : ApiController
public class StarredUserSoftKeyController : aBaseApiController // ApiController
{
#if false
/// <summary>
/// Oggetto adapter condiviso da WebAPI
/// </summary>
protected static NcAdapter ncAdapter = new NcAdapter();
protected static NcAdapter ncAdapter = new NcAdapter();
#endif
[Route("get"), HttpGet]
public IHttpActionResult GetStarredUserSoftkey()
@@ -15,6 +15,7 @@ using System.Windows.Media.Animation;
using TeamDev.SDK.MVVM;
using Thermo.Active.Config;
using Thermo.Active.Database.Controllers;
using Thermo.Active.Model.DatabaseModels;
using Thermo.Active.Model.DTOModels;
using Thermo.Active.Model.DTOModels.ThIO;
using Thermo.Active.Model.DTOModels.ThRecipe;
@@ -28,12 +29,15 @@ using static Thermo.Active.Model.Constants;
namespace Thermo.Active.Controllers.WebApi
{
[RoutePrefix("api/underthehood")]
public class UnderTheHoodController : ApiController
public class UnderTheHoodController : aBaseApiController // ApiController
{
#if false
/// <summary>
/// Oggetto adapter condiviso da WebAPI
/// </summary>
protected static NcAdapter ncAdapter = new NcAdapter();
protected static NcAdapter ncAdapter = new NcAdapter();
#endif
[ResponseType(typeof(DTOCycleLog))]
[Route("CycleLogRefresh"), HttpGet]
@@ -71,7 +75,6 @@ namespace Thermo.Active.Controllers.WebApi
// recupero dati paginati
libraryError = ncAdapter.GetCycleLog(from, to, out currCycleLog);
if (libraryError.IsError())
{
ThermoActiveLogger.LogError($"GetCycleLog error | {libraryError.exception}");
@@ -81,7 +84,34 @@ namespace Thermo.Active.Controllers.WebApi
return Ok(currCycleLog);
}
[ResponseType(typeof(DTOChannelsIO))]
[ResponseType(typeof(bool))]
[Route("GetAxesAdvMode"), HttpGet]
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.MAINTENANCE, Action = ACTIONS.WRITE)]
public IHttpActionResult GetAxesAdvMode()
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.IsError())
{
ThermoActiveLogger.LogError($"NC Not connected! | ForceChAO | {libraryError.exception}");
return InternalServerError();
}
// chiamo scrittura
bool advMode = false;
libraryError = ncAdapter.GetAxesAdvMode(out advMode);
if (libraryError.IsError())
{
ThermoActiveLogger.LogError($"GetCycleLog error | {libraryError.exception}");
return BadRequest(libraryError.localizationKey);
}
// ritorno solo fatto!
return Ok(advMode);
}
[ResponseType(typeof(DTOChannelsIO))]
[Route("channels_io"), HttpGet]
public IHttpActionResult GetChannelsIO()
{
@@ -309,6 +339,25 @@ namespace Thermo.Active.Controllers.WebApi
}
}
[Route("SetAxesAdvMode"), HttpPut]
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.MAINTENANCE, Action = ACTIONS.WRITE)]
public IHttpActionResult SetAxesAdvMode(bool value)
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.IsError())
{
ThermoActiveLogger.LogError($"NC Not connected! | ForceChAO | {libraryError.exception}");
return InternalServerError();
}
// chiamo scrittura
ncAdapter.SetAxesAdvMode(value);
// ritorno solo fatto!
return Ok();
}
[Route("io_sample_fast"), HttpPut]
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.MAINTENANCE, Action = ACTIONS.WRITE)]
public IHttpActionResult SetFastSample(bool value)
@@ -319,5 +368,41 @@ namespace Thermo.Active.Controllers.WebApi
// ritorno solo fatto!
return Ok(expires);
}
[ResponseType(typeof(List<HistorySheetModel>))]
[Route("SheetHistory"), HttpGet]
public IHttpActionResult GetSheetHistory()
{
using (HistorySheetsController hsc = new HistorySheetsController())
{
List<HistorySheetModel> models = hsc.GetData();
return Ok(models);
}
}
[ResponseType(typeof(List<HistorySheetModel>))]
[Route("SheetHistoryFiltered"), HttpGet]
public IHttpActionResult GetSheetHistoryFiltered(int start, int number)
{
using (HistorySheetsController hsc = new HistorySheetsController())
{
List<HistorySheetModel> models = hsc.GetData(start, number);
return Ok(models);
}
}
[ResponseType(typeof(int))]
[Route("SheetHistoryCount"), HttpGet]
public IHttpActionResult GetSheetHistoryCount()
{
using (HistorySheetsController hsc = new HistorySheetsController())
{
return Ok(hsc.count());
}
}
}
}
@@ -18,14 +18,16 @@ using System.Linq;
namespace Thermo.Active.Controllers.WebApi
{
[RoutePrefix("api/warmers")]
public class WarmersController : ApiController
public class WarmersController : aBaseApiController // ApiController
{
#region Protected Fields
#if false
/// <summary>
/// Oggetto adapter condiviso da WebAPI
/// </summary>
protected static NcAdapter ncAdapter = new NcAdapter();
protected static NcAdapter ncAdapter = new NcAdapter();
#endif
protected static Dictionary<int, ThermoPoint> MeasurePoints = new Dictionary<int, ThermoPoint>();
@@ -589,6 +591,19 @@ namespace Thermo.Active.Controllers.WebApi
return NotFound();
}
}
/// <summary>
///Take photo Thermocam
/// </summary>
/// <param name="channelsTemp"></param>
/// <returns></returns>
[Route("takeTcamImage"), HttpPut]
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.RECIPE_MANAGER, Action = ACTIONS.READ)]
public IHttpActionResult TakeTcamImage()
{
MessageServices.Current.Publish(TAKE_SNAPSHOT_THERMO);
return Ok();
}
#endregion Public Methods
}
@@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
using Thermo.Active.NC;
namespace Thermo.Active.Controllers.WebApi
{
public class aBaseApiController : ApiController
{
/// <summary>
/// Oggetto adapter condiviso da WebAPI
/// </summary>
protected static NcAdapter ncAdapter = new NcAdapter();
#if false
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (ncAdapter != null)
{
ncAdapter.Dispose();
}
}
base.Dispose(disposing);
}
#endif
}
}
@@ -50,7 +50,13 @@ namespace Thermo.Active.Listeners.Database
}
}
}
public static void cleanHistorySheets()
{
using (HistorySheetsController HSC = new HistorySheetsController())
{
HSC.Clean();
}
}
public static void UpdateAlarms(object alarmsObj)
{
@@ -68,6 +68,10 @@ namespace Thermo.Active.Listeners
{
SignalRListener.SendThermoChannelsIoData(a);
}));
infos.Add(MessageServices.Current.Subscribe(SEND_NEWTCAMIMAGE, (a, b) =>
{
SignalRListener.SendTCamNewImage(a);
}));
infos.Add(MessageServices.Current.Subscribe(SEND_ACTIVE_PROGRAM_DATA, (a, b) =>
{
SignalRListener.SendActiveProgramData(a);
@@ -130,6 +134,7 @@ namespace Thermo.Active.Listeners
}));
infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_PROD_INFO_DATA, (a, b) =>
{
SignalRDatabaseHandler.cleanHistorySheets();
SignalRListener.SendThermoProdInfoData(a);
}));
infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_PROD_CYCLE_DATA, (a, b) =>
@@ -326,6 +326,10 @@ namespace Thermo.Active.Listeners.SignalR
lastSetpointHmiInvalid = currMessage;
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
context.Clients.Group("ncData").setpointHmiInvalid(currMessage);
context.Clients.Group("ncData").recipeFullDataInvalidSetpoint(LastRecipeFullData);
context.Clients.Group("ncData").warmersData(LastWarmersData);
}
}
@@ -611,6 +615,13 @@ namespace Thermo.Active.Listeners.SignalR
}
}
public static void SendTCamNewImage(object newImageDate)
{
DateTime imageDate = (DateTime)newImageDate;
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
context.Clients.Group("ncData").newThermoCamImage(newImageDate);
}
public static void SetGatewayRebootStatus(object status)
{
string msg = status.ToString();
@@ -679,7 +690,7 @@ namespace Thermo.Active.Listeners.SignalR
// Send THERMO Recipe data
group.recipeFullData(LastRecipeFullData);
group.recipeOverData(LastRecipeOverData);
group.setpointHmiInvalid();
// Send THERMO Modules data
group.modulesData(LastModulesData);
// Send THERMO Warmers data
@@ -689,6 +700,8 @@ namespace Thermo.Active.Listeners.SignalR
group.gaugeData(LastLiveProdData);
// THERMO prod info data
group.prodInfoData(LastProdInfoData);
group.prodPanelData(LastProdPanelData);
// THERMO prod cycle data
group.prodCycleData(LastProdCycleData);
+1 -1
View File
@@ -30,4 +30,4 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.1.174")]
[assembly: AssemblyVersion("1.1.191")]
+3 -4
View File
@@ -86,8 +86,7 @@ english.InstallingDotNet = Installing .Net
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkablealone;
Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: checkablealone;
Name: startupicon; Description: {cm:CreateStartupIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: checkablealone;
Name: sinumerikicons; Description: {cm:CreateSinumerikIcons}; GroupDescription: {cm:AdditionalIcons}; Flags: checkablealone;
Name: startupicon; Description: {cm:CreateStartupIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: checkablealone;
[Files]
Source: "{#MySourcePath}\Thermo.Active.exe"; DestDir: "{app}"; Flags: ignoreversion
@@ -98,8 +97,8 @@ Source: "{#MySourcePath}\*.config"; DestDir: "{app}"; Flags: ignoreversion;
Source: "{#MySourcePath}\Config\*.xml"; DestDir: "{app}\Config\"; Flags: ignoreversion;
; Languages
Source: "{#MySourcePath}\languages\*.*"; DestDir: "{app}\languages\"; Flags: ignoreversion;
; Libs
Source: "{#MySourcePath}\lib\*.*"; DestDir: "{app}\lib\"; Flags: ignoreversion;
; dll
Source: "{#MySourcePath}\dll\*.*"; DestDir: "{app}\dll\"; Flags: ignoreversion recursesubdirs;
; Client copy
Source: "{#MySourcePath}\Client\*.*"; DestDir: "{app}\Client\"; Flags: recursesubdirs ignoreversion; AfterInstall: DeleteLocalStorage
; WWWRoot Files
+1
View File
@@ -222,6 +222,7 @@
<Compile Include="Attributes\WebApiAuthorizeAttribute.cs" />
<Compile Include="Attributes\SignalRAuthorizeAttribute.cs" />
<Compile Include="Controllers\SignalR\NcHub.cs" />
<Compile Include="Controllers\WebApi\aBaseApiController.cs" />
<Compile Include="Controllers\WebApi\ApiAlarmController.cs" />
<Compile Include="Controllers\WebApi\UnderTheHoodController.cs" />
<Compile Include="Controllers\WebApi\SchedTaskController.cs" />
+3
View File
@@ -0,0 +1,3 @@
{
"lockfileVersion": 1
}
+3
View File
@@ -119,6 +119,9 @@ namespace Thermo.Active
ListenersHandler.Stop();
// Close WinForm
ServerControlWindow.Stop();
// force close
Environment.Exit(0);
}
private static bool ValidateAddress(string Addr)
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

@@ -2092,7 +2092,7 @@
}
.body {
height: calc(~"100%"- 64px);
height: calc(~"100%" - 64px);
overflow: hidden;
align-items: center;
justify-content: center;
@@ -3476,7 +3476,6 @@
position: absolute;
width: 100%;
height: 100%;
background: #ffffff;
top: 0;
display: block;
overflow: hidden;
@@ -3485,6 +3484,9 @@
width: 100%;
height: 100%;
cursor: -webkit-grab;
display: flex;
justify-content: center;
align-items: center;
}
.loading {
@@ -3530,6 +3532,17 @@
}
.btngroup2{
position: absolute;
bottom: 510px;
right: 0;
margin-right: 20px;
img{
box-shadow: none;
filter: grayscale(1)brightness(0)invert(1);
}
}
.btngroup {
position: absolute;
bottom: 0;
@@ -3562,6 +3575,9 @@
cursor: pointer;
color: #FFF;
z-index: 1;
display: flex;
justify-content: center;
align-items: center;
}
button:disabled {
@@ -63,7 +63,7 @@
grid-template-columns: 50% 50%;
grid-template-rows: 70% 30%;
display: grid;
font-size: 18px;
font-size: 27px;
span {
grid-column-start: 1;
grid-column-end: -1;
@@ -71,12 +71,14 @@
}
small {
grid-row: 2;
padding-left: 5px;
font-size: 13px;
padding-left: 10px;
font-size: 15px;
padding-bottom: 5px;
&:last-of-type {
padding-left: 0px;
grid-column: 2;
text-align: right;
padding-right: 5px;
padding-right: 10px;
}
}
}
@@ -31,6 +31,16 @@
outline: 5px #1791ff auto;
}
}
.doing{
width: 100%;
display: flex;
flex-flow: column;
justify-content: center;
align-items: center;
font-size: 4em;
height: calc(100% - 65px);
color: #4f4f4f;
}
.select_folder {
height: 48px;
+33 -8
View File
@@ -29,6 +29,16 @@
.setup .notes_textarea:focus {
outline: 5px #1791ff auto;
}
.setup .doing {
width: 100%;
display: flex;
flex-flow: column;
justify-content: center;
align-items: center;
font-size: 4em;
height: calc(100% - 65px);
color: #4f4f4f;
}
.setup .select_folder {
height: 48px;
background-color: #fff;
@@ -2311,7 +2321,7 @@ article .box .body {
color: #fff;
}
.modal.modal-image .body {
height: calc(100%-64px);
height: calc(100% - 64px);
overflow: hidden;
align-items: center;
justify-content: center;
@@ -3658,7 +3668,6 @@ article .box .body {
position: absolute;
width: 100%;
height: 100%;
background: #ffffff;
top: 0;
display: block;
overflow: hidden;
@@ -3667,6 +3676,9 @@ article .box .body {
width: 100%;
height: 100%;
cursor: -webkit-grab;
display: flex;
justify-content: center;
align-items: center;
}
.imageViewerZoom .loading {
position: absolute;
@@ -3705,6 +3717,16 @@ article .box .body {
margin-right: 20px;
margin-top: 20px;
}
.imageViewerZoom .btngroup2 {
position: absolute;
bottom: 510px;
right: 0;
margin-right: 20px;
}
.imageViewerZoom .btngroup2 img {
box-shadow: none;
filter: grayscale(1) brightness(0) invert(1);
}
.imageViewerZoom .btngroup {
position: absolute;
bottom: 0;
@@ -3720,8 +3742,6 @@ article .box .body {
}
.imageViewerZoom button {
font-size: 20px;
justify-content: center;
display: flex;
background-color: #ffffff;
background-image: linear-gradient(to bottom, #1756ad, #002680);
box-shadow: 0 3px 5px 0 rgba(0, 0, 0, 0.4);
@@ -3734,6 +3754,9 @@ article .box .body {
cursor: pointer;
color: #FFF;
z-index: 1;
display: flex;
justify-content: center;
align-items: center;
}
.imageViewerZoom button:disabled {
background-color: #002680 !important;
@@ -4871,7 +4894,7 @@ article .box .body {
grid-template-columns: 50% 50%;
grid-template-rows: 70% 30%;
display: grid;
font-size: 18px;
font-size: 27px;
}
.warmers svg .resistance.id span {
grid-column-start: 1;
@@ -4880,13 +4903,15 @@ article .box .body {
}
.warmers svg .resistance.id small {
grid-row: 2;
padding-left: 5px;
font-size: 13px;
padding-left: 10px;
font-size: 15px;
padding-bottom: 5px;
}
.warmers svg .resistance.id small:last-of-type {
padding-left: 0px;
grid-column: 2;
text-align: right;
padding-right: 5px;
padding-right: 10px;
}
.warmers .icon {
font-size: 30px;
+18412 -18460
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -333,6 +333,7 @@ declare module Recipe {
options_thermoregulator_9_setpoint?: IValue,
options_thermoregulator_10_enabled?: IValue,
options_thermoregulator_10_setpoint?: IValue,
extraction_main_drawing_enabled?: IValue,
}
}
@@ -12,6 +12,7 @@ import { loginService, machineService, localizationService } from "./services";
import { prodService } from "./services/prodService";
import * as iziToast from "izitoast";
import { underTheHoodService } from "./services/underTheHoodService";
import { warmersService } from "./services/warmersService";
// import { UsersService } from "./services/usersService";
@@ -60,19 +61,16 @@ async function loadMachineConfig() {
await loginService.getUserInfo();
try {
let machine = new machineService();
let result = await machine.getAreasConfiguration();
machineStatusActions.setAreasConfg(store, result);
let mcresult = await machine.getMachineConfiguration();
await underTheHoodService.getChannelsConfig();
await warmersService.GetResistances();
machineStatusActions.setWarmersParameters(store, mcresult.additionalParameters);
await prodService.GetProdPanel();
await underTheHoodService.getChannels();
await underTheHoodService.getChannelsConfig();
// load default language
if (!(store.state as AppModel).localization.currentLanguage) {
@@ -44,7 +44,6 @@ export default {
},
methods: {
sendMessage(){
console.log(this.department);
this.$emit("click", this.message, this.estimateTime, this.department);
}
},
@@ -14,7 +14,7 @@
</nav>
<section class="main">
<header>{{'star-keyboard-softkeys' | localize("Keyboard softkeys")}}</header>
<header>{{'star_keyboard_softkeys' | localize("Keyboard softkeys")}}</header>
<article>
<button class="softkey star" :disabled="keyb1==0" :click="keyb1click">
<span class="icon">
@@ -5,7 +5,7 @@
<label :class="{red: value.isScrap}" v-else>{{value.numDone}}</label>
<div class="col">
<small>{{'history-item_warmup' | localize("tempo riscaldo")}}</small>
<span>{{Math.floor(value.timeWarm / 60) | round(0)}}'{{value.timeWarm % 60 | round(0)}}''</span>
<span>{{value.timeWarm | round(0)}}''</span>
</div>
<div class="col">
<small>{{'history-item_vacuum' | localize("vuoto")}}</small>
@@ -29,7 +29,7 @@
</div>
<div class="col">
<small>{{'history_item_venttime' | localize("tempo ventilazione")}}</small>
<span>{{value.timeVent / 60 | round(0)}}'{{value.timeVent % 60 | round(0)}}''</span>
<span>{{value.timeVent | round(0)}}''</span>
</div>
<div class="col">
<small>{{'history_item_cycletimegross' | localize("tempo ciclo lordo")}}</small>
@@ -53,7 +53,7 @@
<div class="row">
<div class="col">
<small>{{'history_item_vacuumtime' | localize("tempo vuoto")}}</small>
<span>{{Math.floor(value.timeVacuum / 60) | round(0)}}'{{value.timeVacuum % 60 | round(0)}}''</span>
<span>{{value.timeVacuum | round(0)}}''</span>
</div>
<div class="col">
<small>{{'history_item_mouldenergyin' | localize("energia utilizzata in")}}</small>
@@ -9,7 +9,6 @@ export default class stats extends Vue {
value: { [id: number]: number };
get Values(): number[] {
console.log(this.value);
var r: number[] = [];
if (this.value)
for (const i in this.value) {
@@ -10,18 +10,6 @@
<line :x1="0" :x2="width" :y1="height*2/3" :y2="height*2/3" stroke="#353535" stroke-width="1" />
<line :x1="0" :x2="width" :y1="height" :y2="height" stroke="#353535" stroke-width="1" />
</g>
<!--<g chart="chart-axis">
<line
v-for="(i,idx) in Values"
:key="idx"
:x1="idx * (width / 19)"
:x2="idx * (width / 19)"
:y1="0"
:y2="height"
stroke="#35353550"
stroke-width="1"
/>
</g>-->
<g>
<polygon :points="calcPointFill" style="fill:#1791ff;stroke-width:0" fill-opacity="0.3" />
<path fill="none" :d="pathData" v-if="pathData" stroke="#1791ff" stroke-width="4" />
@@ -113,7 +113,7 @@ export default class Dashboard extends Vue {
let min = Math.min(this.lastItem.numDone, ... this.items.map(i => i.numDone));
let result = await prodService.History(min - 1, min - 1)
let result = await prodService.History(min - 1)
for (const i of result) {
this.itemsMap.set(i.numDone, i);
}
@@ -130,8 +130,6 @@ export default class Dashboard extends Vue {
}
async mounted() {
prodService.GetProdPanel();
let $this = this;
setInterval(() => {
$this.now = moment();
@@ -202,13 +200,33 @@ export default class Dashboard extends Vue {
}
incrementPyr() {
this.recipe.pyrometer_pyrometer_setpoint.setpointHMI++;
this.recipe.pyrometer_pyrometer_setpoint.setpointHMI++;
this.recipe.pyrometer_upperthermoregulator_start_adjustment.setpointHMI++;
this.recipe.pyrometer_upperthermoregulator_end_adjustment.setpointHMI++;
this.recipe.pyrometer_lowerthermoregulator_start_adjustment.setpointHMI++;
this.recipe.pyrometer_lowerthermoregulator_end_adjustment.setpointHMI++;
this.debouncedRecipeSave();
}
decrementPyr() {
this.recipe.pyrometer_pyrometer_setpoint.setpointHMI--;
this.recipe.pyrometer_pyrometer_setpoint.setpointHMI--;
this.recipe.pyrometer_upperthermoregulator_start_adjustment.setpointHMI--;
this.recipe.pyrometer_upperthermoregulator_end_adjustment.setpointHMI--;
this.recipe.pyrometer_lowerthermoregulator_start_adjustment.setpointHMI--;
this.recipe.pyrometer_lowerthermoregulator_end_adjustment.setpointHMI--;
this.debouncedRecipeSave();
}
togglePyr() {
if(this.recipe.pyrometer_pyrometer_enabled.setpointHMI == 1)
this.recipe.pyrometer_pyrometer_enabled.setpointHMI = 0;
else
this.recipe.pyrometer_pyrometer_enabled.setpointHMI = 1;
this.debouncedRecipeSave();
}
get pyrOn(){
return this.recipe.pyrometer_pyrometer_enabled.setpointHMI == 1;
}
debouncedRecipeSave = debounce(this.savePyr, 1000);
public async savePyr(){
@@ -227,7 +245,11 @@ export default class Dashboard extends Vue {
get payload() {
return {
pyrometer_pyrometer_enabled: this.recipe.pyrometer_pyrometer_enabled,
pyrometer_pyrometer_setpoint: this.recipe.pyrometer_pyrometer_setpoint
pyrometer_pyrometer_setpoint: this.recipe.pyrometer_pyrometer_setpoint,
pyrometer_upperthermoregulator_start_adjustment: this.recipe.pyrometer_upperthermoregulator_start_adjustment,
pyrometer_upperthermoregulator_end_adjustment: this.recipe.pyrometer_upperthermoregulator_end_adjustment,
pyrometer_lowerthermoregulator_start_adjustment: this.recipe.pyrometer_lowerthermoregulator_start_adjustment,
pyrometer_lowerthermoregulator_end_adjustment: this.recipe.pyrometer_lowerthermoregulator_end_adjustment,
}
}
@@ -118,9 +118,11 @@
<button @click="decrementPyr()" :disabled="!recipe.pyrometer_pyrometer_setpoint.status.enabled" >
<i class="fa fa-minus"></i>
</button>
<div :class="{'notenabled': recipe.pyrometer_pyrometer_enabled.setpointHMI == 0}">
<div :class="{'notenabled': recipe.pyrometer_pyrometer_enabled.setpointHMI == 0}" @click="togglePyr">
<small>{{'dashboard-setpoint' | localize('set point')}}</small>
<span :class="{'strike': recipe.pyrometer_pyrometer_enabled.setpointHMI == 0}">{{recipe.pyrometer_pyrometer_setpoint.setpointHMI}}{{recipe.pyrometer_pyrometer_setpoint.unitMeasure}}</span>
<div v-if="pyrOn">ON</div>
<div v-else>OFF</div>
</div>
<button @click="incrementPyr()" :disabled="!recipe.pyrometer_pyrometer_setpoint.status.enabled" >
<i class="fa fa-plus"></i>
@@ -37,12 +37,12 @@
:current-time="gaugeData.timeAdv.value"
></gantt>
<div class="zoom-buttons">
<button class="btn">
<i class="fa fa-search-minus" @click="zoomFactor /= zoomStep"></i>
<button class="btn" @click="zoomFactor /= zoomStep">
<i class="fa fa-search-minus"></i>
</button>
<zoom :min="0" :max="2" :value="zoomFactor"></zoom>
<button class="btn">
<i class="fa fa-search-plus" @click="zoomFactor *= zoomStep"></i>
<button class="btn" @click="zoomFactor *= zoomStep">
<i class="fa fa-search-plus" ></i>
</button>
<button
class="realign"
@@ -15,13 +15,19 @@ export default class backupRecipe extends Vue {
@Prop()
deferred: Deferred<string>;
folderlist = [];
devicelist = [];
device = "";
folder = "";
canDo = false;
backupping = false;
mounted() {
if (typeof cmsClient != "undefined") {
this.devicelist = JSON.parse(cmsClient.getOSextDriveList());
this.folderlist = JSON.parse(cmsClient.getAllRecipeDirectories());
}
this.canDo = false;
}
@@ -29,13 +35,38 @@ export default class backupRecipe extends Vue {
@Watch("device")
valueCHange(){
this.canDo = this.device.trim() != "";
this.canDo = this.device.trim() != "" && this.folder.trim() != "";
}
@Watch("folder")
folderCHange(){
this.canDo = this.device.trim() != "" && this.folder.trim() != "";
}
run() {
if (typeof cmsClient != "undefined") {
this.canDo = false;
var obj = JSON.parse(cmsClient.backupRecipes(this.device));
this.backupping = true;
setTimeout(() => {
this.realBackup();
}, 300);
}
}
close() {
messageService.deleteChannel("esc_pressed");
this.deferred.reject();
ModalHelper.HideModal();
}
realBackup(){
if(this.folder == "ALL_SUBFOLDERS")
var obj = JSON.parse(cmsClient.backupRecipes(this.device));
else
var obj = JSON.parse(cmsClient.backupSubRecipes(this.device,this.folder));
this.backupping = false;
if (obj.error) {
(iziToast as any).error({
title: "error",
@@ -50,12 +81,5 @@ export default class backupRecipe extends Vue {
this.deferred.resolve();
ModalHelper.HideModal();
}
}
}
close() {
messageService.deleteChannel("esc_pressed");
this.deferred.reject();
ModalHelper.HideModal();
}
}
@@ -1,12 +1,22 @@
<template>
<div class="setup">
<modal type="save-as" :title="'modal_title_Backup' | localize('Backup Recipes folder')">
<header slot="header-buttons">
<div slot="header-buttons">
<button class="modal-close" @click="close()">
<i class="fa fa-remove"></i>
</button>
</header>
<div class="form-group">
</div>
<div v-if="backupping" class="doing">Backup...</div>
<div class="form-group" v-else>
<label>{{'select_folder_name' | localize('Cartella')}}</label>
<select v-model="folder" :placeholder="'folder_name' | localize('Nuova Cartella')" >
<optgroup :label="'select_folder_all' | localize('Tutte')">
<option value="ALL_SUBFOLDERS">{{'select_folder_all_folder' | localize('Tutte le cartelle')}}</option>
</optgroup>
<optgroup :label="'select_folder_sub' | localize('Sottocartelle')">
<option v-for="folder in folderlist" :value="folder">{{folder}}</option>
</optgroup>
</select>
<label>{{'select_devices' | localize('Select Devices')}}</label>
<select v-model="device" :placeholder="'select_devices' | localize('Select Devices')">
<option v-for="device in devicelist" :value="device.Path">{{device.Name}}</option>
@@ -42,8 +42,8 @@ export default class SVGCaricatore extends Vue{
minoreuguale:string="<=";
getPositionSheet(id,col){
var vent = ((this.larghTelaioSVG + (this.dimVentose*2)) / (this.numVentose +1));
var posX = (id*vent ) - (this.dimVentose*2);
var vent = (this.larghTelaioSVG - (this.dimVentose*2)) / (this.numVentose -1);
var posX = (id-1)*vent;
if(col == 1)
return "translate(-630 -147) translate(50 25) translate(580 122) translate(0 70) translate(0 0) translate("+ posX + ")";
else if(col == 2)
@@ -122,10 +122,6 @@ export default class ShowCicloInfo extends Vue {
if (el.status.visible && el.status.enabled)
if (el.setpointHMI != el.setpointPLC) result = true;
}
for (const key in store.state.warmers.channels) {
const el = store.state.warmers.channels[key];
if (el.setpointHMI != el.setpointPLC) result = true;
}
return result;
}
@@ -4,20 +4,20 @@
<thead>
<tr>
<th></th>
<th width="200">{{axis.name | localize(axis.name)}}</th>
<th width="200">{{axis.name}}</th>
</tr>
</thead>
<tbody>
<tr>
<th>{{quoteLabel | localize(quoteLabel)}}</th>
<td>{{axis.position | round}} {{'axis-position-um' | localize("mm")}}</td>
<th>{{"underthehood_label_position" | localize(quoteLabel)}}</th>
<td>{{axis.position | round}} {{"mm"}}</td>
</tr>
<tr>
<th>{{speedLabel | localize(speedLabel)}}</th>
<td>{{axis.speed| round}} {{'axis-speed-um' | localize("mm/s")}}</td>
<th>{{"underthehood_label_speed" | localize(speedLabel)}}</th>
<td>{{axis.speed| round}} {{"mm/s"}}</td>
</tr>
<tr>
<th>{{loadLabel | localize(loadLabel)}}</th>
<th>{{"underthehood_label_torque" | localize(loadLabel)}}</th>
<td>{{axis.load| round(1)}} %</td>
</tr>
</tbody>
@@ -0,0 +1,78 @@
.bitSelect {
position: relative;
}
.bitSelect .form {
font-size: 18px;
font-weight: 500;
color: #6d6d6d;
min-width: 200px;
width: fit-content;
height: 48px;
border-radius: 2px;
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
border: none;
display: flex;
flex-flow: row nowrap;
padding: 0 10px;
align-items: center;
justify-content: stretch;
padding-right: 25px;
position: relative;
cursor: pointer;
}
.bitSelect .form.error {
outline: 2px #d0021b auto !important;
}
.bitSelect .form.disabled {
background-color: rgba(0, 0, 0, 0.15);
}
.bitSelect .form i {
position: absolute;
right: 4px;
top: calc(50% - 7px);
font-size: 14px;
}
.bitSelect > section.bitsections {
position: absolute !important;
top: 48px;
right: 0;
z-index: 10;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.5);
border: solid 1px #bbbcbc;
background-color: #fff;
padding: 0 !important;
display: grid !important;
grid-template-columns: 1fr 1fr;
overflow: hidden;
height: auto !important;
width: 500px !important;
border-top: 1px solid #979797;
border-left: 1px solid #979797;
}
.bitSelect > section.bitsections .selall {
grid-column-start: 1;
grid-column-end: 3;
display: flex;
justify-content: flex-end;
align-items: center;
margin: 24px 0px 0 0;
height: 64px;
border-top: 2px solid #bbbcbc;
}
.bitSelect > section.bitsections > article {
height: 70px !important;
display: grid !important;
grid-template-columns: 68px 1fr;
align-items: center;
justify-items: center;
border-bottom: 1px solid #979797;
border-right: 1px solid #979797;
}
.bitSelect > section.bitsections > article label {
width: 100%;
display: flex;
align-items: center;
height: 100%;
justify-content: flex-start;
cursor: pointer;
}
@@ -0,0 +1,88 @@
.bitSelect {
position: relative;
.form {
font-size: 18px;
font-weight: 500;
color: #6d6d6d;
min-width: 200px;
width: fit-content;
height: 48px;
border-radius: 2px;
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
border: none;
display: flex;
flex-flow: row nowrap;
padding: 0 10px;
align-items: center;
justify-content: stretch;
padding-right: 25px;
position: relative;
cursor: pointer;
&.error{
outline: 2px #d0021b auto !important;
}
&.disabled{
background-color: rgba(0, 0, 0, 0.15);
}
i {
position: absolute;
right: 4px;
top: calc(50% - 7px);
font-size: 14px;
}
}
> section.bitsections {
position: absolute !important;
top: 48px;
right: 0;
z-index: 10;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.5);
border: solid 1px #bbbcbc;
background-color: #fff;
padding: 0 !important;
display: grid !important;
grid-template-columns: 1fr 1fr;
overflow: hidden;
height: auto !important;
width: 500px !important;
border-top: 1px solid #979797;
border-left: 1px solid #979797;
.selall{
grid-column-start:1;
grid-column-end:3;
display: flex;
justify-content: flex-end;
align-items: center;
margin: 24px 0px 0 0;
height: 64px;
border-top: 2px solid #bbbcbc;
}
> article {
height: 70px !important;
display: grid !important;
grid-template-columns: 68px 1fr;
align-items: center;
justify-items: center;
border-bottom: 1px solid #979797;
border-right: 1px solid #979797;
label {
width: 100%;
display: flex;
align-items: center;
height: 100%;
justify-content: flex-start;
cursor: pointer;
}
}
}
}
@@ -0,0 +1,92 @@
import Vue from "vue";
import Component from "vue-class-component";
import { Prop, Watch } from "vue-property-decorator";
@Component({})
export default class bitSelect extends Vue {
@Prop()
value: Recipe.IValue;
opened: boolean = false;
get Value() {
return this.value.setpointHMI;
}
get key() {
return this.value.key;
}
set Value(v) {
this.value.setpointHMI = v;
}
openclose(){
if(!this.value || !this.value.status || !this.value.status.enabled)
return
this.opened = !this.opened
}
get currentValue() {
let result = []
for (let index = 0; index < this.bitSize; index++) {
if (this.bit_test(this.Value, index)) result.push(index + 1);
}
return result.join(", ");
}
bits: {} = [];
mounted() {
for (let i = 0; i < this.bitSize; i++) {
Vue.set(this.bits, i, this.bit_test(this.Value, i))
}
}
@Prop({ default: 16 })
bitSize: number;
bit_test(num, bit) {
let result = ((num >> bit) % 2 != 0)
return result;
}
bit_change(num, bit, value) {
if (value == true)
this.Value = this.bit_set(num, bit)
else
this.Value = this.bit_clear(num, bit);
}
bit_set(num, bit) {
return num | 1 << bit;
}
bit_clear(num, bit) {
return num & ~(1 << bit);
}
bit_visible(bit) {
return this.bit_test(this.value.range.max,bit-1);
}
setAll(){
this.Value = this.value.range.max;
for (let i = 0; i < this.bitSize; i++) {
Vue.set(this.bits, i, this.bit_test(this.Value, i))
}
}
clearAll(){
this.Value = 0;
for (let i = 0; i < this.bitSize; i++) {
Vue.set(this.bits, i, this.bit_test(this.Value, i))
}
}
}
@@ -0,0 +1,37 @@
<template>
<div class="bitSelect">
<div
class="form"
@click="openclose"
:class="{'error': value && value.status && value.status.hasError, 'disabled': value && value.status && !value.status.enabled}"
>
{{currentValue}}
<i v-if="opened" class="fa fa-chevron-up" />
<i v-else class="fa fa-chevron-down" />
</div>
<section class="bitsections" v-if="opened" @mousedown.prevent.stop>
<template v-for="b in bitSize" >
<article v-if="bit_visible(b)" :key="b">
<div class="custom-checkbox" >
<input
type="checkbox"
v-model="bits[b-1]"
@input="bit_change(Value, b-1, !bits[b-1])"
:id="`cb-${b}`"
/>
<label :for="`cb-${b}`"></label>
</div>
<label :for="`cb-${b}`">{{`${key}_${b}` | localize((b).toString())}}</label>
</article>
</template>
<div class="selall">
<button class="btn" @click="clearAll">{{'bitselect_select_none' | localize('Nessuno')}}</button>
<button class="btn btn-success" @click="setAll">{{'bitselect_select_all' | localize('Tutti')}}</button>
</div>
</section>
</div>
</template>
<script src="./bitSelect.ts" lang="ts"></script>
<style lang="less" scoped>
@import url(./bitSelect.less);
</style>
@@ -31,6 +31,15 @@
</div>
<slider v-model="recipe.extraction_main_manual"></slider>
</template>
<template v-if="recipe.extraction_main_drawing_enabled.status.visible" >
<div class="input-area" style="margin-top: 30px;">
<label>{{'extraction_main_drawing_enabled'|localize('Drawing Enabled')}}</label>
<toggle-button
v-model="recipe.extraction_main_drawing_enabled.setpointHMI"
:status="recipe.extraction_main_drawing_enabled.status"
></toggle-button>
</div>
</template>
</div>
</div>
</aside>
@@ -51,7 +51,8 @@ export default class ShowEstrazioneInfo extends Vue {
(this.recipe.extraction_main_delay.status.visible && this.recipe.extraction_main_delay.status.hasError) ||
(this.recipe.extraction_main_1_chart_setpointx.status.visible && this.recipe.extraction_main_1_chart_setpointx.status.hasError) ||
(this.recipe.extraction_main_1_chart_setpointy.status.visible && this.recipe.extraction_main_1_chart_setpointy.status.hasError) ||
(this.recipe.extraction_main_manual.status.visible && this.recipe.extraction_main_manual.status.hasError);
(this.recipe.extraction_main_manual.status.visible && this.recipe.extraction_main_manual.status.hasError) ||
(this.recipe.extraction_main_drawing_enabled.status.visible && this.recipe.extraction_main_drawing_enabled.status.hasError);
}
get auxHasErrors() {
return (this.recipe.extraction_aux_enabled.status.visible && this.recipe.extraction_aux_enabled.status.hasError) ||
@@ -74,6 +75,7 @@ export default class ShowEstrazioneInfo extends Vue {
extraction_aux_1_chart_setpointx: this.recipe.extraction_aux_1_chart_setpointx,
extraction_aux_1_chart_setpointy: this.recipe.extraction_aux_1_chart_setpointy,
extraction_aux_manual: this.recipe.extraction_aux_manual,
extraction_main_drawing_enabled: this.recipe.extraction_main_drawing_enabled,
};
}
@@ -117,6 +119,7 @@ export default class ShowEstrazioneInfo extends Vue {
'extraction_main_1_chart_setpointx',
'extraction_main_1_chart_setpointy',
'extraction_main_manual',
'extraction_main_drawing_enabled',
)
}
@@ -1,20 +1,20 @@
<template>
<div class="svg-area">
<img src="assets/svg/disegno-cornice.svg" />
<div class="borded_label" id="quota1" v-focus-on:general_sizes_frame_dim_y>
<div>
<img src="assets/icons/png/quota.png" />
<span>{{recipe.general_sizes_frame_dim_y.valueAct}}</span>
<small>{{recipe.general_sizes_frame_dim_y.unitMeasure}}</small>
</div>
</div>
<div class="borded_label" id="quota2" v-focus-on:general_sizes_frame_dim_x>
<div class="borded_label" id="quota1" v-focus-on:general_sizes_frame_dim_x>
<div>
<img src="assets/icons/png/quota.png" />
<span>{{recipe.general_sizes_frame_dim_x.valueAct}}</span>
<small>{{recipe.general_sizes_frame_dim_x.unitMeasure}}</small>
</div>
</div>
<div class="borded_label" id="quota2" v-focus-on:general_sizes_frame_dim_y>
<div>
<img src="assets/icons/png/quota.png" />
<span>{{recipe.general_sizes_frame_dim_y.valueAct}}</span>
<small>{{recipe.general_sizes_frame_dim_y.unitMeasure}}</small>
</div>
</div>
</div>
</template>
<style scoped>
@@ -1,26 +1,26 @@
<template>
<div class="svg-area">
<img src="assets/svg/disegno-piastra-riduzione.svg" />
<div class="borded_label" id="quota1" v-focus-on:general_sizes_plate_dim_y>
<div>
<img src="assets/icons/png/quota.png" />
<span>{{recipe.general_sizes_plate_dim_y.valueAct}}</span>
<small>{{recipe.general_sizes_plate_dim_y.unitMeasure}}</small>
</div>
</div>
<div class="borded_label" id="quota2" v-focus-on:general_sizes_plate_dim_x>
<div class="borded_label" id="quota1" v-focus-on:general_sizes_plate_dim_x>
<div>
<img src="assets/icons/png/quota.png" />
<span>{{recipe.general_sizes_plate_dim_x.valueAct}}</span>
<small>{{recipe.general_sizes_plate_dim_x.unitMeasure}}</small>
</div>
</div>
<div class="borded_label" id="quota2" v-focus-on:general_sizes_plate_dim_y>
<div>
<img src="assets/icons/png/quota.png" />
<span>{{recipe.general_sizes_plate_dim_y.valueAct}}</span>
<small>{{recipe.general_sizes_plate_dim_y.unitMeasure}}</small>
</div>
</div>
</div>
</template>
<style scoped>
#quota1 {
top: 471px;
left: 118px;
top: 471px;
left: 118px;
}
#quota2 {
top: 496px;
@@ -2,10 +2,12 @@ import Vue from 'vue';
import Component from 'vue-class-component';
import {Prop} from 'vue-property-decorator';
import Slider from "@/app_modules_thermo/components/slider.vue";
import bitSelector from "@/app_modules_thermo/setup/components/bitSelect.vue";
@Component({name:"nebulizzatori",
components: {
slider:Slider
slider:Slider,
bitSelector
}
})
export default class Nebulizzatori extends Vue{
@@ -6,7 +6,7 @@
<template v-if="recipe.cooling_nebulizer_type.status.visible">
<div class="input-area">
<label>{{'cooling_nebulizer_type'|localize('Tipo')}}</label>
<combo v-model="recipe.cooling_nebulizer_type"></combo>
<bit-selector v-model="recipe.cooling_nebulizer_type"></bit-selector>
</div>
</template>
<template v-if="recipe.cooling_nebulizer_delay.status.visible">

Some files were not shown because too many files have changed in this diff Show More