@@ -179,6 +179,8 @@ namespace CMS_Client.View
|
||||
Browser.LoadHandler.OnLoadError += BrowserLoadsError;
|
||||
Browser.KeyboardHandler.OnKeyEvent += BrowserKeyPress;
|
||||
Browser.ContextMenuHandler.OnBeforeContextMenu += BrowserContextMenu;
|
||||
Browser.DisplayHandler.OnConsoleMessage += BrowserConsoleMessage;
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -354,6 +356,13 @@ namespace CMS_Client.View
|
||||
e.Model.Clear();
|
||||
}
|
||||
|
||||
|
||||
//Override Javascript Console Message
|
||||
private void BrowserConsoleMessage(object sender, CfxOnConsoleMessageEventArgs e)
|
||||
{
|
||||
e.SetReturnValue(true);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
+12
-16
@@ -280,7 +280,6 @@ namespace CMS_Client.View
|
||||
public static void SetState(NcState St)
|
||||
{
|
||||
state = St;
|
||||
CaptureHMI();
|
||||
}
|
||||
|
||||
|
||||
@@ -374,7 +373,6 @@ namespace CMS_Client.View
|
||||
//Start the Hook
|
||||
if (MainViewHandle != IntPtr.Zero && ncprocess.MainWindowHandle != IntPtr.Zero && MainProcessPID != 0 && NcProcessPID != 0 && windowstarted)
|
||||
{
|
||||
CaptureHMI();
|
||||
//Detach the hook
|
||||
if (hhook != IntPtr.Zero)
|
||||
UnhookWinEvent(hhook);
|
||||
@@ -383,11 +381,11 @@ namespace CMS_Client.View
|
||||
procDelegate = new WinEventDelegate(WinEventProc);
|
||||
hhook = SetWinEventHook(EVENT_OBJECT_FOCUS, EVENT_OBJECT_FOCUS, IntPtr.Zero, procDelegate, 0, 0, WINEVENT_OUTOFCONTEXT);
|
||||
|
||||
//Start the new Thread of Image Captutre
|
||||
if (CaptureThread != null)
|
||||
CaptureThread.Abort();
|
||||
CaptureThread = new Thread(new ThreadStart(CaptureCycle));
|
||||
CaptureThread.Start();
|
||||
//Start the new Thread of Image Captutre - in Standby (NICOLA CARMINATI 25/01/2018)
|
||||
//if (CaptureThread != null)
|
||||
// CaptureThread.Abort();
|
||||
//CaptureThread = new Thread(new ThreadStart(CaptureCycle));
|
||||
//CaptureThread.Start();
|
||||
|
||||
//Start the new Thread of Follow-NC-Window
|
||||
if (Config.VendorHmiConfig.FollowNcWindow)
|
||||
@@ -449,15 +447,13 @@ namespace CMS_Client.View
|
||||
HideTaskBar();
|
||||
|
||||
//Resize the Popup opened on Nc Window
|
||||
if (ActualPID != LastHookedPID)
|
||||
{
|
||||
//get the Handle of the Popup
|
||||
PopupHandle = GetLastActivePopup(ncprocess.MainWindowHandle);
|
||||
if (PopupHandle != ncprocess.MainWindowHandle)
|
||||
{
|
||||
ResizeOutofBoundWindow(ncprocess.MainWindowHandle, PopupHandle);
|
||||
}
|
||||
}
|
||||
//if (ActualPID != LastHookedPID)
|
||||
//{
|
||||
// //get the Handle of the Popup
|
||||
// PopupHandle = GetLastActivePopup(ncprocess.MainWindowHandle);
|
||||
// if (PopupHandle != ncprocess.MainWindowHandle)
|
||||
// ResizeOutofBoundWindow(ncprocess.MainWindowHandle, PopupHandle);
|
||||
//}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
@@ -100,7 +100,8 @@ namespace Step.Config
|
||||
{
|
||||
Name = element.Name.ToString(),
|
||||
Enabled = Convert.ToBoolean(element.Element("enabled").Value),
|
||||
AllowExternalBrowser = Convert.ToBoolean(element.Element("allowExternalBrowser").Value)
|
||||
AllowExternalBrowser = Convert.ToBoolean(element.Element("allowExternalBrowser").Value),
|
||||
NcNeeded = Convert.ToBoolean(element.Element("ncNeeded").Value)
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -16,30 +16,37 @@
|
||||
<production>
|
||||
<enabled>true</enabled>
|
||||
<allowExternalBrowser>false</allowExternalBrowser>
|
||||
<ncNeeded>true</ncNeeded>
|
||||
</production>
|
||||
<tooling>
|
||||
<enabled>false</enabled>
|
||||
<allowExternalBrowser>false</allowExternalBrowser>
|
||||
<ncNeeded>true</ncNeeded>
|
||||
</tooling>
|
||||
<report>
|
||||
<enabled>true</enabled>
|
||||
<allowExternalBrowser>true</allowExternalBrowser>
|
||||
<ncNeeded>true</ncNeeded>
|
||||
</report>
|
||||
<alarms>
|
||||
<enabled>false</enabled>
|
||||
<allowExternalBrowser>true</allowExternalBrowser>
|
||||
<ncNeeded>false</ncNeeded>
|
||||
</alarms>
|
||||
<maintenance>
|
||||
<enabled>true</enabled>
|
||||
<allowExternalBrowser>false</allowExternalBrowser>
|
||||
<ncNeeded>true</ncNeeded>
|
||||
</maintenance>
|
||||
<utilities>
|
||||
<enabled>true</enabled>
|
||||
<allowExternalBrowser>false</allowExternalBrowser>
|
||||
<ncNeeded>false</ncNeeded>
|
||||
</utilities>
|
||||
<scada>
|
||||
<enabled>false</enabled>
|
||||
<allowExternalBrowser>true</allowExternalBrowser>
|
||||
<ncNeeded>true</ncNeeded>
|
||||
</scada>
|
||||
</areasConfig>
|
||||
</root>
|
||||
@@ -14,6 +14,7 @@
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="serverConfig">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
@@ -23,6 +24,7 @@
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="areasConfig">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
@@ -31,6 +33,7 @@
|
||||
<xs:all>
|
||||
<xs:element name="enabled" type="xs:boolean"/>
|
||||
<xs:element name="allowExternalBrowser" fixed="false"/>
|
||||
<xs:element name="ncNeeded" type="xs:boolean"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
@@ -40,6 +43,7 @@
|
||||
<xs:all>
|
||||
<xs:element name="enabled" type="xs:boolean"/>
|
||||
<xs:element name="allowExternalBrowser" fixed="false"/>
|
||||
<xs:element name="ncNeeded" type="xs:boolean"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
@@ -49,6 +53,7 @@
|
||||
<xs:all>
|
||||
<xs:element name="enabled" type="xs:boolean"/>
|
||||
<xs:element name="allowExternalBrowser" type="xs:boolean"/>
|
||||
<xs:element name="ncNeeded" type="xs:boolean"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
@@ -58,6 +63,7 @@
|
||||
<xs:all>
|
||||
<xs:element name="enabled" type="xs:boolean"/>
|
||||
<xs:element name="allowExternalBrowser" type="xs:boolean"/>
|
||||
<xs:element name="ncNeeded" type="xs:boolean"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
@@ -67,6 +73,7 @@
|
||||
<xs:all>
|
||||
<xs:element name="enabled" type="xs:boolean"/>
|
||||
<xs:element name="allowExternalBrowser" fixed="false"/>
|
||||
<xs:element name="ncNeeded" type="xs:boolean"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
@@ -76,6 +83,7 @@
|
||||
<xs:all>
|
||||
<xs:element name="enabled" type="xs:boolean"/>
|
||||
<xs:element name="allowExternalBrowser" fixed="false"/>
|
||||
<xs:element name="ncNeeded" type="xs:boolean"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
@@ -85,6 +93,7 @@
|
||||
<xs:all>
|
||||
<xs:element name="enabled" type="xs:boolean"/>
|
||||
<xs:element name="allowExternalBrowser" type="xs:boolean"/>
|
||||
<xs:element name="ncNeeded" type="xs:boolean"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
@@ -10,8 +10,6 @@ namespace Step.Database.Migrations
|
||||
|
||||
public sealed class Configuration : DbMigrationsConfiguration<DatabaseContext>
|
||||
{
|
||||
private readonly bool _pendingMigrations;
|
||||
|
||||
public Configuration()
|
||||
{
|
||||
AutomaticMigrationsEnabled = true;
|
||||
|
||||
@@ -11,5 +11,6 @@ namespace Step.Model.ConfigModels
|
||||
public string Name { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
public bool AllowExternalBrowser { get; set; }
|
||||
public bool NcNeeded { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace Step.Model.DTOModels
|
||||
public DTOAlarmsModel IntersectModels(DTOAlarmsModel newAlarms)
|
||||
{
|
||||
DTOAlarmsModel result = new DTOAlarmsModel();
|
||||
// Get common data
|
||||
// Get common data from Obj1 and Obj2
|
||||
result.NcAlarms = NcAlarms.Where(x => newAlarms.NcAlarms.Contains(x as GenericAlarmModel)).ToList();
|
||||
// Concat common data + new data
|
||||
result.NcAlarms = result.NcAlarms.Concat(
|
||||
@@ -82,7 +82,9 @@ namespace Step.Model.DTOModels
|
||||
|
||||
public class GenericAlarmModel
|
||||
{
|
||||
public string alarmMessage;
|
||||
public uint id;
|
||||
public string message;
|
||||
public bool isWarning;
|
||||
public DateTime dateTime;
|
||||
|
||||
public override bool Equals(object obj)
|
||||
@@ -92,7 +94,7 @@ namespace Step.Model.DTOModels
|
||||
if (item == null)
|
||||
return false;
|
||||
|
||||
if (item.alarmMessage == alarmMessage)
|
||||
if (item.id == id)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
@@ -101,8 +103,10 @@ namespace Step.Model.DTOModels
|
||||
|
||||
public class ProcessAlarmModel
|
||||
{
|
||||
public string alarmMessage;
|
||||
public ushort process;
|
||||
public uint id;
|
||||
public string message;
|
||||
public int process;
|
||||
public bool isWarning;
|
||||
public DateTime dateTime;
|
||||
|
||||
public override bool Equals(object obj)
|
||||
@@ -112,40 +116,10 @@ namespace Step.Model.DTOModels
|
||||
if (item == null)
|
||||
return false;
|
||||
|
||||
if (item.process == process && item.alarmMessage == alarmMessage )
|
||||
if (item.process == process && item.id == id )
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
class DTOAlarmsModelComparer : IEqualityComparer<DTOAlarmsModel>
|
||||
{
|
||||
public bool Equals(DTOAlarmsModel x, DTOAlarmsModel y)
|
||||
{
|
||||
if (x == null)
|
||||
return false;
|
||||
|
||||
if (x.NcAlarms.Count != y.NcAlarms.Count || x.PlcAlarms.Count != y.PlcAlarms.Count || x.ProcessAlarms.Count != y.ProcessAlarms.Count)
|
||||
return false;
|
||||
|
||||
bool isEqual = x.NcAlarms.All(y.NcAlarms.Contains);
|
||||
if (!isEqual)
|
||||
return false;
|
||||
|
||||
isEqual = x.PlcAlarms.All(y.PlcAlarms.Contains);
|
||||
if (!isEqual)
|
||||
return false;
|
||||
|
||||
isEqual = x.ProcessAlarms.All(y.ProcessAlarms.Contains);
|
||||
if (!isEqual)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public int GetHashCode(DTOAlarmsModel obj)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using static CMS_CORE_Library.DataStructures;
|
||||
|
||||
namespace Step.Model.DTOModels
|
||||
{
|
||||
public class DTOPowerOnData
|
||||
{
|
||||
public PrePowerOnModel prePowerOn;
|
||||
|
||||
public DTOPowerOnData()
|
||||
{
|
||||
prePowerOn = new PrePowerOnModel();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -79,7 +79,6 @@
|
||||
<LastGenOutput>DTOLanguageModel.cs.d.ts</LastGenOutput>
|
||||
</Compile>
|
||||
<Compile Include="DTOModels\DTONcGenericDataModel.cs" />
|
||||
<Compile Include="DTOModels\DTOPowerOnData.cs" />
|
||||
<Compile Include="DTOModels\DTORoleModel.cs" />
|
||||
<Compile Include="DTOModels\DTOStartupConfigurationModel.cs" />
|
||||
<Compile Include="DTOModels\DTOUserModel.cs" />
|
||||
@@ -114,7 +113,6 @@
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>
|
||||
</PostBuildEvent>
|
||||
<PostBuildEvent>XCOPY $(ProjectDir)*.d.ts $(SolutionDir)Step\wwwroot\src\@types /C /Y /O</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
+19
-14
@@ -115,7 +115,7 @@ namespace Step.NC
|
||||
public CmsError GetNcAlarms(out DTOAlarmsModel alarms)
|
||||
{
|
||||
alarms = new DTOAlarmsModel();
|
||||
List<string> tmpAlarms = new List<string>();
|
||||
List<AlarmModel> tmpAlarms = new List<AlarmModel>();
|
||||
|
||||
// Read NC active alarms
|
||||
CmsError cmsError = numericalControl.NC_RActiveAlarms(ref tmpAlarms);
|
||||
@@ -123,11 +123,13 @@ namespace Step.NC
|
||||
return cmsError;
|
||||
|
||||
// Create response list from strings
|
||||
foreach (string alarmMessage in tmpAlarms)
|
||||
foreach (AlarmModel ncAlarm in tmpAlarms)
|
||||
{
|
||||
alarms.NcAlarms.Add(new GenericAlarmModel()
|
||||
{
|
||||
alarmMessage = alarmMessage,
|
||||
id = ncAlarm.id,
|
||||
message = ncAlarm.message,
|
||||
isWarning = ncAlarm.isWarning,
|
||||
dateTime = DateTime.Now
|
||||
});
|
||||
}
|
||||
@@ -144,12 +146,14 @@ namespace Step.NC
|
||||
// Get process active alarms
|
||||
numericalControl.PROC_RActiveAlarms(i, ref tmpAlarms);
|
||||
// Create response list from strings
|
||||
foreach (string alarmMessage in tmpAlarms)
|
||||
foreach (AlarmModel processAlarm in tmpAlarms)
|
||||
{
|
||||
alarms.ProcessAlarms.Add(new ProcessAlarmModel()
|
||||
{
|
||||
alarmMessage = alarmMessage,
|
||||
process = i,
|
||||
id = processAlarm.id,
|
||||
message = processAlarm.message,
|
||||
process = processAlarm.process,
|
||||
isWarning = processAlarm.isWarning,
|
||||
dateTime = DateTime.Now
|
||||
});
|
||||
}
|
||||
@@ -160,12 +164,14 @@ namespace Step.NC
|
||||
if (cmsError.errorCode != 0)
|
||||
return cmsError;
|
||||
|
||||
// Formatting response list from strings
|
||||
foreach (string alarmMessage in tmpAlarms)
|
||||
// Formatting response list from library alarm model
|
||||
foreach (AlarmModel plcAlarm in tmpAlarms)
|
||||
{
|
||||
alarms.PlcAlarms.Add(new GenericAlarmModel()
|
||||
alarms.NcAlarms.Add(new GenericAlarmModel()
|
||||
{
|
||||
alarmMessage = alarmMessage,
|
||||
id = plcAlarm.id,
|
||||
message = plcAlarm.message,
|
||||
isWarning = plcAlarm.isWarning,
|
||||
dateTime = DateTime.Now
|
||||
});
|
||||
}
|
||||
@@ -199,7 +205,6 @@ namespace Step.NC
|
||||
|
||||
public CmsError GetAxesPositionsByProcess(ushort processNum, out DTOAxesModel axes)
|
||||
{
|
||||
|
||||
axes = new DTOAxesModel();
|
||||
|
||||
CmsError cmsError = numericalControl.AXES_RInterpPosition(processNum, ref axes.interpolated);
|
||||
@@ -223,10 +228,10 @@ namespace Step.NC
|
||||
return cmsError;
|
||||
}
|
||||
|
||||
public CmsError GetPowerOnData(out DTOPowerOnData powerOnData)
|
||||
public CmsError GetPowerOnData(out PreAndPostPowerOnModel powerOnData)
|
||||
{
|
||||
powerOnData = new DTOPowerOnData();
|
||||
CmsError cmsError = numericalControl.Nc_RWPrePowerOnFunctions(R, ref powerOnData.prePowerOn);
|
||||
powerOnData = new PreAndPostPowerOnModel();
|
||||
CmsError cmsError = numericalControl.Nc_RPowerOnData(ref powerOnData);
|
||||
|
||||
return cmsError;
|
||||
}
|
||||
|
||||
@@ -42,8 +42,9 @@ public static class ThreadsFunctions
|
||||
libraryError = ncHandler.GetNcAlarms(out DTOAlarmsModel alarms);
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
// Send through signalR
|
||||
MessageServices.Current.Publish(SEND_ALARMS, null, alarms);
|
||||
else
|
||||
// Send through signalR
|
||||
MessageServices.Current.Publish(SEND_ALARMS, null, alarms);
|
||||
}
|
||||
sw.Stop();
|
||||
|
||||
@@ -55,7 +56,7 @@ public static class ThreadsFunctions
|
||||
Thread.Sleep(200);
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException ex)
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
ncHandler.Dispose();
|
||||
}
|
||||
@@ -94,7 +95,7 @@ public static class ThreadsFunctions
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException ex)
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
ncHandler.Dispose();
|
||||
}
|
||||
@@ -121,8 +122,9 @@ public static class ThreadsFunctions
|
||||
libraryError = ncHandler.GetAxesPositions(out List<DTOAxesModel> genericData);
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
// Send through signalR
|
||||
MessageServices.Current.Publish(SEND_AXES, null, genericData);
|
||||
else
|
||||
// Send through signalR
|
||||
MessageServices.Current.Publish(SEND_AXES, null, genericData);
|
||||
}
|
||||
sw.Stop();
|
||||
|
||||
@@ -133,7 +135,7 @@ public static class ThreadsFunctions
|
||||
Thread.Sleep(200);
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException ex)
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
ncHandler.Dispose();
|
||||
}
|
||||
@@ -157,11 +159,12 @@ public static class ThreadsFunctions
|
||||
if (ncHandler.numericalControl.NC_IsConnected())
|
||||
{
|
||||
// Get Data from NC
|
||||
libraryError = ncHandler.GetPowerOnData(out DTOPowerOnData powerOnData);
|
||||
libraryError = ncHandler.GetPowerOnData(out PreAndPostPowerOnModel powerOnData);
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
// Send through signalR
|
||||
MessageServices.Current.Publish(SEND_POWER_ON_DATA, null, powerOnData);
|
||||
else
|
||||
// Send through signalR
|
||||
MessageServices.Current.Publish(SEND_POWER_ON_DATA, null, powerOnData);
|
||||
}
|
||||
sw.Stop();
|
||||
|
||||
@@ -173,7 +176,7 @@ public static class ThreadsFunctions
|
||||
Thread.Sleep(400);
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException ex)
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
ncHandler.Dispose();
|
||||
}
|
||||
@@ -196,16 +199,14 @@ public static class ThreadsFunctions
|
||||
// Try reconnection
|
||||
CmsError cmsError = ncHandler.Connect();
|
||||
if (cmsError.errorCode == CMS_ERROR_CODES.SIEMENS_ENVIRONMENT_NOT_FOUND || cmsError.errorCode == CMS_ERROR_CODES.SIEMENS_HMI_NOT_RUNNING)
|
||||
{
|
||||
ManageLibraryError(cmsError);
|
||||
}
|
||||
else if (cmsError.errorCode != CMS_ERROR_CODES.OK)
|
||||
ncHandler.Dispose();
|
||||
|
||||
Thread.Sleep(1000);
|
||||
|
||||
// Send status to UI
|
||||
MessageServices.Current.Publish(MVVM_NC_STATUS, null, ncHandler.numericalControl.NC_IsConnected());
|
||||
MessageServices.Current.Publish(SEND_NC_STATUS, null, ncHandler.numericalControl.NC_IsConnected());
|
||||
}
|
||||
// Start/Restart NC threads
|
||||
ThreadsHandler.StartWorkers();
|
||||
@@ -292,7 +293,7 @@ public static class ThreadsFunctions
|
||||
ReadPowerOnTimes = 0;
|
||||
}
|
||||
|
||||
MessageServices.Current.Publish(MVVM_NC_THREADS, null, ThreadsHandler.RunningThreadStatus);
|
||||
MessageServices.Current.Publish(SEND_THREADS_STATUS, null, ThreadsHandler.RunningThreadStatus);
|
||||
|
||||
Thread.Sleep(2000);
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ namespace Step.Core
|
||||
};
|
||||
private volatile static List<Thread> RunningThreadsList = new List<Thread>();
|
||||
internal volatile static Dictionary<String, String> RunningThreadStatus = new Dictionary<String, String>();
|
||||
private static Thread StatThread;
|
||||
|
||||
public static void Start()
|
||||
{
|
||||
@@ -38,8 +37,8 @@ namespace Step.Core
|
||||
|
||||
public static void StartWorkers()
|
||||
{
|
||||
lock (RunningThreadStatus)
|
||||
RunningThreadStatus.Clear();
|
||||
|
||||
RunningThreadStatus.Clear();
|
||||
|
||||
// For each function run in the list a thread
|
||||
ThreadFunctionsList.ForEach(threadFunction =>
|
||||
@@ -53,12 +52,11 @@ namespace Step.Core
|
||||
lock (RunningThreadsList)
|
||||
RunningThreadsList.Add(t);
|
||||
|
||||
lock (RunningThreadStatus)
|
||||
if (!RunningThreadStatus.ContainsKey(threadFunction.Method.Name))
|
||||
RunningThreadStatus.Add(threadFunction.Method.Name, "---");
|
||||
|
||||
RunningThreadStatus.Add(threadFunction.Method.Name, "---");
|
||||
});
|
||||
|
||||
MessageServices.Current.Publish(MVVM_NC_THREADS, null, RunningThreadStatus);
|
||||
MessageServices.Current.Publish(SEND_THREADS_STATUS, null, RunningThreadStatus);
|
||||
}
|
||||
|
||||
public static void Stop()
|
||||
@@ -75,12 +73,9 @@ namespace Step.Core
|
||||
lock (RunningThreadsList)
|
||||
RunningThreadsList.Clear();
|
||||
|
||||
lock (RunningThreadStatus)
|
||||
{
|
||||
RunningThreadStatus.Clear();
|
||||
RunningThreadStatus.Add("TryNcConnection", "---");
|
||||
}
|
||||
MessageServices.Current.Publish(MVVM_NC_THREADS, null, RunningThreadStatus);
|
||||
RunningThreadStatus.Clear();
|
||||
RunningThreadStatus.Add("TryNcConnection", "---");
|
||||
MessageServices.Current.Publish(SEND_THREADS_STATUS, null, RunningThreadStatus);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Generated
-1
@@ -482,7 +482,6 @@ namespace Step.UI
|
||||
this.metroLabel1.TabIndex = 34;
|
||||
this.metroLabel1.Text = "Vendor:";
|
||||
this.metroLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
this.metroLabel1.Click += new System.EventHandler(this.metroLabel1_Click);
|
||||
//
|
||||
// ThreadsInfo
|
||||
//
|
||||
|
||||
@@ -80,7 +80,7 @@ namespace Step.UI
|
||||
private void StopServerButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Send message to listeners and close server
|
||||
MessageServices.Current.Publish(MVVM_STOP_SERVER);
|
||||
MessageServices.Current.Publish(SEND_STOP_SERVER);
|
||||
}
|
||||
|
||||
private void NotifyIcon_Click(object sender, EventArgs e)
|
||||
@@ -123,7 +123,7 @@ namespace Step.UI
|
||||
|
||||
private void InitializeMessageListeners()
|
||||
{
|
||||
MessageServices.Current.Subscribe(MVVM_SEND_MESSAGE, (a, b) =>
|
||||
MessageServices.Current.Subscribe(SEND_MESSAGE, (a, b) =>
|
||||
{
|
||||
// Cast object to ErrorMessageModel
|
||||
ErrorMessageModel message = (ErrorMessageModel)a;
|
||||
@@ -133,7 +133,7 @@ namespace Step.UI
|
||||
StepNotifyIcon.ShowBalloonTip(1000, message.Title, message.Message, (ToolTipIcon)message.ErrorLevel);
|
||||
});
|
||||
|
||||
MessageServices.Current.Subscribe(MVVM_NC_STATUS, (a, b) =>
|
||||
MessageServices.Current.Subscribe(SEND_NC_STATUS, (a, b) =>
|
||||
{
|
||||
bool newNcStatus = (bool)a;
|
||||
|
||||
@@ -186,7 +186,7 @@ namespace Step.UI
|
||||
|
||||
});
|
||||
|
||||
MessageServices.Current.Subscribe(MVVM_NC_THREADS, (a, b) =>
|
||||
MessageServices.Current.Subscribe(SEND_THREADS_STATUS, (a, b) =>
|
||||
{
|
||||
//Other type
|
||||
this.Invoke((MethodInvoker)delegate () {
|
||||
@@ -225,10 +225,5 @@ namespace Step.UI
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void metroLabel1_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,13 +61,13 @@ namespace Step.Utils
|
||||
public static string LANGUAGE_PACK_DIRECTORY = BASE_PATH + "\\languages\\";
|
||||
public static string LANGUAGE_SCHEMA_PATH = BASE_PATH + "\\LanguageValidator.xsd";
|
||||
|
||||
// MVVM Messages names
|
||||
public const string MVVM_STOP_SERVER = "STOP_SERVER";
|
||||
public const string MVVM_SEND_MESSAGE = "SEND_MESSAGE";
|
||||
public const string MVVM_NC_STATUS = "NC_STATUS";
|
||||
public const string MVVM_NC_THREADS = "THREAD_STATUS";
|
||||
// MVVM Messages to server UI
|
||||
public const string SEND_STOP_SERVER = "STOP_SERVER";
|
||||
public const string SEND_MESSAGE = "SEND_MESSAGE";
|
||||
public const string SEND_NC_STATUS = "NC_STATUS";
|
||||
public const string SEND_THREADS_STATUS = "THREAD_STATUS";
|
||||
|
||||
// MVVM Messages tasks names
|
||||
// MVVM Messages to signalR tasks
|
||||
public const string SEND_ALARMS = "SEND_ALARMS";
|
||||
public const string SEND_POWER_ON_DATA = "SEND_POWER_ON_DATA";
|
||||
public const string SEND_GENERIC_DATA = "SEND_GENERIC_DATA";
|
||||
|
||||
@@ -102,7 +102,7 @@ namespace Step.Utils
|
||||
else
|
||||
{
|
||||
// Notify user
|
||||
MessageServices.Current.Publish(MVVM_SEND_MESSAGE, null, error);
|
||||
MessageServices.Current.Publish(SEND_MESSAGE, null, error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System.Collections.Generic;
|
||||
using Step.Listeners.Database;
|
||||
using Step.Listeners.SignalR;
|
||||
using Step.Model.DTOModels;
|
||||
using TeamDev.SDK.MVVM;
|
||||
using static Step.Utils.Constants;
|
||||
|
||||
@@ -24,23 +25,28 @@ namespace Step.Listeners
|
||||
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_ALARMS, async (a, b) =>
|
||||
{
|
||||
SignalRListener.SendAlarmsToClient(a);
|
||||
SignalRListener.SendAlarmsToClient(a as DTOAlarmsModel);
|
||||
}));
|
||||
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_GENERIC_DATA, async (a, b) =>
|
||||
{
|
||||
SignalRListener.SendNcInfoToClient(a);
|
||||
SignalRListener.SendNcInfoToClient(a as DTONcGenericDataModel);
|
||||
}));
|
||||
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_AXES, async (a, b) =>
|
||||
{
|
||||
SignalRListener.SendAxesToClient(a);
|
||||
SignalRListener.SendAxesToClient(a as DTOAxesModel);
|
||||
}));
|
||||
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_POWER_ON_DATA, async (a, b) =>
|
||||
{
|
||||
SignalRListener.SendPowerOnDataToClient(a);
|
||||
}));
|
||||
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_NC_STATUS, async (a, b) =>
|
||||
{
|
||||
SignalRListener.SendNcNetworkStatus(a);
|
||||
}));
|
||||
}
|
||||
|
||||
public static void Stop()
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
using Microsoft.AspNet.SignalR;
|
||||
using Microsoft.AspNet.SignalR;
|
||||
using Step.Controllers.SignalR;
|
||||
using Step.Model.DTOModels;
|
||||
using TeamDev.SDK.MVVM;
|
||||
|
||||
namespace Step.Listeners.SignalR
|
||||
{
|
||||
@@ -13,25 +9,25 @@ namespace Step.Listeners.SignalR
|
||||
private static DTOAlarmsModel alarms = new DTOAlarmsModel();
|
||||
private static DTOAxesModel axes = new DTOAxesModel();
|
||||
|
||||
public static void SendNcInfoToClient(object taskName)
|
||||
public static void SendNcInfoToClient(DTONcGenericDataModel taskName)
|
||||
{
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.Group("ncData").machineInfo(taskName);
|
||||
}
|
||||
|
||||
public static void SendAlarmsToClient(object newAlarmsData)
|
||||
public static void SendAlarmsToClient(DTOAlarmsModel newAlarmsData)
|
||||
{
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
|
||||
//if (!alarms.Equals(newAlarmsData))
|
||||
//{
|
||||
// Intersect old alarms data with new data
|
||||
alarms = alarms.IntersectModels(newAlarmsData as DTOAlarmsModel);
|
||||
context.Clients.Group("ncData").alarms(alarms);
|
||||
alarms = alarms.IntersectModels(newAlarmsData as DTOAlarmsModel);
|
||||
context.Clients.Group("ncData").alarms(alarms);
|
||||
//}
|
||||
}
|
||||
|
||||
public static void SendAxesToClient(object newAxesData)
|
||||
public static void SendAxesToClient(DTOAxesModel newAxesData)
|
||||
{
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.Group("ncData").axes(newAxesData);
|
||||
@@ -42,5 +38,14 @@ namespace Step.Listeners.SignalR
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.Group("ncData").powerOn(newAxesData);
|
||||
}
|
||||
|
||||
public static void SendNcNetworkStatus(object ncStatus)
|
||||
{
|
||||
if ((bool)ncStatus == false)
|
||||
{
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.Group("ncData").ncNetworkStatus(new { connected = false});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ namespace Step
|
||||
string configuredUri = "http://*:" + ServerStartupConfig.ServerPort.ToString();
|
||||
|
||||
// Register listener to "close application" messages
|
||||
MessageServices.Current.Subscribe(MVVM_STOP_SERVER, (a, b) =>
|
||||
MessageServices.Current.Subscribe(SEND_STOP_SERVER, (a, b) =>
|
||||
{
|
||||
StopRequest.Set();
|
||||
});
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 52 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 32 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
@@ -17,6 +17,7 @@
|
||||
height: 768px;
|
||||
width: 1024px;
|
||||
border: none;
|
||||
background-image: url('../images/Osai_Placeholder.JPG')
|
||||
}
|
||||
|
||||
#nc-softkeys-container{
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<alarm-list></alarm-list>
|
||||
<div id="back-view">
|
||||
<div id="nc-hmi">
|
||||
<img id="nc-hmi-img" :src="HMIsrc" />
|
||||
<div id="nc-hmi-img"> </div>
|
||||
</div >
|
||||
<div id="nc-softkeys-container"><div id="nc-softkeys-header"> </div></div>
|
||||
</div>
|
||||
@@ -71,14 +71,7 @@ export default {
|
||||
this.$forceUpdate();
|
||||
});
|
||||
|
||||
ms.subscribeToChannel("HMI-start-render", args => {
|
||||
let NEWsrc = cmsClient.getScreenBase64(true);
|
||||
if(this.HMIsrc != NEWsrc)
|
||||
this.HMIsrc = NEWsrc;
|
||||
else
|
||||
Factory.Get(MessageService).publishToChannel("HMI-end-render");
|
||||
});
|
||||
|
||||
|
||||
let _this = this;
|
||||
Factory.Get(LoginService)
|
||||
.getUserInfo()
|
||||
@@ -124,9 +117,6 @@ export default {
|
||||
Factory.Get(MessageService).publishToChannel("HMI-hide");
|
||||
}
|
||||
},
|
||||
HMIsrc: function() {
|
||||
this.$nextTick(() => {Factory.Get(MessageService).publishToChannel("HMI-end-render")});
|
||||
},
|
||||
loadingOperations: function(n, o) {
|
||||
if (o == 0 && n > 0) {
|
||||
iziToast.show({
|
||||
@@ -187,8 +177,7 @@ export default {
|
||||
return {
|
||||
state: this.$store.state,
|
||||
applyBlur: false,
|
||||
loadingOperations: 0,
|
||||
HMIsrc: ""
|
||||
loadingOperations: 0
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
@@ -149,10 +149,10 @@ if (typeof cmsClient != "undefined") {
|
||||
});
|
||||
|
||||
|
||||
Factory.Get(MessageService).subscribeToChannel("HMI-end-render", args => {
|
||||
/* Factory.Get(MessageService).subscribeToChannel("HMI-end-render", args => {
|
||||
clearTimeout(RerenderInterval);
|
||||
RerenderInterval = setTimeout(ElaborateHMIStatus, 15);
|
||||
});
|
||||
}); */
|
||||
|
||||
}
|
||||
|
||||
@@ -185,19 +185,23 @@ function stopDrag(){
|
||||
* */
|
||||
function HideHmi() {
|
||||
HMIvisible = false;
|
||||
Factory.Get(MessageService).publishToChannel("HMI-start-render");
|
||||
ElaborateHMIStatus();
|
||||
//Factory.Get(MessageService).publishToChannel("HMI-start-render");
|
||||
}
|
||||
function showAlarms() {
|
||||
HMIAlarmsVisible = true;
|
||||
Factory.Get(MessageService).publishToChannel("HMI-start-render");
|
||||
ElaborateHMIStatus();
|
||||
//Factory.Get(MessageService).publishToChannel("HMI-start-render");
|
||||
}
|
||||
function showModal() {
|
||||
HMIModalsVisible = true;
|
||||
Factory.Get(MessageService).publishToChannel("HMI-start-render");
|
||||
ElaborateHMIStatus();
|
||||
//Factory.Get(MessageService).publishToChannel("HMI-start-render");
|
||||
}
|
||||
function startDrag() {
|
||||
HMIDragging = true;
|
||||
Factory.Get(MessageService).publishToChannel("HMI-start-render");
|
||||
ElaborateHMIStatus();
|
||||
//Factory.Get(MessageService).publishToChannel("HMI-start-render");
|
||||
}
|
||||
|
||||
//Private function for elaborate status
|
||||
|
||||
@@ -25,9 +25,7 @@ export class Hub {
|
||||
|
||||
// replace all alarms with the current ones
|
||||
|
||||
let tempList = alarms.NcAlarms
|
||||
.concat(alarms.PlcAlarms)
|
||||
.concat(alarms.ProcessAlarms);
|
||||
let tempList = alarms.NcAlarms.concat(alarms.PlcAlarms).concat(alarms.ProcessAlarms);
|
||||
|
||||
let _warnings = tempList.filter(v => v.isWarning);
|
||||
let _alarms = tempList.filter(v => !v.isWarning);
|
||||
|
||||
Reference in New Issue
Block a user