94 lines
3.4 KiB
C#
94 lines
3.4 KiB
C#
using Avalonia.Controls;
|
|
using Avalonia.Threading;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net.NetworkInformation;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using static DaireApplication.Views.MainWindow;
|
|
|
|
namespace DaireApplication.ViewModels
|
|
{
|
|
public class Error
|
|
{
|
|
public enum GridCondition
|
|
{
|
|
GridFrequencyHigh,
|
|
GridFrequencyLow,
|
|
GridVACHigh,
|
|
GridVACLow,
|
|
NoExternalPower,
|
|
MissingPhase,
|
|
PhaseSequence,
|
|
LoadDisconnection,
|
|
MotorDisconnection,
|
|
NoBoardCom,
|
|
NoInternetAccess,
|
|
ComPort1,
|
|
ComPort2,
|
|
HiCurrNeut,
|
|
HiCurrMot1,
|
|
HiCurrMot2,
|
|
}
|
|
public DateTime errorDate { get; set; }
|
|
public GridCondition Condition { get; set; }
|
|
public bool isShowen { get; set; } = false;
|
|
public bool isDeleted { get; set; } = false;
|
|
|
|
public string GetDisplayNames(GridCondition condition)
|
|
{
|
|
return condition switch
|
|
{
|
|
GridCondition.GridFrequencyHigh => "Grid Frequency High",
|
|
GridCondition.GridFrequencyLow => "Grid Frequency Low",
|
|
GridCondition.GridVACHigh => "Grid VAC High",
|
|
GridCondition.GridVACLow => "Grid VAC Low",
|
|
GridCondition.NoExternalPower => "No External Power",
|
|
GridCondition.MissingPhase => "Missing Phase",
|
|
GridCondition.PhaseSequence => "Phase Sequence",
|
|
GridCondition.LoadDisconnection => "Load Disconnection",
|
|
GridCondition.MotorDisconnection => "Motor Disconnection",
|
|
GridCondition.NoBoardCom => "Communication Timeout",
|
|
GridCondition.NoInternetAccess => "No InternetAccess",
|
|
GridCondition.ComPort1 => "Com Port1",
|
|
GridCondition.ComPort2 => "Com Port2",
|
|
GridCondition.HiCurrNeut=> "Hi Curr Neut",
|
|
GridCondition.HiCurrMot1=> "Hi Curr Mot1",
|
|
GridCondition.HiCurrMot2=> "Hi Curr Mot2",
|
|
_ => string.Empty
|
|
};
|
|
|
|
|
|
}
|
|
public static bool IsInternetAvailable()
|
|
{
|
|
try
|
|
{
|
|
var networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
|
|
|
|
foreach (var networkInterface in networkInterfaces)
|
|
{
|
|
if (networkInterface.OperationalStatus == OperationalStatus.Up)
|
|
{
|
|
using (var ping = new Ping())
|
|
{
|
|
var reply = ping.Send("8.8.8.8", 3000); // Pinging Google DNS server with a timeout of 3000ms
|
|
if (reply != null && reply.Status == IPStatus.Success)
|
|
{
|
|
return true; // Internet is available
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
return false; // Return false if there is any exception (e.g., no network interface found, or errors during checking)
|
|
}
|
|
|
|
return false; // Return false if no network interfaces are available or no successful ping
|
|
}
|
|
}
|
|
}
|