Files
6150-HMI/CowainHmi/PlcTagColumn.cs
2026-01-15 15:06:36 +08:00

84 lines
2.7 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace CowainHmi
{
public class PlcTagColumn : INotifyPropertyChanged
{
private string varValue = "";
private string address = "DB1.0";
public PlcTagColumn()
{
}
public PlcTagColumn(string varName, string varDesc)
{
VarName = varName;
VarDesc = varDesc;
}
public PlcTagColumn(string text)
{
string[] array = Regex.Split(text, "<,>", RegexOptions.IgnoreCase);
if (array.Length == 8)
{
int val = 0;
VarName = array[0];
VarDesc = array[1];
PLC = int.TryParse(array[2], out val) ? val : 0;
Address = array[3];
DatType = Enum.TryParse<.DatType>(array[4], out .DatType datType) ? datType : .DatType.INT16;
DecimalPlaces = int.TryParse(array[5], out val) ? val : 0;
StringLength = int.TryParse(array[6], out val) ? val : 0;
IsReadOnly = bool.TryParse(array[7], out bool readOnly) ? readOnly : false;
}
}
public string VarName { get; set; }
public string VarDesc { get; set; }
public int PLC { get; set; } = 0;
public string Address
{
get => address;
set
{
if (address != value)
{
address = value;
OnPropertyChanged(nameof(Address));
}
}
}
public .DatType DatType { get; set; } = .DatType.INT16;
public int DecimalPlaces { get; set; } = 0;
public int StringLength { get; set; } = 10;
public bool IsReadOnly { get; set; }
public string VarValue
{
get => varValue;
set
{
if (varValue != value)
{
varValue = value;
OnPropertyChanged(nameof(VarValue));
}
}
}
public override string ToString()
{
return $"{VarName}<,>{VarDesc}<,>{PLC}<,>{Address}<,>{DatType.ToString()}<,>{DecimalPlaces}<,>{StringLength}<,>{IsReadOnly.ToString()}";
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}