Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b2932d927c | |||
| 68add4e08d | |||
| 5585c11ef5 | |||
| b9caa4ac74 | |||
| cde514eed8 | |||
| fad45a5635 | |||
| 9bf2265082 | |||
| e488619ae5 | |||
| babd8b25da | |||
| 5894cd63ce | |||
| 5a19d44b34 | |||
| 577cbe5c9d | |||
| e881006857 | |||
| 83fb0acfd0 | |||
| 04b3588e7f | |||
| c00e695c15 | |||
| c228c454f6 | |||
| e86495eab5 | |||
| 63e636cd36 | |||
| 1458a4cf5d | |||
| 6cf7331081 | |||
| 43402a785f | |||
| 88561778ce | |||
| 0d395fca33 | |||
| 09fea8f0e3 | |||
| 42531aac49 | |||
| bbfc3ca64d |
@@ -180,7 +180,7 @@
|
|||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
<PropertyGroup>
|
<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>
|
</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.x64.84.4.1\build\cef.redist.x64.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x64.84.4.1\build\cef.redist.x64.props'))" />
|
||||||
<Error Condition="!Exists('..\packages\cef.redist.x86.84.4.1\build\cef.redist.x86.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x86.84.4.1\build\cef.redist.x86.props'))" />
|
<Error Condition="!Exists('..\packages\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'))" />
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
<ncVendor>S7NET</ncVendor>
|
<ncVendor>S7NET</ncVendor>
|
||||||
<!-- NO_NC/DEMO/FANUC/SIEMENS/OSAI/S7NET -->
|
<!-- NO_NC/DEMO/FANUC/SIEMENS/OSAI/S7NET -->
|
||||||
<showNcHMI>false</showNcHMI>
|
<showNcHMI>false</showNcHMI>
|
||||||
|
<!--<ncIpAddress>192.168.139.1</ncIpAddress>-->
|
||||||
<ncIpAddress>192.168.0.102</ncIpAddress>
|
<ncIpAddress>192.168.0.102</ncIpAddress>
|
||||||
<ncPort>102</ncPort>
|
<ncPort>102</ncPort>
|
||||||
<machineModel>Thermo 2020</machineModel>
|
<machineModel>Thermo 2020</machineModel>
|
||||||
@@ -140,7 +141,7 @@
|
|||||||
<thread name="expMan" value="30000" />
|
<thread name="expMan" value="30000" />
|
||||||
<thread name="functionEnab" value="300" />
|
<thread name="functionEnab" value="300" />
|
||||||
<thread name="gauges" value="500" />
|
<thread name="gauges" value="500" />
|
||||||
<thread name="m154" value="500" />
|
<thread name="m154" value="1000" />
|
||||||
<thread name="mCommands" value="250" />
|
<thread name="mCommands" value="250" />
|
||||||
<thread name="powerOn" value="500" />
|
<thread name="powerOn" value="500" />
|
||||||
<thread name="prodCycle" value="1000" />
|
<thread name="prodCycle" value="1000" />
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ public static class ThreadsFunctions
|
|||||||
public static int modulesRtCounter = 0;
|
public static int modulesRtCounter = 0;
|
||||||
public static int recipeRtCounter = 0;
|
public static int recipeRtCounter = 0;
|
||||||
public static bool reconnectionIsRunning = false;
|
public static bool reconnectionIsRunning = false;
|
||||||
|
public static bool forcetakeSnapshot = false;
|
||||||
|
|
||||||
#endregion Public Fields
|
#endregion Public Fields
|
||||||
|
|
||||||
@@ -193,34 +194,45 @@ public static class ThreadsFunctions
|
|||||||
StatReset();
|
StatReset();
|
||||||
NcAdapter ncAdapter = new NcAdapter();
|
NcAdapter ncAdapter = new NcAdapter();
|
||||||
CmsError libraryError = NO_ERROR;
|
CmsError libraryError = NO_ERROR;
|
||||||
// Run loop until NC is connected
|
try
|
||||||
while (!ncAdapter.numericalControl.NC_IsConnected())
|
|
||||||
{
|
{
|
||||||
// Try reconnection
|
// Run loop until NC is connected
|
||||||
libraryError = ncAdapter.Connect();
|
while (!ncAdapter.numericalControl.NC_IsConnected())
|
||||||
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();
|
// 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
|
if (!libraryError.IsError())
|
||||||
MessageServices.Current.Publish(SEND_NC_STATUS_UI, null, ncAdapter.numericalControl.NC_IsConnected());
|
{
|
||||||
// Send status to signalr
|
if (ServerStartupConfig.AutoOpenCmsClient)
|
||||||
MessageServices.Current.Publish(SEND_NC_STATUS, null, ncAdapter.numericalControl.NC_IsConnected());
|
StartCMSClient();
|
||||||
|
|
||||||
Thread.Sleep(1000);
|
// Start/Restart NC threads
|
||||||
|
ThreadsHandler.StartWorkers();
|
||||||
|
reconnectionIsRunning = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
catch (ThreadAbortException ex)
|
||||||
if (!libraryError.IsError())
|
|
||||||
{
|
{
|
||||||
if (ServerStartupConfig.AutoOpenCmsClient)
|
ncAdapter.Dispose();
|
||||||
StartCMSClient();
|
}
|
||||||
|
finally
|
||||||
// Start/Restart NC threads
|
{
|
||||||
ThreadsHandler.StartWorkers();
|
ncAdapter.Dispose();
|
||||||
reconnectionIsRunning = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -326,6 +338,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -345,6 +361,14 @@ public static class ThreadsFunctions
|
|||||||
// avvio oggetto thermocam
|
// avvio oggetto thermocam
|
||||||
ThermoCamComunicator TCCom = new ThermoCamComunicator(true);
|
ThermoCamComunicator TCCom = new ThermoCamComunicator(true);
|
||||||
Stopwatch sw = new Stopwatch();
|
Stopwatch sw = new Stopwatch();
|
||||||
|
forcetakeSnapshot = false;
|
||||||
|
|
||||||
|
|
||||||
|
RegistrationInfo takeReginfo = MessageServices.Current.Subscribe(TAKE_SNAPSHOT_THERMO, (a, b) =>
|
||||||
|
{
|
||||||
|
ThreadsFunctions.forcetakeSnapshot = true;
|
||||||
|
});
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Try connection
|
// Try connection
|
||||||
@@ -365,11 +389,13 @@ public static class ThreadsFunctions
|
|||||||
if (libraryError.IsError())
|
if (libraryError.IsError())
|
||||||
ManageLibraryError(libraryError);
|
ManageLibraryError(libraryError);
|
||||||
|
|
||||||
if (flirImageReq)
|
if (flirImageReq || forcetakeSnapshot)
|
||||||
{
|
{
|
||||||
|
forcetakeSnapshot = false;
|
||||||
bool done = false;
|
bool done = false;
|
||||||
// if requested --> give ack!
|
// if requested --> give ack!
|
||||||
ncAdapter.ManageFlirStrobe();
|
if (flirImageReq)
|
||||||
|
ncAdapter.ManageFlirStrobe();
|
||||||
// requesto photo from library
|
// requesto photo from library
|
||||||
NcAdapter.lastThermoImage = TCCom.takePicture();
|
NcAdapter.lastThermoImage = TCCom.takePicture();
|
||||||
done = !string.IsNullOrEmpty(NcAdapter.lastThermoImage);
|
done = !string.IsNullOrEmpty(NcAdapter.lastThermoImage);
|
||||||
@@ -392,7 +418,8 @@ public static class ThreadsFunctions
|
|||||||
ncAdapter.WriteRecipeWarmChTCamTempAct(actualTemp);
|
ncAdapter.WriteRecipeWarmChTCamTempAct(actualTemp);
|
||||||
NcAdapter.lastImageTaken = DateTime.Now;
|
NcAdapter.lastImageTaken = DateTime.Now;
|
||||||
// give PLC strobe for uploaded Actual TEMP from image
|
// give PLC strobe for uploaded Actual TEMP from image
|
||||||
ncAdapter.SendTCamImageReadyStrb();
|
if(flirImageReq)
|
||||||
|
ncAdapter.SendTCamImageReadyStrb();
|
||||||
|
|
||||||
|
|
||||||
MessageServices.Current.Publish(SEND_NEWTCAMIMAGE, null, NcAdapter.lastImageTaken);
|
MessageServices.Current.Publish(SEND_NEWTCAMIMAGE, null, NcAdapter.lastImageTaken);
|
||||||
@@ -423,7 +450,8 @@ public static class ThreadsFunctions
|
|||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
MessageServices.Current.UnSubscribe(takeReginfo);
|
||||||
|
ncAdapter.Dispose();
|
||||||
// chiudo thermocam
|
// chiudo thermocam
|
||||||
TCCom.Dispose();
|
TCCom.Dispose();
|
||||||
}
|
}
|
||||||
@@ -501,6 +529,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ManageWatchdog()
|
public static void ManageWatchdog()
|
||||||
@@ -547,6 +579,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ReadAlarms()
|
public static void ReadAlarms()
|
||||||
@@ -591,6 +627,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ReadAreaData()
|
public static void ReadAreaData()
|
||||||
@@ -633,6 +673,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -686,6 +730,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -735,6 +783,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ReadEnabledFunctionality()
|
public static void ReadEnabledFunctionality()
|
||||||
@@ -779,6 +831,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ReadExpiredMaintenances()
|
public static void ReadExpiredMaintenances()
|
||||||
@@ -833,6 +889,11 @@ public static class ThreadsFunctions
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -877,6 +938,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ReadM154Data()
|
public static void ReadM154Data()
|
||||||
@@ -1051,6 +1116,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ReadMComandsData()
|
public static void ReadMComandsData()
|
||||||
@@ -1097,6 +1166,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ReadModulesData()
|
public static void ReadModulesData()
|
||||||
@@ -1139,6 +1212,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ReadPowerOnData()
|
public static void ReadPowerOnData()
|
||||||
@@ -1181,6 +1258,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ReadProcessesPPStatus()
|
public static void ReadProcessesPPStatus()
|
||||||
@@ -1227,6 +1308,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ReadProdCycleData()
|
public static void ReadProdCycleData()
|
||||||
@@ -1270,6 +1355,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ReadProdInfoData()
|
public static void ReadProdInfoData()
|
||||||
@@ -1313,6 +1402,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ReadProdPanelData()
|
public static void ReadProdPanelData()
|
||||||
@@ -1356,6 +1449,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ReadRecipeData()
|
public static void ReadRecipeData()
|
||||||
@@ -1382,39 +1479,46 @@ public static class ThreadsFunctions
|
|||||||
// Check if client is connected
|
// Check if client is connected
|
||||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||||
{
|
{
|
||||||
// Get new data from PLC
|
// controllo su redis che NON sia bloccata lettura ricetta..
|
||||||
libraryError = ncAdapter.ReadRecipeData(onlyRt, false, out Dictionary<string, DTORecipeParam> currRecipe);
|
if (!RedisController.getRecipeReadSem)
|
||||||
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()
|
|
||||||
{
|
{
|
||||||
recipeName = NcAdapter.RecipeLiveData.RecipeName,
|
// Get new data from PLC
|
||||||
hasChanged = NcAdapter.RecipeLiveData.hasChanged
|
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
|
// ora gestisco la overview!
|
||||||
bool setpointHmiInvalidated = false;
|
libraryError = ncAdapter.GetRecipeOverview(out Dictionary<RecipeSection, RecipeCatStatus> currOverview);
|
||||||
libraryError = ncAdapter.checkSetpointInvalidated(out setpointHmiInvalidated);
|
if (libraryError.IsError())
|
||||||
if (setpointHmiInvalidated)
|
ManageLibraryError(libraryError);
|
||||||
{
|
|
||||||
// ora gestisco l'ack della richiesta
|
MessageServices.Current.Publish(SEND_THERMO_RECIPE_OVERWIEW, null, currOverview);
|
||||||
libraryError = ncAdapter.doAckSetpointInvalidated();
|
|
||||||
|
// 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
|
else
|
||||||
RestoreConnection();
|
RestoreConnection();
|
||||||
@@ -1431,6 +1535,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ReadScadaData()
|
public static void ReadScadaData()
|
||||||
@@ -1476,6 +1584,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ReadUserSoftKeysData()
|
public static void ReadUserSoftKeysData()
|
||||||
@@ -1520,6 +1632,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ReadWarmersData()
|
public static void ReadWarmersData()
|
||||||
@@ -1537,33 +1653,38 @@ public static class ThreadsFunctions
|
|||||||
bool useCache = false;
|
bool useCache = false;
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
sw.Restart();
|
|
||||||
|
|
||||||
// Check if client is connected
|
// controllo su redis che NON sia bloccata lettura ricetta..
|
||||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
if (!RedisController.getWarmersReadSem)
|
||||||
{
|
{
|
||||||
if (cacheWarmers)
|
sw.Restart();
|
||||||
|
|
||||||
|
// Check if client is connected
|
||||||
|
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||||
{
|
{
|
||||||
// every 10 reads all data...
|
if (cacheWarmers)
|
||||||
useCache = (readCount != 0);
|
{
|
||||||
readCount++;
|
// every 10 reads all data...
|
||||||
// ciclo resettato ogni 20
|
useCache = (readCount != 0);
|
||||||
readCount = readCount % 20;
|
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
|
else
|
||||||
libraryError = ncAdapter.ReadWarmers(useCache, out Dictionary<int, DTOWarmers> currWarmers);
|
RestoreConnection();
|
||||||
if (libraryError.IsError())
|
|
||||||
ManageLibraryError(libraryError);
|
sw.Stop();
|
||||||
// pubblico
|
|
||||||
MessageServices.Current.Publish(SEND_THERMO_WARMERS_DATA, null, currWarmers);
|
// Update thread timer
|
||||||
|
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
RestoreConnection();
|
|
||||||
|
|
||||||
sw.Stop();
|
|
||||||
|
|
||||||
// Update thread timer
|
|
||||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
|
||||||
// Wait
|
// Wait
|
||||||
Thread.Sleep(CalcSleepTime(samplMsec("warmers"), (int)sw.ElapsedMilliseconds));
|
Thread.Sleep(CalcSleepTime(samplMsec("warmers"), (int)sw.ElapsedMilliseconds));
|
||||||
}
|
}
|
||||||
@@ -1572,6 +1693,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RestoreConnection()
|
public static void RestoreConnection()
|
||||||
@@ -1665,6 +1790,10 @@ public static class ThreadsFunctions
|
|||||||
{
|
{
|
||||||
ncAdapter.Dispose();
|
ncAdapter.Dispose();
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ncAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void StartCMSClient()
|
public static void StartCMSClient()
|
||||||
|
|||||||
@@ -38,10 +38,6 @@
|
|||||||
<assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
<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" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</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>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
</configuration>
|
</configuration>
|
||||||
@@ -57,10 +57,6 @@
|
|||||||
<assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
<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" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</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>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
</configuration>
|
</configuration>
|
||||||
@@ -21,6 +21,12 @@ namespace Thermo.Active.Database.Controllers
|
|||||||
// Initialize database context
|
// Initialize database context
|
||||||
dbCtx = new DatabaseContext();
|
dbCtx = new DatabaseContext();
|
||||||
}
|
}
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
// Clear database context
|
||||||
|
dbCtx.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion Public Constructors
|
#endregion Public Constructors
|
||||||
|
|
||||||
@@ -80,11 +86,6 @@ namespace Thermo.Active.Database.Controllers
|
|||||||
return prodData;
|
return prodData;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
// Clear database context
|
|
||||||
dbCtx.Dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get record by NumDone
|
/// Get record by NumDone
|
||||||
|
|||||||
@@ -36,6 +36,12 @@ namespace Thermo.Active.Database.Controllers
|
|||||||
private const string machineEventKpis = "Events:Kpis";
|
private const string machineEventKpis = "Events:Kpis";
|
||||||
private const string machineMessagePath = "Events:Messages";
|
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)
|
public static void WriteProductionNotification(uint ProductionProcess, string Notification)
|
||||||
{
|
{
|
||||||
string redisHash = redUtil.man.redHash(redisNotificationAddress).Replace("%NN%", ProductionProcess.ToString("00"));
|
string redisHash = redUtil.man.redHash(redisNotificationAddress).Replace("%NN%", ProductionProcess.ToString("00"));
|
||||||
@@ -246,5 +252,89 @@ namespace Thermo.Active.Database.Controllers
|
|||||||
return true;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ namespace Thermo.Active.Model
|
|||||||
public const string AXES_CONFIG_PATH = CONFIG_DIRECTORY + "axesConfig.xml";
|
public const string AXES_CONFIG_PATH = CONFIG_DIRECTORY + "axesConfig.xml";
|
||||||
public const string AXES_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + @"axesConfigValidator.xsd";
|
public const string AXES_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + @"axesConfigValidator.xsd";
|
||||||
public const string BROADCAST_DATA = "BROADCAST_DATA";
|
public const string BROADCAST_DATA = "BROADCAST_DATA";
|
||||||
|
public const string TAKE_SNAPSHOT_THERMO = "TAKE_SNAPSHOT_THERMO";
|
||||||
|
|
||||||
// File paths
|
// File paths
|
||||||
public const string CLIENT_EXE_NAME = @"Active_Client.exe";
|
public const string CLIENT_EXE_NAME = @"Active_Client.exe";
|
||||||
|
|||||||
@@ -475,10 +475,16 @@ namespace Thermo.Active.NC
|
|||||||
// solo x S7...
|
// solo x S7...
|
||||||
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
|
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
|
||||||
{
|
{
|
||||||
|
// registro in redis blocco x lettura ricetta...
|
||||||
|
RedisController.setRecipeReadSem(true);
|
||||||
|
|
||||||
// call NC for update
|
// call NC for update
|
||||||
CmsError libraryError = numericalControl.PLC_WRecipeEdit(confirmUpdate);
|
CmsError libraryError = numericalControl.PLC_WRecipeEdit(confirmUpdate);
|
||||||
if (libraryError.IsError())
|
if (libraryError.IsError())
|
||||||
return libraryError;
|
return libraryError;
|
||||||
|
|
||||||
|
// tolgo blocco x lettura ricetta...
|
||||||
|
RedisController.setRecipeReadSem(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1764,10 +1770,16 @@ namespace Thermo.Active.NC
|
|||||||
{
|
{
|
||||||
if (NcFileAdapter.RecipeLiveData.ChannelSetpoints != null)
|
if (NcFileAdapter.RecipeLiveData.ChannelSetpoints != null)
|
||||||
{
|
{
|
||||||
|
// registro in redis blocco x lettura ricetta...
|
||||||
|
RedisController.setRecipeReadSem(true);
|
||||||
|
|
||||||
// se si in questo caso scrivo configurazione...
|
// se si in questo caso scrivo configurazione...
|
||||||
WriteRecipeWarmConfig();
|
WriteRecipeWarmConfig();
|
||||||
// Ack !
|
// Ack !
|
||||||
libraryError = numericalControl.PLC_WAckConfRiskRequest();
|
libraryError = numericalControl.PLC_WAckConfRiskRequest();
|
||||||
|
|
||||||
|
// tolgo in redis blocco x lettura ricetta...
|
||||||
|
RedisController.setRecipeReadSem(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ThermoReqConfRecipeStr)
|
if (ThermoReqConfRecipeStr)
|
||||||
@@ -1795,8 +1807,12 @@ namespace Thermo.Active.NC
|
|||||||
return NOT_FOUND_ERROR;
|
return NOT_FOUND_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// registro in redis blocco x lettura ricetta...
|
||||||
|
RedisController.setRecipeReadSem(true);
|
||||||
// se si in questo caso scrivo configurazione attuale...
|
// se si in questo caso scrivo configurazione attuale...
|
||||||
WriteRecipeParams(updtRecipe, nMaxParamWrite, delayParamWrite);
|
WriteRecipeParams(updtRecipe, nMaxParamWrite, delayParamWrite);
|
||||||
|
// tolgo in redis blocco x lettura ricetta...
|
||||||
|
RedisController.setRecipeReadSem(false);
|
||||||
|
|
||||||
using (UserSoftkeysController controller = new UserSoftkeysController())
|
using (UserSoftkeysController controller = new UserSoftkeysController())
|
||||||
{
|
{
|
||||||
@@ -1813,6 +1829,9 @@ namespace Thermo.Active.NC
|
|||||||
newRisk.Add(item.Key, item.Value);
|
newRisk.Add(item.Key, item.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// registro in redis blocco x lettura ricetta...
|
||||||
|
RedisController.setRecipeReadSem(true);
|
||||||
|
|
||||||
// write to PLC SetPointHMI (%)
|
// write to PLC SetPointHMI (%)
|
||||||
libraryError = WriteRecipeWarmChSetpHMI(newRisk);
|
libraryError = WriteRecipeWarmChSetpHMI(newRisk);
|
||||||
if (libraryError.IsError())
|
if (libraryError.IsError())
|
||||||
@@ -1827,6 +1846,9 @@ namespace Thermo.Active.NC
|
|||||||
libraryError = ConfirmRecipeData(true);
|
libraryError = ConfirmRecipeData(true);
|
||||||
if (libraryError.IsError())
|
if (libraryError.IsError())
|
||||||
return libraryError;
|
return libraryError;
|
||||||
|
|
||||||
|
// tolgo in redis blocco x lettura ricetta...
|
||||||
|
RedisController.setRecipeReadSem(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3421,8 +3443,14 @@ namespace Thermo.Active.NC
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public CmsError SetTCamActiv(bool enableTCam)
|
public CmsError SetTCamActiv(bool enableTCam)
|
||||||
{
|
{
|
||||||
|
// registro in redis blocco x lettura ricetta...
|
||||||
|
RedisController.setWarmersReadSem(true);
|
||||||
|
|
||||||
CmsError libraryError = numericalControl.PLC_WTCamActiv(enableTCam);
|
CmsError libraryError = numericalControl.PLC_WTCamActiv(enableTCam);
|
||||||
|
|
||||||
|
// tolgo in redis blocco x lettura ricetta...
|
||||||
|
RedisController.setWarmersReadSem(false);
|
||||||
|
|
||||||
return libraryError;
|
return libraryError;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3433,8 +3461,14 @@ namespace Thermo.Active.NC
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public CmsError SetTCamMode(bool enableTCam)
|
public CmsError SetTCamMode(bool enableTCam)
|
||||||
{
|
{
|
||||||
|
// registro in redis blocco x lettura ricetta...
|
||||||
|
RedisController.setWarmersReadSem(true);
|
||||||
|
|
||||||
CmsError libraryError = numericalControl.PLC_WTCamMode(enableTCam);
|
CmsError libraryError = numericalControl.PLC_WTCamMode(enableTCam);
|
||||||
|
|
||||||
|
// tolgo in redis blocco x lettura ricetta...
|
||||||
|
RedisController.setWarmersReadSem(false);
|
||||||
|
|
||||||
return libraryError;
|
return libraryError;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3669,8 +3703,15 @@ namespace Thermo.Active.NC
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public CmsError WriteRecipeParams(Dictionary<string, DTORecipeParam> updtRecipe, int nMaxParamWrite, int delayParamWrite)
|
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);
|
CmsError libraryError = WriteRecipeParametersToPLC(updtRecipe, nMaxParamWrite, delayParamWrite);
|
||||||
|
|
||||||
|
// tolgo blocco x lettura ricetta...
|
||||||
|
RedisController.setRecipeReadSem(false);
|
||||||
|
|
||||||
return libraryError;
|
return libraryError;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3681,8 +3722,15 @@ namespace Thermo.Active.NC
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public CmsError WriteRecipeWarmChSetpHMI(Dictionary<int, int> updtSetpHmi)
|
public CmsError WriteRecipeWarmChSetpHMI(Dictionary<int, int> updtSetpHmi)
|
||||||
{
|
{
|
||||||
|
// registro in redis blocco x lettura warmers...
|
||||||
|
RedisController.setWarmersReadSem(true);
|
||||||
|
|
||||||
CmsError libraryError = numericalControl.PLC_WWarmerChSetpHmi(updtSetpHmi);
|
CmsError libraryError = numericalControl.PLC_WWarmerChSetpHmi(updtSetpHmi);
|
||||||
|
|
||||||
|
// tolgo blocco x lettura warmers...
|
||||||
|
RedisController.setWarmersReadSem(false);
|
||||||
|
|
||||||
|
|
||||||
return libraryError;
|
return libraryError;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3693,8 +3741,14 @@ namespace Thermo.Active.NC
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public CmsError WriteRecipeWarmChTCamEnab(Dictionary<int, bool> actualStates)
|
public CmsError WriteRecipeWarmChTCamEnab(Dictionary<int, bool> actualStates)
|
||||||
{
|
{
|
||||||
|
// registro in redis blocco x lettura warmers...
|
||||||
|
RedisController.setWarmersReadSem(true);
|
||||||
|
|
||||||
CmsError libraryError = numericalControl.PLC_WWarmerChTCamEnab(actualStates);
|
CmsError libraryError = numericalControl.PLC_WWarmerChTCamEnab(actualStates);
|
||||||
|
|
||||||
|
// tolgo blocco x lettura warmers...
|
||||||
|
RedisController.setWarmersReadSem(false);
|
||||||
|
|
||||||
return libraryError;
|
return libraryError;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3705,8 +3759,14 @@ namespace Thermo.Active.NC
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public CmsError WriteRecipeWarmChTCamTempAct(Dictionary<int, double> actualTemp)
|
public CmsError WriteRecipeWarmChTCamTempAct(Dictionary<int, double> actualTemp)
|
||||||
{
|
{
|
||||||
|
// registro in redis blocco x lettura warmers...
|
||||||
|
RedisController.setWarmersReadSem(true);
|
||||||
|
|
||||||
CmsError libraryError = numericalControl.PLC_WWarmerChTCamTempAct(actualTemp);
|
CmsError libraryError = numericalControl.PLC_WWarmerChTCamTempAct(actualTemp);
|
||||||
|
|
||||||
|
// tolgo blocco x lettura warmers...
|
||||||
|
RedisController.setWarmersReadSem(false);
|
||||||
|
|
||||||
return libraryError;
|
return libraryError;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3717,8 +3777,14 @@ namespace Thermo.Active.NC
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public CmsError WriteRecipeWarmChTCamTempSet(Dictionary<int, double> referenceTemp)
|
public CmsError WriteRecipeWarmChTCamTempSet(Dictionary<int, double> referenceTemp)
|
||||||
{
|
{
|
||||||
|
// registro in redis blocco x lettura warmers...
|
||||||
|
RedisController.setWarmersReadSem(true);
|
||||||
|
|
||||||
CmsError libraryError = numericalControl.PLC_WWarmerChTCamTempSet(referenceTemp);
|
CmsError libraryError = numericalControl.PLC_WWarmerChTCamTempSet(referenceTemp);
|
||||||
|
|
||||||
|
// tolgo blocco x lettura warmers...
|
||||||
|
RedisController.setWarmersReadSem(false);
|
||||||
|
|
||||||
return libraryError;
|
return libraryError;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3732,6 +3798,9 @@ namespace Thermo.Active.NC
|
|||||||
Dictionary<int, int> newData = new Dictionary<int, int>();
|
Dictionary<int, int> newData = new Dictionary<int, int>();
|
||||||
CmsError libraryError = NO_ERROR;
|
CmsError libraryError = NO_ERROR;
|
||||||
|
|
||||||
|
// registro in redis blocco x lettura warmers...
|
||||||
|
RedisController.setWarmersReadSem(true);
|
||||||
|
|
||||||
// scrivo l'abilitazione dei canali...
|
// scrivo l'abilitazione dei canali...
|
||||||
foreach (var item in RiskBoardConfig)
|
foreach (var item in RiskBoardConfig)
|
||||||
{
|
{
|
||||||
@@ -3793,6 +3862,10 @@ namespace Thermo.Active.NC
|
|||||||
numericalControl.PLC_WWarmerChTCamEnab(resetTCamEnab);
|
numericalControl.PLC_WWarmerChTCamEnab(resetTCamEnab);
|
||||||
numericalControl.PLC_WWarmerChTCamTempAct(resetTCamTemp);
|
numericalControl.PLC_WWarmerChTCamTempAct(resetTCamTemp);
|
||||||
numericalControl.PLC_WWarmerChTCamTempSet(resetTCamTemp);
|
numericalControl.PLC_WWarmerChTCamTempSet(resetTCamTemp);
|
||||||
|
|
||||||
|
// tolgo blocco x lettura warmers...
|
||||||
|
RedisController.setWarmersReadSem(false);
|
||||||
|
|
||||||
// esce
|
// esce
|
||||||
return libraryError;
|
return libraryError;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,10 +38,6 @@
|
|||||||
<assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
<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" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</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>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
</configuration>
|
</configuration>
|
||||||
@@ -38,10 +38,6 @@
|
|||||||
<assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
<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" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</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>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
</configuration>
|
</configuration>
|
||||||
@@ -47,6 +47,10 @@ namespace Thermo.Active.Utils
|
|||||||
{
|
{
|
||||||
Log.Info(message);
|
Log.Info(message);
|
||||||
}
|
}
|
||||||
|
public static void LogDebug(string message)
|
||||||
|
{
|
||||||
|
Log.Debug(message);
|
||||||
|
}
|
||||||
|
|
||||||
public static void LogWarning(string message)
|
public static void LogWarning(string message)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<add key="ClientSettingsProvider.ServiceUri" value="" />
|
<add key="ClientSettingsProvider.ServiceUri" value="" />
|
||||||
<add key="ServerServiceName" value="MariaDB" />
|
<add key="ServerServiceName" value="MariaDB" />
|
||||||
<add key="nMaxParamWrite" value="5" />
|
<add key="nMaxParamWrite" value="5" />
|
||||||
<add key="delayParamWrite" value="5" />
|
<add key="delayParamWrite" value="10" />
|
||||||
<add key="ewmaPar100" value="40" />
|
<add key="ewmaPar100" value="40" />
|
||||||
<add key="flirSwapXY" value="true" />
|
<add key="flirSwapXY" value="true" />
|
||||||
<add key="cacheWarmers" value="false" />
|
<add key="cacheWarmers" value="false" />
|
||||||
@@ -115,10 +115,6 @@
|
|||||||
<assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
<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" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</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>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
<connectionStrings>
|
<connectionStrings>
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ using System.Security.Principal;
|
|||||||
using Thermo.Active.Config;
|
using Thermo.Active.Config;
|
||||||
using Thermo.Active.Database.Controllers;
|
using Thermo.Active.Database.Controllers;
|
||||||
using Thermo.Active.Model.DatabaseModels;
|
using Thermo.Active.Model.DatabaseModels;
|
||||||
|
using Thermo.Active.Utils;
|
||||||
using static Thermo.Active.Config.ServerConfig;
|
using static Thermo.Active.Config.ServerConfig;
|
||||||
using static Thermo.Active.Listeners.SignalRStaticObjects;
|
using static Thermo.Active.Listeners.SignalRStaticObjects;
|
||||||
using static Thermo.Active.Model.Constants;
|
using static Thermo.Active.Model.Constants;
|
||||||
@@ -28,7 +29,11 @@ namespace Thermo.Active.Attributes
|
|||||||
// Find user session on this machine
|
// Find user session on this machine
|
||||||
SessionModel session = sessionsController.FindSessionByToken(token);
|
SessionModel session = sessionsController.FindSessionByToken(token);
|
||||||
if (session == null)
|
if (session == null)
|
||||||
|
{
|
||||||
|
ThermoActiveLogger.LogError($"SignalRAuthorizeAttribute | AuthorizeHubConnection | session == null");
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return base.AuthorizeHubConnection(hubDescriptor, request);
|
return base.AuthorizeHubConnection(hubDescriptor, request);
|
||||||
@@ -39,11 +44,16 @@ namespace Thermo.Active.Attributes
|
|||||||
var connectionId = hubIncomingInvokerContext.Hub.Context.ConnectionId;
|
var connectionId = hubIncomingInvokerContext.Hub.Context.ConnectionId;
|
||||||
var request = hubIncomingInvokerContext.Hub.Context.Request;
|
var request = hubIncomingInvokerContext.Hub.Context.Request;
|
||||||
var token = request.QueryString.Get("Authorization");
|
var token = request.QueryString.Get("Authorization");
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(token))
|
if (!string.IsNullOrEmpty(token))
|
||||||
{
|
{
|
||||||
// check authorization
|
// check authorization
|
||||||
if (!CheckAuthorization(FunctionAccess, token, out int machineId, out int userId))
|
if (!CheckAuthorization(FunctionAccess, token, out int machineId, out int userId))
|
||||||
|
{
|
||||||
|
ThermoActiveLogger.LogError($"SignalRAuthorizeAttribute | AuthorizeHubMethodInvocation | CheckAuthorization == false");
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
var claims = new ClaimsIdentity(AUTHENTICATION_TYPE);
|
var claims = new ClaimsIdentity(AUTHENTICATION_TYPE);
|
||||||
claims.AddClaim(new Claim(USER_ID_KEY, userId.ToString()));
|
claims.AddClaim(new Claim(USER_ID_KEY, userId.ToString()));
|
||||||
@@ -66,11 +76,17 @@ namespace Thermo.Active.Attributes
|
|||||||
// Find user session on this machine
|
// Find user session on this machine
|
||||||
SessionModel session = sessionsController.FindSessionByToken(token);
|
SessionModel session = sessionsController.FindSessionByToken(token);
|
||||||
if (session == null)
|
if (session == null)
|
||||||
|
{
|
||||||
|
ThermoActiveLogger.LogError($"SignalRAuthorizeAttribute | CheckAuthorization | session == null");
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Check if the machine is the same where the user logged in
|
// Check if the machine is the same where the user logged in
|
||||||
if (session.MachineUser.MachineId != MachineConfig.MachineId)
|
if (session.MachineUser.MachineId != MachineConfig.MachineId)
|
||||||
|
{
|
||||||
|
ThermoActiveLogger.LogError($"SignalRAuthorizeAttribute | CheckAuthorization | session.MachineUser.MachineId != MachineConfig.MachineId | " + session.MachineUser.MachineId + "," + MachineConfig.MachineId);
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
machineId = session.MachineUser.MachineId;
|
machineId = session.MachineUser.MachineId;
|
||||||
userId = session.MachineUser.UserId;
|
userId = session.MachineUser.UserId;
|
||||||
@@ -91,12 +107,18 @@ namespace Thermo.Active.Attributes
|
|||||||
if (Action == ACTIONS.READ)
|
if (Action == ACTIONS.READ)
|
||||||
{ // Check read permissions
|
{ // Check read permissions
|
||||||
if (functionAccess.ReadLevelMin > machineUser.Role.Level)
|
if (functionAccess.ReadLevelMin > machineUser.Role.Level)
|
||||||
|
{
|
||||||
|
ThermoActiveLogger.LogError($"SignalRAuthorizeAttribute | CheckAuthorization | functionAccess.ReadLevelMin > machineUser.Role.Level | " + functionAccess.ReadLevelMin + "," + machineUser.Role.Level);
|
||||||
return false; // Not authorized
|
return false; // Not authorized
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // Check write permissions
|
{ // Check write permissions
|
||||||
if (functionAccess.WriteLevelMin > machineUser.Role.Level)
|
if (functionAccess.WriteLevelMin > machineUser.Role.Level)
|
||||||
|
{
|
||||||
|
ThermoActiveLogger.LogError($"SignalRAuthorizeAttribute | CheckAuthorization | functionAccess.WriteLevelMin > machineUser.Role.Level | " + functionAccess.WriteLevelMin + "," + machineUser.Role.Level);
|
||||||
return false; // Not authorized
|
return false; // Not authorized
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if PLC bit exists
|
// Check if PLC bit exists
|
||||||
@@ -105,13 +127,21 @@ namespace Thermo.Active.Attributes
|
|||||||
// Check if functionality is enabled by PLC
|
// Check if functionality is enabled by PLC
|
||||||
var functionalityIsEnabled = LastRuntimeFunctionality.Where(x => x.Name == functionName).FirstOrDefault();
|
var functionalityIsEnabled = LastRuntimeFunctionality.Where(x => x.Name == functionName).FirstOrDefault();
|
||||||
if (functionalityIsEnabled == null || functionalityIsEnabled.Enabled == false)
|
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
|
else
|
||||||
|
{
|
||||||
|
ThermoActiveLogger.LogError($"SignalRAuthorizeAttribute | CheckAuthorization | functionAccess != null && ServerConfigController.CheckAreaStatus(functionAccess.Area) | " + functionAccess + "," + functionAccess.Area);
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Authorized
|
// Authorized
|
||||||
|
ThermoActiveLogger.LogInfo($"SignalRAuthorizeAttribute | CheckAuthorization | Authorized | ");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,12 +22,14 @@ using static Thermo.Active.Model.Constants;
|
|||||||
namespace Thermo.Active.Controllers.WebApi
|
namespace Thermo.Active.Controllers.WebApi
|
||||||
{
|
{
|
||||||
[RoutePrefix("api/maintenance_manager")]
|
[RoutePrefix("api/maintenance_manager")]
|
||||||
public class ApiMaintenanceController : ApiController
|
public class ApiMaintenanceController : aBaseApiController // ApiController
|
||||||
{
|
{
|
||||||
|
#if false
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Oggetto adapter condiviso da WebAPI
|
/// Oggetto adapter condiviso da WebAPI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected static NcAdapter ncAdapter = new NcAdapter();
|
protected static NcAdapter ncAdapter = new NcAdapter();
|
||||||
|
#endif
|
||||||
|
|
||||||
[Route("maintenances"), HttpGet]
|
[Route("maintenances"), HttpGet]
|
||||||
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.MAINTENANCE, Action = ACTIONS.READ)]
|
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.MAINTENANCE, Action = ACTIONS.READ)]
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ using static Thermo.Active.Model.Constants;
|
|||||||
namespace Thermo.Active.Controllers.WebApi
|
namespace Thermo.Active.Controllers.WebApi
|
||||||
{
|
{
|
||||||
[RoutePrefix("api/authorization")]
|
[RoutePrefix("api/authorization")]
|
||||||
public class AuthorizationController : ApiController
|
public class AuthorizationController : ApiController
|
||||||
{
|
{
|
||||||
[Route("functions"), HttpGet]
|
[Route("functions"), HttpGet]
|
||||||
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.GENERAL, Action = ACTIONS.READ)]
|
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.GENERAL, Action = ACTIONS.READ)]
|
||||||
|
|||||||
@@ -13,12 +13,14 @@ using static Thermo.Active.Model.Constants;
|
|||||||
namespace Thermo.Active.Controllers.WebApi
|
namespace Thermo.Active.Controllers.WebApi
|
||||||
{
|
{
|
||||||
[RoutePrefix("api/user_softkey")]
|
[RoutePrefix("api/user_softkey")]
|
||||||
public class FavoriteUserSoftkeyController : ApiController
|
public class FavoriteUserSoftkeyController : aBaseApiController // ApiController
|
||||||
{
|
{
|
||||||
|
#if false
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Oggetto adapter condiviso da WebAPI
|
/// Oggetto adapter condiviso da WebAPI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected static NcAdapter ncAdapter = new NcAdapter();
|
protected static NcAdapter ncAdapter = new NcAdapter();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
[Route("favorite"), HttpGet]
|
[Route("favorite"), HttpGet]
|
||||||
|
|||||||
@@ -12,12 +12,14 @@ using static Thermo.Active.Utils.LanguageController;
|
|||||||
namespace Thermo.Active.Controllers.WebApi
|
namespace Thermo.Active.Controllers.WebApi
|
||||||
{
|
{
|
||||||
[RoutePrefix("api/language")]
|
[RoutePrefix("api/language")]
|
||||||
public class LanguageController : ApiController
|
public class LanguageController : aBaseApiController // ApiController
|
||||||
{
|
{
|
||||||
|
#if false
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Oggetto adapter condiviso da WebAPI
|
/// Oggetto adapter condiviso da WebAPI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected static NcAdapter ncAdapter = new NcAdapter();
|
protected static NcAdapter ncAdapter = new NcAdapter();
|
||||||
|
#endif
|
||||||
|
|
||||||
[Route("languages"), HttpGet]
|
[Route("languages"), HttpGet]
|
||||||
public IHttpActionResult GetLanguageList()
|
public IHttpActionResult GetLanguageList()
|
||||||
|
|||||||
@@ -8,12 +8,14 @@ using Thermo.Active.Utils;
|
|||||||
namespace Thermo.Active.Controllers.WebApi
|
namespace Thermo.Active.Controllers.WebApi
|
||||||
{
|
{
|
||||||
[RoutePrefix("api/ModBlock")]
|
[RoutePrefix("api/ModBlock")]
|
||||||
public class ModulesController : ApiController
|
public class ModulesController : aBaseApiController // ApiController
|
||||||
{
|
{
|
||||||
|
#if false
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Oggetto adapter condiviso da WebAPI
|
/// Oggetto adapter condiviso da WebAPI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected static NcAdapter ncAdapter = new NcAdapter();
|
protected static NcAdapter ncAdapter = new NcAdapter();
|
||||||
|
#endif
|
||||||
|
|
||||||
[Route("current"), HttpGet]
|
[Route("current"), HttpGet]
|
||||||
public IHttpActionResult GetCurrentModules()
|
public IHttpActionResult GetCurrentModules()
|
||||||
|
|||||||
@@ -8,13 +8,15 @@ using static Thermo.Active.Model.Constants;
|
|||||||
namespace Thermo.Active.Controllers.WebApi
|
namespace Thermo.Active.Controllers.WebApi
|
||||||
{
|
{
|
||||||
[RoutePrefix("api/nc")]
|
[RoutePrefix("api/nc")]
|
||||||
public class NcApiController : ApiController
|
public class NcApiController : aBaseApiController // ApiController
|
||||||
{
|
{
|
||||||
|
#if false
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Oggetto adapter condiviso da WebAPI
|
/// Oggetto adapter condiviso da WebAPI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected static NcAdapter ncAdapter = new NcAdapter();
|
protected static NcAdapter ncAdapter = new NcAdapter();
|
||||||
|
|
||||||
|
#endif
|
||||||
[Route("generic_data"), HttpGet]
|
[Route("generic_data"), HttpGet]
|
||||||
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.NC_DATA, Action = ACTIONS.READ)]
|
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.NC_DATA, Action = ACTIONS.READ)]
|
||||||
public IHttpActionResult GetNcGenericData()
|
public IHttpActionResult GetNcGenericData()
|
||||||
|
|||||||
@@ -11,13 +11,16 @@ using static Thermo.Active.Model.Constants;
|
|||||||
namespace Thermo.Active.Controllers.WebApi
|
namespace Thermo.Active.Controllers.WebApi
|
||||||
{
|
{
|
||||||
[RoutePrefix("api/prod")]
|
[RoutePrefix("api/prod")]
|
||||||
public class ProdController : ApiController
|
public class ProdController : aBaseApiController //ApiController
|
||||||
{
|
{
|
||||||
|
#if false
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Oggetto adapter condiviso da WebAPI
|
/// Oggetto adapter condiviso da WebAPI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected static NcAdapter ncAdapter = new NcAdapter();
|
protected static NcAdapter ncAdapter = new NcAdapter();
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Request mode SETUP
|
/// Request mode SETUP
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -26,12 +26,14 @@ using static Thermo.Active.Model.Constants;
|
|||||||
namespace Thermo.Active.Controllers.WebApi
|
namespace Thermo.Active.Controllers.WebApi
|
||||||
{
|
{
|
||||||
[RoutePrefix("api/recipe")]
|
[RoutePrefix("api/recipe")]
|
||||||
public class RecipeController : ApiController
|
public class RecipeController : aBaseApiController // ApiController
|
||||||
{
|
{
|
||||||
|
#if false
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Oggetto adapter condiviso da WebAPI
|
/// Oggetto adapter condiviso da WebAPI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected static NcAdapter ncAdapter = new NcAdapter();
|
protected static NcAdapter ncAdapter = new NcAdapter();
|
||||||
|
#endif
|
||||||
|
|
||||||
[Route("overview"), HttpGet]
|
[Route("overview"), HttpGet]
|
||||||
public IHttpActionResult GetOverview()
|
public IHttpActionResult GetOverview()
|
||||||
@@ -699,6 +701,7 @@ namespace Thermo.Active.Controllers.WebApi
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// copy data to PLC
|
// copy data to PLC
|
||||||
checkError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> prevRecipe);
|
checkError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> prevRecipe);
|
||||||
if (checkError.IsError())
|
if (checkError.IsError())
|
||||||
|
|||||||
@@ -13,12 +13,14 @@ namespace Thermo.Active.Controllers.WebApi
|
|||||||
{
|
{
|
||||||
|
|
||||||
[RoutePrefix("api/scada")]
|
[RoutePrefix("api/scada")]
|
||||||
public class ScadaController : ApiController
|
public class ScadaController : aBaseApiController // ApiController
|
||||||
{
|
{
|
||||||
|
#if false
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Oggetto adapter condiviso da WebAPI
|
/// Oggetto adapter condiviso da WebAPI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected static NcAdapter ncAdapter = new NcAdapter();
|
protected static NcAdapter ncAdapter = new NcAdapter();
|
||||||
|
#endif
|
||||||
|
|
||||||
[Route("list"), HttpGet]
|
[Route("list"), HttpGet]
|
||||||
public IHttpActionResult GetScadaList()
|
public IHttpActionResult GetScadaList()
|
||||||
|
|||||||
@@ -8,12 +8,14 @@ using Thermo.Active.Utils;
|
|||||||
namespace Thermo.Active.Controllers.WebApi
|
namespace Thermo.Active.Controllers.WebApi
|
||||||
{
|
{
|
||||||
[RoutePrefix("api/starred_softkey")]
|
[RoutePrefix("api/starred_softkey")]
|
||||||
public class StarredUserSoftKeyController : ApiController
|
public class StarredUserSoftKeyController : aBaseApiController // ApiController
|
||||||
{
|
{
|
||||||
|
#if false
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Oggetto adapter condiviso da WebAPI
|
/// Oggetto adapter condiviso da WebAPI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected static NcAdapter ncAdapter = new NcAdapter();
|
protected static NcAdapter ncAdapter = new NcAdapter();
|
||||||
|
#endif
|
||||||
|
|
||||||
[Route("get"), HttpGet]
|
[Route("get"), HttpGet]
|
||||||
public IHttpActionResult GetStarredUserSoftkey()
|
public IHttpActionResult GetStarredUserSoftkey()
|
||||||
|
|||||||
@@ -29,12 +29,15 @@ using static Thermo.Active.Model.Constants;
|
|||||||
namespace Thermo.Active.Controllers.WebApi
|
namespace Thermo.Active.Controllers.WebApi
|
||||||
{
|
{
|
||||||
[RoutePrefix("api/underthehood")]
|
[RoutePrefix("api/underthehood")]
|
||||||
public class UnderTheHoodController : ApiController
|
public class UnderTheHoodController : aBaseApiController // ApiController
|
||||||
{
|
{
|
||||||
|
#if false
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Oggetto adapter condiviso da WebAPI
|
/// Oggetto adapter condiviso da WebAPI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected static NcAdapter ncAdapter = new NcAdapter();
|
protected static NcAdapter ncAdapter = new NcAdapter();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
[ResponseType(typeof(DTOCycleLog))]
|
[ResponseType(typeof(DTOCycleLog))]
|
||||||
[Route("CycleLogRefresh"), HttpGet]
|
[Route("CycleLogRefresh"), HttpGet]
|
||||||
|
|||||||
@@ -18,14 +18,16 @@ using System.Linq;
|
|||||||
namespace Thermo.Active.Controllers.WebApi
|
namespace Thermo.Active.Controllers.WebApi
|
||||||
{
|
{
|
||||||
[RoutePrefix("api/warmers")]
|
[RoutePrefix("api/warmers")]
|
||||||
public class WarmersController : ApiController
|
public class WarmersController : aBaseApiController // ApiController
|
||||||
{
|
{
|
||||||
#region Protected Fields
|
#region Protected Fields
|
||||||
|
|
||||||
|
#if false
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Oggetto adapter condiviso da WebAPI
|
/// Oggetto adapter condiviso da WebAPI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected static NcAdapter ncAdapter = new NcAdapter();
|
protected static NcAdapter ncAdapter = new NcAdapter();
|
||||||
|
#endif
|
||||||
|
|
||||||
protected static Dictionary<int, ThermoPoint> MeasurePoints = new Dictionary<int, ThermoPoint>();
|
protected static Dictionary<int, ThermoPoint> MeasurePoints = new Dictionary<int, ThermoPoint>();
|
||||||
|
|
||||||
@@ -589,6 +591,19 @@ namespace Thermo.Active.Controllers.WebApi
|
|||||||
return NotFound();
|
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
|
#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
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -326,6 +326,10 @@ namespace Thermo.Active.Listeners.SignalR
|
|||||||
lastSetpointHmiInvalid = currMessage;
|
lastSetpointHmiInvalid = currMessage;
|
||||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||||
context.Clients.Group("ncData").setpointHmiInvalid(currMessage);
|
context.Clients.Group("ncData").setpointHmiInvalid(currMessage);
|
||||||
|
|
||||||
|
context.Clients.Group("ncData").recipeFullDataInvalidSetpoint(LastRecipeFullData);
|
||||||
|
context.Clients.Group("ncData").warmersData(LastWarmersData);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -686,7 +690,7 @@ namespace Thermo.Active.Listeners.SignalR
|
|||||||
// Send THERMO Recipe data
|
// Send THERMO Recipe data
|
||||||
group.recipeFullData(LastRecipeFullData);
|
group.recipeFullData(LastRecipeFullData);
|
||||||
group.recipeOverData(LastRecipeOverData);
|
group.recipeOverData(LastRecipeOverData);
|
||||||
group.setpointHmiInvalid();
|
|
||||||
// Send THERMO Modules data
|
// Send THERMO Modules data
|
||||||
group.modulesData(LastModulesData);
|
group.modulesData(LastModulesData);
|
||||||
// Send THERMO Warmers data
|
// Send THERMO Warmers data
|
||||||
@@ -696,6 +700,8 @@ namespace Thermo.Active.Listeners.SignalR
|
|||||||
group.gaugeData(LastLiveProdData);
|
group.gaugeData(LastLiveProdData);
|
||||||
// THERMO prod info data
|
// THERMO prod info data
|
||||||
group.prodInfoData(LastProdInfoData);
|
group.prodInfoData(LastProdInfoData);
|
||||||
|
|
||||||
|
group.prodPanelData(LastProdPanelData);
|
||||||
// THERMO prod cycle data
|
// THERMO prod cycle data
|
||||||
group.prodCycleData(LastProdCycleData);
|
group.prodCycleData(LastProdCycleData);
|
||||||
|
|
||||||
|
|||||||
@@ -30,4 +30,4 @@ using System.Runtime.InteropServices;
|
|||||||
//
|
//
|
||||||
// You can specify all the values or you can default the Revision and Build Numbers
|
// You can specify all the values or you can default the Revision and Build Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
[assembly: AssemblyVersion("1.1.185")]
|
[assembly: AssemblyVersion("1.1.191")]
|
||||||
|
|||||||
@@ -222,6 +222,7 @@
|
|||||||
<Compile Include="Attributes\WebApiAuthorizeAttribute.cs" />
|
<Compile Include="Attributes\WebApiAuthorizeAttribute.cs" />
|
||||||
<Compile Include="Attributes\SignalRAuthorizeAttribute.cs" />
|
<Compile Include="Attributes\SignalRAuthorizeAttribute.cs" />
|
||||||
<Compile Include="Controllers\SignalR\NcHub.cs" />
|
<Compile Include="Controllers\SignalR\NcHub.cs" />
|
||||||
|
<Compile Include="Controllers\WebApi\aBaseApiController.cs" />
|
||||||
<Compile Include="Controllers\WebApi\ApiAlarmController.cs" />
|
<Compile Include="Controllers\WebApi\ApiAlarmController.cs" />
|
||||||
<Compile Include="Controllers\WebApi\UnderTheHoodController.cs" />
|
<Compile Include="Controllers\WebApi\UnderTheHoodController.cs" />
|
||||||
<Compile Include="Controllers\WebApi\SchedTaskController.cs" />
|
<Compile Include="Controllers\WebApi\SchedTaskController.cs" />
|
||||||
|
|||||||
@@ -119,6 +119,9 @@ namespace Thermo.Active
|
|||||||
ListenersHandler.Stop();
|
ListenersHandler.Stop();
|
||||||
// Close WinForm
|
// Close WinForm
|
||||||
ServerControlWindow.Stop();
|
ServerControlWindow.Stop();
|
||||||
|
|
||||||
|
// force close
|
||||||
|
Environment.Exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool ValidateAddress(string Addr)
|
private static bool ValidateAddress(string Addr)
|
||||||
|
|||||||
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 {
|
.body {
|
||||||
height: calc(~"100%"- 64px);
|
height: calc(~"100%" - 64px);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
@@ -3476,7 +3476,6 @@
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background: #ffffff;
|
|
||||||
top: 0;
|
top: 0;
|
||||||
display: block;
|
display: block;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@@ -3485,6 +3484,9 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
cursor: -webkit-grab;
|
cursor: -webkit-grab;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.loading {
|
.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 {
|
.btngroup {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
@@ -3562,6 +3575,9 @@
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
color: #FFF;
|
color: #FFF;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
button:disabled {
|
button:disabled {
|
||||||
|
|||||||
@@ -2321,7 +2321,7 @@ article .box .body {
|
|||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
.modal.modal-image .body {
|
.modal.modal-image .body {
|
||||||
height: calc(100%-64px);
|
height: calc(100% - 64px);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
@@ -3668,7 +3668,6 @@ article .box .body {
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background: #ffffff;
|
|
||||||
top: 0;
|
top: 0;
|
||||||
display: block;
|
display: block;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@@ -3677,6 +3676,9 @@ article .box .body {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
cursor: -webkit-grab;
|
cursor: -webkit-grab;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
}
|
}
|
||||||
.imageViewerZoom .loading {
|
.imageViewerZoom .loading {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@@ -3715,6 +3717,16 @@ article .box .body {
|
|||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
margin-top: 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 {
|
.imageViewerZoom .btngroup {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
@@ -3730,8 +3742,6 @@ article .box .body {
|
|||||||
}
|
}
|
||||||
.imageViewerZoom button {
|
.imageViewerZoom button {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
justify-content: center;
|
|
||||||
display: flex;
|
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
background-image: linear-gradient(to bottom, #1756ad, #002680);
|
background-image: linear-gradient(to bottom, #1756ad, #002680);
|
||||||
box-shadow: 0 3px 5px 0 rgba(0, 0, 0, 0.4);
|
box-shadow: 0 3px 5px 0 rgba(0, 0, 0, 0.4);
|
||||||
@@ -3744,6 +3754,9 @@ article .box .body {
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
color: #FFF;
|
color: #FFF;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
}
|
}
|
||||||
.imageViewerZoom button:disabled {
|
.imageViewerZoom button:disabled {
|
||||||
background-color: #002680 !important;
|
background-color: #002680 !important;
|
||||||
|
|||||||
Generated
+18412
-18460
File diff suppressed because it is too large
Load Diff
@@ -12,6 +12,7 @@ import { loginService, machineService, localizationService } from "./services";
|
|||||||
import { prodService } from "./services/prodService";
|
import { prodService } from "./services/prodService";
|
||||||
import * as iziToast from "izitoast";
|
import * as iziToast from "izitoast";
|
||||||
import { underTheHoodService } from "./services/underTheHoodService";
|
import { underTheHoodService } from "./services/underTheHoodService";
|
||||||
|
import { warmersService } from "./services/warmersService";
|
||||||
|
|
||||||
// import { UsersService } from "./services/usersService";
|
// import { UsersService } from "./services/usersService";
|
||||||
|
|
||||||
@@ -60,19 +61,16 @@ async function loadMachineConfig() {
|
|||||||
|
|
||||||
await loginService.getUserInfo();
|
await loginService.getUserInfo();
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let machine = new machineService();
|
let machine = new machineService();
|
||||||
let result = await machine.getAreasConfiguration();
|
let result = await machine.getAreasConfiguration();
|
||||||
machineStatusActions.setAreasConfg(store, result);
|
machineStatusActions.setAreasConfg(store, result);
|
||||||
|
|
||||||
let mcresult = await machine.getMachineConfiguration();
|
let mcresult = await machine.getMachineConfiguration();
|
||||||
|
await underTheHoodService.getChannelsConfig();
|
||||||
|
await warmersService.GetResistances();
|
||||||
machineStatusActions.setWarmersParameters(store, mcresult.additionalParameters);
|
machineStatusActions.setWarmersParameters(store, mcresult.additionalParameters);
|
||||||
|
|
||||||
await prodService.GetProdPanel();
|
|
||||||
|
|
||||||
await underTheHoodService.getChannels();
|
|
||||||
await underTheHoodService.getChannelsConfig();
|
|
||||||
|
|
||||||
// load default language
|
// load default language
|
||||||
if (!(store.state as AppModel).localization.currentLanguage) {
|
if (!(store.state as AppModel).localization.currentLanguage) {
|
||||||
|
|||||||
@@ -130,8 +130,6 @@ export default class Dashboard extends Vue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async mounted() {
|
async mounted() {
|
||||||
prodService.GetProdPanel();
|
|
||||||
|
|
||||||
let $this = this;
|
let $this = this;
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
$this.now = moment();
|
$this.now = moment();
|
||||||
|
|||||||
+2
-2
@@ -42,8 +42,8 @@ export default class SVGCaricatore extends Vue{
|
|||||||
minoreuguale:string="<=";
|
minoreuguale:string="<=";
|
||||||
|
|
||||||
getPositionSheet(id,col){
|
getPositionSheet(id,col){
|
||||||
var vent = ((this.larghTelaioSVG + (this.dimVentose*2)) / (this.numVentose +1));
|
var vent = (this.larghTelaioSVG - (this.dimVentose*2)) / (this.numVentose -1);
|
||||||
var posX = (id*vent ) - (this.dimVentose*2);
|
var posX = (id-1)*vent;
|
||||||
if(col == 1)
|
if(col == 1)
|
||||||
return "translate(-630 -147) translate(50 25) translate(580 122) translate(0 70) translate(0 0) translate("+ posX + ")";
|
return "translate(-630 -147) translate(50 25) translate(580 122) translate(0 70) translate(0 0) translate("+ posX + ")";
|
||||||
else if(col == 2)
|
else if(col == 2)
|
||||||
|
|||||||
@@ -20,6 +20,12 @@
|
|||||||
position: relative;
|
position: relative;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
.bitSelect .form.error {
|
||||||
|
outline: 2px #d0021b auto !important;
|
||||||
|
}
|
||||||
|
.bitSelect .form.disabled {
|
||||||
|
background-color: rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
.bitSelect .form i {
|
.bitSelect .form i {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 4px;
|
right: 4px;
|
||||||
|
|||||||
@@ -19,6 +19,16 @@
|
|||||||
padding-right: 25px;
|
padding-right: 25px;
|
||||||
position: relative;
|
position: relative;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
|
&.error{
|
||||||
|
outline: 2px #d0021b auto !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.disabled{
|
||||||
|
background-color: rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
i {
|
i {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 4px;
|
right: 4px;
|
||||||
|
|||||||
@@ -23,6 +23,13 @@ export default class bitSelect extends Vue {
|
|||||||
this.value.setpointHMI = v;
|
this.value.setpointHMI = v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
openclose(){
|
||||||
|
if(!this.value || !this.value.status || !this.value.status.enabled)
|
||||||
|
return
|
||||||
|
|
||||||
|
this.opened = !this.opened
|
||||||
|
}
|
||||||
|
|
||||||
get currentValue() {
|
get currentValue() {
|
||||||
let result = []
|
let result = []
|
||||||
for (let index = 0; index < this.bitSize; index++) {
|
for (let index = 0; index < this.bitSize; index++) {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div class="bitSelect">
|
<div class="bitSelect">
|
||||||
<div
|
<div
|
||||||
class="form"
|
class="form"
|
||||||
@click="opened = !opened"
|
@click="openclose"
|
||||||
:class="{'error': value && value.status && value.status.hasError, 'disabled': value && value.status && !value.status.enabled}"
|
:class="{'error': value && value.status && value.status.hasError, 'disabled': value && value.status && !value.status.enabled}"
|
||||||
>
|
>
|
||||||
{{currentValue}}
|
{{currentValue}}
|
||||||
|
|||||||
+70
@@ -0,0 +1,70 @@
|
|||||||
|
.warmers {
|
||||||
|
display: grid !important;
|
||||||
|
grid-template-columns: 1fr 70px;
|
||||||
|
margin-right: -14px;
|
||||||
|
}
|
||||||
|
.warmers .right-controls {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column nowrap;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
.warmers .right-controls .tm-controls {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
height: 420px;
|
||||||
|
}
|
||||||
|
.warmers .right-controls .tm-controls input[type="range"][orient="vertical"] {
|
||||||
|
writing-mode: bt-lr;
|
||||||
|
/* IE */
|
||||||
|
-webkit-appearance: slider-vertical;
|
||||||
|
/* WebKit */
|
||||||
|
width: 6px;
|
||||||
|
height: 150px;
|
||||||
|
border: none !important;
|
||||||
|
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
.warmers .right-controls .tm-controls input[type="range"][orient="vertical"]::-webkit-slider-thumb {
|
||||||
|
min-width: 30px;
|
||||||
|
min-height: 30px;
|
||||||
|
border: none;
|
||||||
|
background: none !important;
|
||||||
|
appearance: none;
|
||||||
|
}
|
||||||
|
.warmers .right-controls .tm-controls input[type="range"]::-webkit-slider-thumb {
|
||||||
|
background-color: linear-gradient(to bottom, #1756ad, #002e6e 97%) !important;
|
||||||
|
}
|
||||||
|
.warmers .right-controls .um-buttons {
|
||||||
|
background-color: #dddddd;
|
||||||
|
height: 130px;
|
||||||
|
width: 40px;
|
||||||
|
border-radius: 20px;
|
||||||
|
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column nowrap;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.warmers .right-controls .um-buttons button {
|
||||||
|
width: 34px;
|
||||||
|
height: 34px;
|
||||||
|
border-radius: 50px;
|
||||||
|
border: none;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 34px;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #fff;
|
||||||
|
box-shadow: inset 0 2px 2px 0 rgba(0, 0, 0, 0.19);
|
||||||
|
background-color: rgba(187, 188, 188, 0.5);
|
||||||
|
}
|
||||||
|
.warmers .right-controls .um-buttons button.selected {
|
||||||
|
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.5);
|
||||||
|
background-image: linear-gradient(to bottom, #1756ad, #002e6e 97%);
|
||||||
|
}
|
||||||
|
.warmers .right-controls .buttons button {
|
||||||
|
margin: 8px;
|
||||||
|
}
|
||||||
+2
-2
@@ -13,13 +13,13 @@
|
|||||||
flex-flow: column;
|
flex-flow: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
height: 350px;
|
height: 420px;
|
||||||
|
|
||||||
input[type="range"][orient="vertical"] {
|
input[type="range"][orient="vertical"] {
|
||||||
writing-mode: bt-lr; /* IE */
|
writing-mode: bt-lr; /* IE */
|
||||||
-webkit-appearance: slider-vertical; /* WebKit */
|
-webkit-appearance: slider-vertical; /* WebKit */
|
||||||
width: 6px;
|
width: 6px;
|
||||||
height: 250px;
|
height: 150px;
|
||||||
border: none !important;
|
border: none !important;
|
||||||
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
|
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
|
|||||||
+23
-2
@@ -10,11 +10,12 @@ import termoModal from "./thermoProphet-modal.vue";
|
|||||||
import { ModalHelper } from '@/components/modals';
|
import { ModalHelper } from '@/components/modals';
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import { messageService } from "src/_base";
|
import { messageService } from "src/_base";
|
||||||
|
import ModalImage from "@/modules/base-components/modal-image.vue";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
name: "thermocamera", components: {
|
name: "thermocamera", components: {
|
||||||
|
|
||||||
warmers
|
warmers,ModalImage
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
export default class Thermocamera extends Vue {
|
export default class Thermocamera extends Vue {
|
||||||
@@ -64,8 +65,8 @@ export default class Thermocamera extends Vue {
|
|||||||
|
|
||||||
messageService.subscribeToChannel("new-thermocam-image", (args)=>{
|
messageService.subscribeToChannel("new-thermocam-image", (args)=>{
|
||||||
if(this.TCamData){
|
if(this.TCamData){
|
||||||
console.log(args)
|
|
||||||
this.TCamData.lastTakenImage = args[0];
|
this.TCamData.lastTakenImage = args[0];
|
||||||
|
ModalHelper.modalImage.content = this.thermocameraOriginalUrl;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -95,6 +96,11 @@ export default class Thermocamera extends Vue {
|
|||||||
return "/thermoprophet/colored/_last.jpg?lastmod=NOTAVAILABLE";
|
return "/thermoprophet/colored/_last.jpg?lastmod=NOTAVAILABLE";
|
||||||
return "/thermoprophet/colored/_last.jpg?lastmod=" + this.TCamData.lastTakenImage;
|
return "/thermoprophet/colored/_last.jpg?lastmod=" + this.TCamData.lastTakenImage;
|
||||||
}
|
}
|
||||||
|
get thermocameraOriginalUrl(){
|
||||||
|
if(!this.TCamData || moment(this.TCamData.lastTakenImage).year() <= 2000)
|
||||||
|
return "/thermoprophet/original/_last.jpg?lastmod=NOTAVAILABLE";
|
||||||
|
return "/thermoprophet/original/_last.jpg?lastmod=" + this.TCamData.lastTakenImage;
|
||||||
|
}
|
||||||
|
|
||||||
get thermocameraImageOk(): boolean {
|
get thermocameraImageOk(): boolean {
|
||||||
clearInterval(this.timeoutLastTakenImage);
|
clearInterval(this.timeoutLastTakenImage);
|
||||||
@@ -231,4 +237,19 @@ export default class Thermocamera extends Vue {
|
|||||||
async openThermoModal() {
|
async openThermoModal() {
|
||||||
ModalHelper.ShowModal(termoModal, "modal2");
|
ModalHelper.ShowModal(termoModal, "modal2");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async openImageModal() {
|
||||||
|
|
||||||
|
if(this.TCamData){
|
||||||
|
ModalHelper.modalImage.title = moment(this.TCamData.lastTakenImage).format("L") + " - " + moment(this.TCamData.lastTakenImage).format("LTS");
|
||||||
|
}
|
||||||
|
ModalHelper.modalImage.content = this.thermocameraOriginalUrl;
|
||||||
|
ModalHelper.ShowModal(ModalImage, "modal2");
|
||||||
|
}
|
||||||
|
|
||||||
|
async forceTakeImage() {
|
||||||
|
warmersService.TakeNewPhoto();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
+7
-1
@@ -125,9 +125,15 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tm-controls">
|
<div class="tm-controls">
|
||||||
<button class="btn btn-info square" @click="openThermoModal()">
|
<button class="btn btn-info square" @click="forceTakeImage()">
|
||||||
|
<img src="/assets/icons/png/takesnap.png" />
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-info square" @click="openImageModal()">
|
||||||
<img src="/assets/icons/png/ico-bt-selez-image.png" />
|
<img src="/assets/icons/png/ico-bt-selez-image.png" />
|
||||||
</button>
|
</button>
|
||||||
|
<button class="btn btn-info square" @click="openThermoModal()">
|
||||||
|
<img src="/assets/icons/png/history.png" />
|
||||||
|
</button>
|
||||||
<span>{{timeCamDiff}}</span>
|
<span>{{timeCamDiff}}</span>
|
||||||
<input
|
<input
|
||||||
:disabled="!thermocameraImageOk"
|
:disabled="!thermocameraImageOk"
|
||||||
|
|||||||
+2
-2
@@ -27,8 +27,8 @@ export default class outputRow extends Vue {
|
|||||||
async force(value: number) {
|
async force(value: number) {
|
||||||
if(!this.item.isForced && (this.item.forcedValue === undefined || value != this.item.forcedValue))
|
if(!this.item.isForced && (this.item.forcedValue === undefined || value != this.item.forcedValue))
|
||||||
{
|
{
|
||||||
ModalHelper.AskConfirm( this.$options.filters.localize("Richiesta di conferma","modal_confirm_title"),
|
ModalHelper.AskConfirm( this.$options.filters.localize("modal_confirm_title", "Richiesta di conferma"),
|
||||||
this.$options.filters.localize("Confirm?","softkey_confirm"),
|
this.$options.filters.localize("softkey_confirm", "Confirm?"),
|
||||||
async() => {
|
async() => {
|
||||||
await underTheHoodService.forceChannel(this.group, this.item, value);
|
await underTheHoodService.forceChannel(this.group, this.item, value);
|
||||||
}, null, "modal");
|
}, null, "modal");
|
||||||
|
|||||||
@@ -49,7 +49,8 @@ export class ModalHelper {
|
|||||||
};
|
};
|
||||||
public static modalImage = {
|
public static modalImage = {
|
||||||
content: null,
|
content: null,
|
||||||
title: null
|
title: null,
|
||||||
|
lastPhoto:null
|
||||||
};
|
};
|
||||||
public static maintenanceModal = {
|
public static maintenanceModal = {
|
||||||
currentMaintenance: null,
|
currentMaintenance: null,
|
||||||
|
|||||||
@@ -24,12 +24,6 @@ import "./app.business-logic";
|
|||||||
import "./app.modules";
|
import "./app.modules";
|
||||||
import { messageService } from "src/_base";
|
import { messageService } from "src/_base";
|
||||||
|
|
||||||
import { warmersService } from "./services/warmersService";
|
|
||||||
warmersService.GetChannels();
|
|
||||||
warmersService.GetResistances();
|
|
||||||
import { prodService } from "./services/prodService";
|
|
||||||
prodService.GetProd();
|
|
||||||
|
|
||||||
const App = () =>
|
const App = () =>
|
||||||
import("./App.vue");
|
import("./App.vue");
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { Factory, messageService } from "../../_base";
|
|||||||
import ZoomImage from './zoom-image.vue'
|
import ZoomImage from './zoom-image.vue'
|
||||||
import Vue from "vue";
|
import Vue from "vue";
|
||||||
import Component from "vue-class-component";
|
import Component from "vue-class-component";
|
||||||
|
import moment from "moment";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
components:{
|
components:{
|
||||||
@@ -13,19 +14,24 @@ import Component from "vue-class-component";
|
|||||||
export default class ModalImage extends Vue {
|
export default class ModalImage extends Vue {
|
||||||
|
|
||||||
|
|
||||||
content: string = "";
|
content: string = "";
|
||||||
title: string = "";
|
title: string = "";
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.content = ModalHelper.modalImage.content;
|
||||||
|
this.title = ModalHelper.modalImage.title;
|
||||||
|
|
||||||
mounted() {
|
messageService.subscribeToChannel("new-thermocam-image", (args)=>{
|
||||||
this.content = ModalHelper.modalImage.content;
|
this.content = "/thermoprophet/original/_last.jpg?lastmod=" + args[0];
|
||||||
this.title = ModalHelper.modalImage.title;
|
this.title = moment(args[0]).format("L") + " - " + moment(args[0]).format("LTS");
|
||||||
}
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
beforeMount() {
|
beforeMount() {
|
||||||
messageService.subscribeToChannel("esc_pressed", args => {
|
messageService.subscribeToChannel("esc_pressed", args => {
|
||||||
this.close();
|
this.close();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
@@ -34,7 +40,7 @@ export default class ModalImage extends Vue {
|
|||||||
|
|
||||||
close() {
|
close() {
|
||||||
messageService.deleteChannel("esc_pressed");
|
messageService.deleteChannel("esc_pressed");
|
||||||
ModalHelper.HideModal();
|
ModalHelper.HideModal("modal2");
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
@@ -1,8 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<modal type="modal-image" :title="title">
|
<modal type="modal-image" :title="title">
|
||||||
<button class="close" slot="header-buttons" @click="close()"><i class="fa fa-remove"></i></button>
|
<button class="close" slot="header-buttons" @click="close()"><i class="fa fa-remove"></i></button>
|
||||||
<zoom-image :imageSrc="this.content" :showBackButton="false" />
|
<zoom-image :imageSrc="this.content" :showBackButton="false" :isTcam="true"/>
|
||||||
</modal>
|
</modal>
|
||||||
</template>
|
</template>
|
||||||
<script src="./modal-image.ts" lang="ts" />
|
<script src="./modal-image.ts" lang="ts" />
|
||||||
<!--<script src="./create-maintenance.ts" lang="ts"></script>-->
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import Vue from "vue";
|
import Vue from "vue";
|
||||||
import { Prop, Component } from "vue-property-decorator";
|
import { Prop, Component } from "vue-property-decorator";
|
||||||
|
import { warmersService } from "@/services/warmersService";
|
||||||
|
|
||||||
@Component([])
|
@Component([])
|
||||||
export default class ZoomImage extends Vue {
|
export default class ZoomImage extends Vue {
|
||||||
@@ -9,6 +10,8 @@ export default class ZoomImage extends Vue {
|
|||||||
imageSrc: string;
|
imageSrc: string;
|
||||||
@Prop({ default: true })
|
@Prop({ default: true })
|
||||||
showBackButton: boolean;
|
showBackButton: boolean;
|
||||||
|
@Prop({ default: false })
|
||||||
|
isTcam: boolean;
|
||||||
|
|
||||||
transImage: string = "";
|
transImage: string = "";
|
||||||
scaleImage: number = 1;
|
scaleImage: number = 1;
|
||||||
@@ -136,5 +139,10 @@ export default class ZoomImage extends Vue {
|
|||||||
this.transImage = "translateX(" + 0 + "px)translateY(" + 0 + "px)scale(" + this.scaleImage + ")";
|
this.transImage = "translateX(" + 0 + "px)translateY(" + 0 + "px)scale(" + this.scaleImage + ")";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async forceTakeImage() {
|
||||||
|
warmersService.TakeNewPhoto();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
@@ -7,14 +7,19 @@
|
|||||||
@touchstart="dw"
|
@touchstart="dw"
|
||||||
@touchmove="move"
|
@touchmove="move"
|
||||||
@dblclick="zoomPlusAnimated">
|
@dblclick="zoomPlusAnimated">
|
||||||
|
<img ref="imageChild" :style="{'transform':transImage,'transition':animation}" :src="imageSrc" v-on:load="onImageLoaded" >
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" :style="{'transform':transImage}" v-html="imageSrc" version="1.1" width="100%" height="100%" viewBox="0 0 2000 1500" v-on:load="onImageLoaded"></svg>
|
<!-- <svg xmlns="http://www.w3.org/2000/svg" :style="{'transform':transImage}" v-html="imageSrc" version="1.1" width="100%" height="100%" viewBox="0 0 2000 1500" v-on:load="onImageLoaded"></svg>-->
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="loading" v-if="!imageLoaded"><i class="fa fa-circle-o-notch fa-spin"></i></div>-->
|
<div class="loading" v-if="!imageLoaded"><i class="fa fa-circle-o-notch fa-spin"></i></div>
|
||||||
|
|
||||||
<div class="btngroup_close" v-if="showBackButton">
|
<div class="btngroup_close" v-if="showBackButton">
|
||||||
<button @click="close"><i class="fa fa-chevron-left" ></i></button>
|
<button @click="close"><i class="fa fa-chevron-left" ></i></button>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="btngroup2" v-if="true">
|
||||||
|
<button @click="forceTakeImage()">
|
||||||
|
<img src="/assets/icons/png/takesnap.png" />
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
<div class="btngroup">
|
<div class="btngroup">
|
||||||
<button @click="zoomPlusAnimated"><i class="fa fa-search-plus" ></i></button>
|
<button @click="zoomPlusAnimated"><i class="fa fa-search-plus" ></i></button>
|
||||||
<div class="rangecontainer">
|
<div class="rangecontainer">
|
||||||
|
|||||||
@@ -113,6 +113,7 @@ export class Hub {
|
|||||||
|
|
||||||
// qui i NUOVI metodi NUOVI dal server (Recipe, gauges) da completare lato HUB
|
// qui i NUOVI metodi NUOVI dal server (Recipe, gauges) da completare lato HUB
|
||||||
this._hub.client.recipeFullData = Hub.recipeFullData;
|
this._hub.client.recipeFullData = Hub.recipeFullData;
|
||||||
|
this._hub.client.recipeFullDataInvalidSetpoint = Hub.recipeFullDataInvalidSetpoint;
|
||||||
this._hub.client.warmersData = Hub.warmersData;
|
this._hub.client.warmersData = Hub.warmersData;
|
||||||
this._hub.client.setpointHmiInvalid = Hub.setpointHmiInvalid;
|
this._hub.client.setpointHmiInvalid = Hub.setpointHmiInvalid;
|
||||||
this._hub.client.recipeOverData = Hub.recipeOverData;
|
this._hub.client.recipeOverData = Hub.recipeOverData;
|
||||||
@@ -201,14 +202,17 @@ export class Hub {
|
|||||||
recipeActions.setCurrent(store, data, true);
|
recipeActions.setCurrent(store, data, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static recipeFullDataInvalidSetpoint(data) {
|
||||||
|
recipeActions.setCurrent(store, data, false);
|
||||||
|
}
|
||||||
|
|
||||||
public static warmersData(data) {
|
public static warmersData(data) {
|
||||||
warmersActions.setChannels(store, data as { [id: number]: Warmers.IChannel });
|
warmersActions.setChannels(store, data as { [id: number]: Warmers.IChannel });
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async setpointHmiInvalid(data) {
|
public static async setpointHmiInvalid(data) {
|
||||||
if (data) {
|
if (data) {
|
||||||
await recipeService.GetCurrent();
|
|
||||||
await warmersService.GetChannels();
|
|
||||||
await warmersService.GetThermocameraStatus();
|
await warmersService.GetThermocameraStatus();
|
||||||
// await recipeService.GetOverview();
|
// await recipeService.GetOverview();
|
||||||
}
|
}
|
||||||
@@ -231,11 +235,14 @@ export class Hub {
|
|||||||
prodActions.setProd(store, data);
|
prodActions.setProd(store, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public updateAuthToken() {
|
public updateAuthToken() {
|
||||||
// Set or update authorization token
|
// Set or update authorization token
|
||||||
let authData = JSON.parse(window.localStorage.getItem("authorizationData") || window.sessionStorage.getItem("authorizationData")) as AuthToken;
|
let authData = JSON.parse(window.localStorage.getItem("authorizationData") || window.sessionStorage.getItem("authorizationData")) as AuthToken;
|
||||||
|
|
||||||
$.connection.hub.qs = {};
|
$.connection.hub.qs = {};
|
||||||
|
console.log(authData);
|
||||||
if (authData)
|
if (authData)
|
||||||
$.connection.hub.qs.Authorization = authData.access_token;
|
$.connection.hub.qs.Authorization = authData.access_token;
|
||||||
|
|
||||||
@@ -243,6 +250,7 @@ export class Hub {
|
|||||||
$.connection.hub.qs.CmsClientId = cmsClient.getClientID;
|
$.connection.hub.qs.CmsClientId = cmsClient.getClientID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private logout(e) {
|
private logout(e) {
|
||||||
if (e)
|
if (e)
|
||||||
appModelActions.CheckLogoff(store, e.id);
|
appModelActions.CheckLogoff(store, e.id);
|
||||||
|
|||||||
@@ -90,5 +90,10 @@ export class WarmersService extends baseRestService {
|
|||||||
async ResetMeasurePoints() {
|
async ResetMeasurePoints() {
|
||||||
return this.Put((await this.BASE_URL()) + `resetMeasurePoint`, null, true);
|
return this.Put((await this.BASE_URL()) + `resetMeasurePoint`, null, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async TakeNewPhoto() {
|
||||||
|
return this.Put((await this.BASE_URL()) + `TakeTcamImage`, null, true);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
export const warmersService = new WarmersService();
|
export const warmersService = new WarmersService();
|
||||||
Reference in New Issue
Block a user