You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
3.9 KiB
C#

namespace OPCDA
{
using System;
public class OPCQuality
{
public limitBits LimitField;
public qualityBits QualityField;
public byte VendorField;
public OPCQuality(qualityBits qstat)
{
this.QualityField = qualityBits.good;
this.LimitField = limitBits.none;
this.VendorField = 0;
this.QualityField = qstat;
}
public OPCQuality(short qVal)
{
this.QualityField = qualityBits.good;
this.LimitField = limitBits.none;
this.VendorField = 0;
this.QualityField = ((qualityBits) qVal) & (qualityBits.goodLocalOverride | qualityBits.badWaitingForInitialData | qualityBits.badConfigurationError);
this.LimitField = ((limitBits) qVal) & limitBits.constant;
this.VendorField = (byte) (this.VendorField >> 8);
}
public short GetCode()
{
ushort num = 0;
num = (ushort) (num | ((ushort) this.QualityField));
num = (ushort) (num | ((ushort) this.LimitField));
num = (ushort) (num | ((ushort) (this.VendorField << 8)));
if (num > 0x7fff)
{
return (short) -(0x10000 - num);
}
return (short) num;
}
public static qualityBits ParseQualityBits(string qs)
{
qs = qs.ToLower();
if (qualityBits.good.ToString() == qs)
{
return qualityBits.good;
}
if (qualityBits.goodLocalOverride.ToString() == qs)
{
return qualityBits.goodLocalOverride;
}
if (qualityBits.bad.ToString() != qs)
{
if (qualityBits.badConfigurationError.ToString() == qs)
{
return qualityBits.badConfigurationError;
}
if (qualityBits.badNotConnected.ToString() == qs)
{
return qualityBits.badNotConnected;
}
if (qualityBits.badDeviceFailure.ToString() == qs)
{
return qualityBits.badDeviceFailure;
}
if (qualityBits.badSensorFailure.ToString() == qs)
{
return qualityBits.badSensorFailure;
}
if (qualityBits.badLastKnownValue.ToString() == qs)
{
return qualityBits.badLastKnownValue;
}
if (qualityBits.badCommFailure.ToString() == qs)
{
return qualityBits.badCommFailure;
}
if (qualityBits.badOutOfService.ToString() == qs)
{
return qualityBits.badOutOfService;
}
if (qualityBits.badWaitingForInitialData.ToString() == qs)
{
return qualityBits.badWaitingForInitialData;
}
if (qualityBits.uncertain.ToString() == qs)
{
return qualityBits.uncertain;
}
if (qualityBits.uncertainLastUsableValue.ToString() == qs)
{
return qualityBits.uncertainLastUsableValue;
}
if (qualityBits.uncertainSensorNotAccurate.ToString() == qs)
{
return qualityBits.uncertainSensorNotAccurate;
}
if (qualityBits.uncertainEUExceeded.ToString() == qs)
{
return qualityBits.uncertainEUExceeded;
}
if (qualityBits.uncertainSubNormal.ToString() == qs)
{
return qualityBits.uncertainSubNormal;
}
}
return qualityBits.bad;
}
}
}