Files
cms_thermo_active/Step.Tasks/ThreadsFunctions.cs
T
2017-12-14 17:35:22 +01:00

83 lines
2.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
using CMS_CORE;
using CMS_CORE.Fanuc;
using Step.Model.DTOModels;
using TeamDev.SDK.MVVM;
namespace Step.Core
{
public static class ThreadsFunctions
{
public static bool ReadAlarmsAsync(Nc numericalControl)
{
AlarmsModel alarms = new AlarmsModel();
List<string> tmpAlarms = new List<string>();
if (!numericalControl.NC_IsConnected())
numericalControl.NC_Connect();
while (true)
{
if (numericalControl.NC_IsConnected())
{
// Read NC active alarms
numericalControl.NC_RActiveAlarms(ref tmpAlarms);
// Create response list from strings
foreach (string alarmMessage in tmpAlarms)
{
alarms.NcAlarms.Add(new GenericAlarmModel()
{
alarmMessage = alarmMessage,
id = 1
});
}
// Get NC max process number
ushort maxProcNumber = 0;
numericalControl.NC_RProcessesNum(ref maxProcNumber);
// For each process
for (ushort i = 1; i <= maxProcNumber; i++)
{
// Get process active alarms
numericalControl.PROC_RActiveAlarms(i, ref tmpAlarms);
// Create response list from strings
foreach (string alarmMessage in tmpAlarms)
{
alarms.ProcessAlarms.Add(new ProcessAlarmModel()
{
alarmMessage = alarmMessage,
id = 1,
process = i
});
}
}
// Read PLC Active Messages
numericalControl.PLC_RActiveMessages(ref tmpAlarms);
// Formatting response list from strings
foreach (string alarmMessage in tmpAlarms)
{
alarms.PlcAlarms.Add(new GenericAlarmModel()
{
alarmMessage = alarmMessage,
id = 1
});
}
MessageServices.Current.Publish("testsignal", null, alarms);
Thread.Sleep(200);
alarms.Clear();
}
}
return true;
}
}
}