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.

953 lines
46 KiB
C#

namespace OPCDA.NET
{
using OPC;
using OPCDA;
using System;
using System.Collections;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Windows.Forms;
public class OpcDataBind
{
private OpcServer opcSrv;
private Form ParentForm;
private int refreshCancelID;
internal RefreshGroup refreshGrp;
private int refreshTransactionID;
internal Subscriptions subscriptions;
private int updRate;
private DataBindCallbackUserHandler userCallbackHandler;
private DataBindCallbackErrorEventHandler userErrHandler;
public OpcDataBind(Form parent, string serverID)
{
this.opcSrv = null;
this.refreshGrp = null;
this.updRate = 500;
this.refreshTransactionID = 0;
this.ParentForm = parent;
this.Connect(serverID);
this.Start();
}
public OpcDataBind(Form parent, OpcServer srv, int rate)
{
this.opcSrv = null;
this.refreshGrp = null;
this.updRate = 500;
this.refreshTransactionID = 0;
this.ParentForm = parent;
this.opcSrv = srv;
this.updRate = rate;
this.Start();
}
public OpcDataBind(Form parent, string serverID, int rate)
{
this.opcSrv = null;
this.refreshGrp = null;
this.updRate = 500;
this.refreshTransactionID = 0;
this.ParentForm = parent;
this.updRate = rate;
this.Connect(serverID);
this.Start();
}
public string ArrayToMultiLineString(Subscription item, object val)
{
string str = "";
val.GetType().GetElementType();
foreach (object obj2 in (Array) val)
{
if (str != "")
{
str = str + "\r\n";
}
str = str + this.ValueToString(item, obj2);
}
return str;
}
public string[] ArrayToStringArray(Subscription item, object val)
{
string[] strArray = new string[((Array) val).Length];
int num = 0;
foreach (object obj2 in (Array) val)
{
strArray[num++] = this.ValueToString(item, obj2);
}
return strArray;
}
private void Connect(string id)
{
this.opcSrv = new OpcServer();
int hresultcode = this.opcSrv.Connect(id);
if (HRESULTS.Failed(hresultcode))
{
throw new OPCException(hresultcode, "Connect failed with error 0x" + hresultcode.ToString("X") + ": " + ErrorDescriptions.GetErrorDescription(hresultcode));
}
}
public void Disconnect()
{
if (this.refreshGrp != null)
{
this.refreshGrp.Dispose();
}
if (this.opcSrv != null)
{
this.opcSrv.Disconnect();
}
}
public void Dispose()
{
if (this.refreshGrp != null)
{
this.refreshGrp.Dispose();
}
}
public void HandleListViewControl(Subscription item, ListView lv)
{
object val = item.Value;
if (!val.GetType().IsArray)
{
while (lv.Items.Count < (item.controlIndex + 1))
{
lv.Items.Add("");
}
lv.Items[item.controlIndex].Text = this.ValueToString(item, val);
}
else
{
int length = ((Array) val).Length;
while (lv.Items.Count < (item.controlIndex + length))
{
lv.Items.Add("");
}
int num2 = 0;
foreach (object obj3 in (Array) val)
{
ListViewItem item2 = lv.Items[item.controlIndex + num2++];
if (item.controlIndex2 != 0)
{
goto Label_00AB;
}
item2.Text = this.ValueToString(item, obj3);
continue;
Label_0099:
item2.SubItems.Add("");
Label_00AB:
if (item2.SubItems.Count < (item.controlIndex2 + 1))
{
goto Label_0099;
}
item2.SubItems[item.controlIndex2].Text = this.ValueToString(item, obj3);
}
}
}
private void iDataChangedHandler(object sender, DataChangeEventArgs e)
{
if ((this.ParentForm != null) && this.ParentForm.InvokeRequired)
{
this.ParentForm.BeginInvoke(new DataChangeEventHandler(this.iDataChangedHandler), new object[] { sender, e });
}
else
{
if (e.transactionID == this.refreshTransactionID)
{
this.refreshTransactionID = 0;
}
for (int i = 0; i < e.sts.Length; i++)
{
try
{
Subscription item = this.subscriptions.FindHandle(e.sts[i].HandleClient);
if (item != null)
{
item.idef.OpcIRslt.DataValue = e.sts[i].DataValue;
item.idef.OpcIRslt.Error = e.sts[i].Error;
item.idef.OpcIRslt.Quality = e.sts[i].Quality;
item.idef.OpcIRslt.TimeStamp = e.sts[i].TimeStamp;
if ((this.userCallbackHandler == null) || !this.userCallbackHandler(item, this))
{
System.Type type = item.control.GetType();
if ((type == typeof(TextBox)) && ((item.controlProperty == null) || (item.controlProperty == "Text")))
{
try
{
TextBox control = (TextBox) item.control;
if (control.Multiline && e.sts[i].DataValue.GetType().IsArray)
{
control.Text = this.ArrayToMultiLineString(item, e.sts[i].DataValue);
}
else
{
control.Text = this.ValueToString(item, e.sts[i].DataValue);
}
goto Label_1125;
}
catch (Exception exception)
{
throw new Exception(exception.Message + " in TextBox callback from item " + item.ItemName, exception);
}
}
if ((type == typeof(Label)) && ((item.controlProperty == null) || (item.controlProperty == "Text")))
{
try
{
Label label = (Label) item.control;
label.Text = this.ValueToString(item, e.sts[i].DataValue);
goto Label_1125;
}
catch (Exception exception2)
{
throw new Exception(exception2.Message + " in Label callback from item " + item.ItemName, exception2);
}
}
if ((type == typeof(CheckBox)) && ((item.controlProperty == null) || (item.controlProperty == "Checked")))
{
try
{
CheckBox box2 = (CheckBox) item.control;
box2.Checked = Convert.ToBoolean(e.sts[i].DataValue);
goto Label_1125;
}
catch (Exception exception3)
{
throw new Exception(exception3.Message + " in CheckBox callback from item " + item.ItemName, exception3);
}
}
if ((type == typeof(ComboBox)) && ((item.controlProperty == null) || (item.controlProperty == "Text")))
{
try
{
ComboBox box3 = (ComboBox) item.control;
box3.Text = this.ValueToString(item, e.sts[i].DataValue);
goto Label_1125;
}
catch (Exception exception4)
{
throw new Exception(exception4.Message + " in ComboBox callback from item " + item.ItemName, exception4);
}
}
if ((type == typeof(ComboBox.ObjectCollection)) && ((item.controlProperty == null) || (item.controlProperty == "Items")))
{
try
{
ComboBox.ObjectCollection objects = (ComboBox.ObjectCollection) item.control;
object dataValue = e.sts[i].DataValue;
if (!dataValue.GetType().IsArray)
{
goto Label_041E;
}
int length = ((Array) dataValue).Length;
while (objects.Count < (item.controlIndex + length))
{
objects.Add("");
}
int num3 = 0;
foreach (object obj3 in (Array) dataValue)
{
objects[item.controlIndex + num3++] = this.ValueToString(item, obj3);
}
goto Label_1125;
Label_0411:
objects.Add("");
Label_041E:
if (objects.Count < (item.controlIndex + 1))
{
goto Label_0411;
}
objects[item.controlIndex] = this.ValueToString(item, e.sts[i].DataValue);
goto Label_1125;
}
catch (Exception exception5)
{
throw new Exception(exception5.Message + " in ComboBox callback from item " + item.ItemName, exception5);
}
}
if ((type == typeof(ComboBox)) && (item.controlProperty == "Items"))
{
try
{
ComboBox box4 = (ComboBox) item.control;
ComboBox.ObjectCollection objects2 = box4.Items;
object obj4 = e.sts[i].DataValue;
if (!obj4.GetType().IsArray)
{
goto Label_0567;
}
int num4 = ((Array) obj4).Length;
while (objects2.Count < (item.controlIndex + num4))
{
objects2.Add("");
}
int num5 = 0;
foreach (object obj5 in (Array) obj4)
{
objects2[item.controlIndex + num5++] = this.ValueToString(item, obj5);
}
goto Label_1125;
Label_055A:
objects2.Add("");
Label_0567:
if (objects2.Count < (item.controlIndex + 1))
{
goto Label_055A;
}
objects2[item.controlIndex] = this.ValueToString(item, e.sts[i].DataValue);
goto Label_1125;
}
catch (Exception exception6)
{
throw new Exception(exception6.Message + " in ComboBox callback from item " + item.ItemName, exception6);
}
}
if ((type == typeof(ListBox)) && ((item.controlProperty == null) || (item.controlProperty == "Items")))
{
try
{
ListBox box5 = (ListBox) item.control;
object obj6 = e.sts[i].DataValue;
if (!obj6.GetType().IsArray)
{
goto Label_06C3;
}
int num6 = ((Array) obj6).Length;
while (box5.Items.Count < (item.controlIndex + num6))
{
box5.Items.Add("");
}
int num7 = 0;
foreach (object obj7 in (Array) obj6)
{
box5.Items[item.controlIndex + num7++] = this.ValueToString(item, obj7);
}
goto Label_1125;
Label_06B1:
box5.Items.Add("");
Label_06C3:
if (box5.Items.Count < (item.controlIndex + 1))
{
goto Label_06B1;
}
box5.Items[item.controlIndex] = this.ValueToString(item, e.sts[i].DataValue);
goto Label_1125;
}
catch (Exception exception7)
{
throw new Exception(exception7.Message + " in ListBox callback from item " + item.ItemName, exception7);
}
}
if ((type == typeof(ListBox.ObjectCollection)) && ((item.controlProperty == null) || (item.controlProperty == "Items")))
{
try
{
ListBox.ObjectCollection objects3 = (ListBox.ObjectCollection) item.control;
object obj8 = e.sts[i].DataValue;
if (!obj8.GetType().IsArray)
{
goto Label_0815;
}
int num8 = ((Array) obj8).Length;
while (objects3.Count < (item.controlIndex + num8))
{
objects3.Add("");
}
int num9 = 0;
foreach (object obj9 in (Array) obj8)
{
objects3[item.controlIndex + num9++] = this.ValueToString(item, obj9);
}
goto Label_1125;
Label_0808:
objects3.Add("");
Label_0815:
if (objects3.Count < (item.controlIndex + 1))
{
goto Label_0808;
}
objects3[item.controlIndex] = this.ValueToString(item, e.sts[i].DataValue);
goto Label_1125;
}
catch (Exception exception8)
{
throw new Exception(exception8.Message + " in ListBox callback from item " + item.ItemName, exception8);
}
}
if ((type == typeof(ListBox)) && (item.controlProperty == "Items"))
{
try
{
ListBox box6 = (ListBox) item.control;
ListBox.ObjectCollection objects4 = box6.Items;
object obj10 = e.sts[i].DataValue;
if (!obj10.GetType().IsArray)
{
goto Label_095E;
}
int num10 = ((Array) obj10).Length;
while (objects4.Count < (item.controlIndex + num10))
{
objects4.Add("");
}
int num11 = 0;
foreach (object obj11 in (Array) obj10)
{
objects4[item.controlIndex + num11++] = this.ValueToString(item, obj11);
}
goto Label_1125;
Label_0951:
objects4.Add("");
Label_095E:
if (objects4.Count < (item.controlIndex + 1))
{
goto Label_0951;
}
objects4[item.controlIndex] = this.ValueToString(item, e.sts[i].DataValue);
goto Label_1125;
}
catch (Exception exception9)
{
throw new Exception(exception9.Message + " in ListBox callback from item " + item.ItemName, exception9);
}
}
if ((type == typeof(ListView)) && ((item.controlProperty == null) || (item.controlProperty == "Items")))
{
try
{
ListView lv = (ListView) item.control;
this.HandleListViewControl(item, lv);
goto Label_1125;
}
catch (Exception exception10)
{
throw new Exception(exception10.Message + " in ListView callback from item " + item.ItemName, exception10);
}
}
if ((type == typeof(ListView.ListViewItemCollection)) && ((item.controlProperty == null) || (item.controlProperty == "Items")))
{
try
{
ListView.ListViewItemCollection items = (ListView.ListViewItemCollection) item.control;
object obj12 = e.sts[i].DataValue;
if (!obj12.GetType().IsArray)
{
goto Label_0B0E;
}
int num12 = ((Array) obj12).Length;
while (items.Count < (item.controlIndex + num12))
{
items.Add("");
}
int num13 = 0;
foreach (object obj13 in (Array) obj12)
{
items[item.controlIndex + num13++].Text = this.ValueToString(item, obj13);
}
goto Label_1125;
Label_0B01:
items.Add("");
Label_0B0E:
if (items.Count < (item.controlIndex + 1))
{
goto Label_0B01;
}
items[item.controlIndex].Text = this.ValueToString(item, e.sts[i].DataValue);
goto Label_1125;
}
catch (Exception exception11)
{
throw new Exception(exception11.Message + " in ListView callback from item " + item.ItemName, exception11);
}
}
if ((type == typeof(ListViewItem.ListViewSubItemCollection)) && (item.controlProperty == null))
{
try
{
ListViewItem.ListViewSubItemCollection items2 = (ListViewItem.ListViewSubItemCollection) item.control;
object obj14 = e.sts[i].DataValue;
if (!obj14.GetType().IsArray)
{
goto Label_0C4E;
}
int num14 = ((Array) obj14).Length;
while (items2.Count < (item.controlIndex + num14))
{
items2.Add("");
}
int num15 = 0;
foreach (object obj15 in (Array) obj14)
{
items2[item.controlIndex + num15++].Text = this.ValueToString(item, obj15);
}
goto Label_1125;
Label_0C41:
items2.Add("");
Label_0C4E:
if (items2.Count < (item.controlIndex + 1))
{
goto Label_0C41;
}
items2[item.controlIndex].Text = this.ValueToString(item, e.sts[i].DataValue);
goto Label_1125;
}
catch (Exception exception12)
{
throw new Exception(exception12.Message + " in ListView callback from item " + item.ItemName, exception12);
}
}
if ((type == typeof(ProgressBar)) && ((item.controlProperty == null) || (item.controlProperty == "Value")))
{
try
{
ProgressBar bar = (ProgressBar) item.control;
if (!e.sts[i].DataValue.GetType().IsArray)
{
if (item.format != null)
{
this.Transform(item, ref e.sts[i].DataValue);
}
bar.Value = Convert.ToInt32(e.sts[i].DataValue);
}
goto Label_1125;
}
catch (Exception exception13)
{
throw new Exception(exception13.Message + " in ProgressBar callback from item " + item.ItemName, exception13);
}
}
if (type == typeof(DataBindEventHandler))
{
DataBindEventHandler handler = (DataBindEventHandler) item.control;
DataBindEventData itemData = new DataBindEventData();
itemData.itemInfo = item.idef;
itemData.val = e.sts[i].DataValue;
itemData.quality = (OPC_QUALITY_STATUS) e.sts[i].Quality;
itemData.timestamp = DateTime.FromFileTime(e.sts[i].TimeStamp);
itemData.error = e.sts[i].Error;
handler(this, itemData);
}
else
{
if (item.controlProperty == null)
{
item.controlProperty = "Text";
}
PropertyInfo property = type.GetProperty(item.controlProperty);
object val = null;
System.Type type3 = e.sts[i].DataValue.GetType();
System.Type propertyType = property.PropertyType;
System.Type elementType = property.PropertyType.GetElementType();
if (propertyType == typeof(DataBindEventData))
{
propertyType = type3;
elementType = type3.GetElementType();
}
if (type3.IsArray)
{
if (propertyType.IsArray)
{
ArrayList list = new ArrayList();
foreach (object obj18 in (Array) e.sts[i].DataValue)
{
object obj19;
if (item.format != null)
{
if (elementType == typeof(string))
{
obj19 = this.ValueToString(item, obj18);
}
else
{
obj19 = Convert.ChangeType(obj18, elementType);
this.Transform(item, ref obj19);
}
}
else
{
obj19 = Convert.ChangeType(obj18, elementType);
}
list.Add(obj19);
}
val = list.ToArray(elementType);
}
else
{
object obj20 = null;
foreach (object obj21 in (Array) e.sts[i].DataValue)
{
obj20 = obj21;
break;
}
if (propertyType == typeof(string))
{
val = this.ValueToString(item, obj20);
}
else
{
val = Convert.ChangeType(obj20, propertyType);
if (item.format != null)
{
this.Transform(item, ref val);
}
}
}
}
else if (propertyType.IsArray)
{
object obj22;
if (elementType == typeof(string))
{
obj22 = this.ValueToString(item, e.sts[i].DataValue);
}
else
{
obj22 = Convert.ChangeType(e.sts[i].DataValue, propertyType);
if (item.format != null)
{
this.Transform(item, ref obj22);
}
}
ArrayList list2 = new ArrayList();
list2.Add(obj22);
val = list2.ToArray(elementType);
}
else if (property.PropertyType == typeof(string))
{
val = this.ValueToString(item, e.sts[i].DataValue);
}
else
{
val = Convert.ChangeType(e.sts[i].DataValue, propertyType);
if (item.format != null)
{
this.Transform(item, ref val);
}
}
if (property.PropertyType == typeof(DataBindEventData))
{
DataBindEventData data2 = new DataBindEventData();
data2.val = val;
data2.error = e.sts[i].Error;
data2.quality = (OPC_QUALITY_STATUS) e.sts[i].Quality;
data2.timestamp = DateTime.FromFileTime(e.sts[i].TimeStamp);
data2.itemInfo = item.idef;
property.SetValue(item.control, data2, null);
}
else
{
property.SetValue(item.control, val, null);
}
}
}
}
}
catch (Exception exception14)
{
if (this.userErrHandler != null)
{
this.userErrHandler(this, exception14);
}
}
Label_1125:;
}
}
}
public int Refresh(OPCDATASOURCE src)
{
int num;
if (this.refreshTransactionID != 0)
{
num = -1073479163;
if (this.opcSrv.myErrorsAsExecptions)
{
throw new OPCException(num, ErrorDescriptions.GetErrorDescription(num));
}
return num;
}
this.refreshTransactionID = DateTime.Now.TimeOfDay.Milliseconds;
num = this.refreshGrp.iOpcGrp.Refresh2(src, this.refreshTransactionID, out this.refreshCancelID);
if (this.opcSrv.myErrorsAsExecptions && HRESULTS.Failed(num))
{
throw new OPCException(num, ErrorDescriptions.GetErrorDescription(num));
}
return num;
}
public int RefreshCancel()
{
if (this.refreshTransactionID == 0)
{
return 1;
}
this.refreshTransactionID = 0;
int hresultcode = this.refreshGrp.iOpcGrp.Cancel2(this.refreshCancelID);
if (this.opcSrv.myErrorsAsExecptions && HRESULTS.Failed(hresultcode))
{
throw new OPCException(hresultcode, ErrorDescriptions.GetErrorDescription(hresultcode));
}
return hresultcode;
}
private void Start()
{
DataChangeEventHandler dChgHnd = new DataChangeEventHandler(this.iDataChangedHandler);
this.refreshGrp = new RefreshGroup(this.opcSrv, dChgHnd, this.updRate);
this.subscriptions = new Subscriptions();
}
public Subscription Subscribe(string itemID, object updControl)
{
return this.Subscribe(itemID, updControl, null, 0, 0, null);
}
public Subscription Subscribe(string itemID, object updControl, DataBindFormat fmt)
{
return this.Subscribe(itemID, updControl, null, 0, 0, fmt);
}
public Subscription Subscribe(string itemID, object updControl, int index)
{
return this.Subscribe(itemID, updControl, null, index, 0, null);
}
public Subscription Subscribe(string itemID, object updControl, int index, DataBindFormat fmt)
{
return this.Subscribe(itemID, updControl, null, index, 0, fmt);
}
public Subscription Subscribe(string itemID, object updControl, string property, DataBindFormat fmt)
{
return this.Subscribe(itemID, updControl, property, 0, 0, fmt);
}
public Subscription Subscribe(string itemID, object updControl, int index, int param, DataBindFormat fmt)
{
return this.Subscribe(itemID, updControl, null, index, param, fmt);
}
private Subscription Subscribe(string itemID, object updControl, string property, int index, int index2, DataBindFormat fmt)
{
int num;
VarEnum reqType = VarEnum.VT_EMPTY;
if ((fmt != null) && (fmt.reqType != null))
{
reqType = types.ConvertToVarType(fmt.reqType);
}
int hresultcode = this.refreshGrp.Add(itemID, out num, true, reqType);
if (HRESULTS.Failed(hresultcode))
{
throw new OPCException(hresultcode, "Subscribe failed with error " + ErrorDescriptions.GetErrorDescription(hresultcode));
}
Subscription sItem = new Subscription();
sItem.parent = this;
sItem.ItemName = itemID;
sItem.control = updControl;
sItem.controlProperty = property;
sItem.controlIndex = index;
sItem.controlIndex2 = index2;
sItem.clientHandle = num;
sItem.format = fmt;
sItem.idef = this.refreshGrp.FindClientHandle(num);
this.subscriptions.Add(sItem);
return sItem;
}
public void Transform(Subscription item, ref object val)
{
if (val.GetType() == typeof(int))
{
val = (Convert.ToDouble(val) + item.format.add) * item.format.multiply;
}
else if (val.GetType() == typeof(uint))
{
val = (Convert.ToDouble(val) + item.format.add) * item.format.multiply;
}
else if (val.GetType() == typeof(double))
{
val = (((double) val) + item.format.add) * item.format.multiply;
}
else if (val.GetType() == typeof(float))
{
val = (Convert.ToDouble(val) + item.format.add) * item.format.multiply;
}
else if (val.GetType() == typeof(long))
{
val = (Convert.ToDouble(val) + item.format.add) * item.format.multiply;
}
else if (val.GetType() == typeof(ulong))
{
val = (Convert.ToDouble(val) + item.format.add) * item.format.multiply;
}
else if (val.GetType() == typeof(short))
{
val = (Convert.ToDouble(val) + item.format.add) * item.format.multiply;
}
else if (val.GetType() == typeof(ushort))
{
val = (Convert.ToDouble(val) + item.format.add) * item.format.multiply;
}
else if (val.GetType() == typeof(byte))
{
val = (Convert.ToDouble(val) + item.format.add) * item.format.multiply;
}
else if (val.GetType() == typeof(sbyte))
{
val = (Convert.ToDouble(val) + item.format.add) * item.format.multiply;
}
else if (val.GetType() == typeof(decimal))
{
val = (Convert.ToDouble(val) + item.format.add) * item.format.multiply;
}
}
public string ValueToString(Subscription item, object val)
{
string str;
if (HRESULTS.Failed(item.idef.OpcIRslt.Error))
{
return ("***Error 0x" + item.idef.OpcIRslt.Error.ToString("X"));
}
if ((item.format == null) || (item.format.format == ""))
{
return val.ToString();
}
if (val.GetType() == typeof(int))
{
str = ((((int) val) + ((int) item.format.add)) * ((int) item.format.multiply)).ToString(item.format.format);
}
else if (val.GetType() == typeof(uint))
{
str = ((((uint) val) + ((uint) item.format.add)) * ((uint) item.format.multiply)).ToString(item.format.format);
}
else if (val.GetType() == typeof(double))
{
str = ((((double) val) + item.format.add) * item.format.multiply).ToString(item.format.format);
}
else if (val.GetType() == typeof(float))
{
str = ((((float) val) + ((float) item.format.add)) * ((float) item.format.multiply)).ToString(item.format.format);
}
else if (val.GetType() == typeof(long))
{
str = ((((long) val) + ((long) item.format.add)) * ((long) item.format.multiply)).ToString(item.format.format);
}
else if (val.GetType() == typeof(ulong))
{
str = ((((ulong) val) + ((ulong) item.format.add)) * ((ulong) item.format.multiply)).ToString(item.format.format);
}
else if (val.GetType() == typeof(short))
{
str = ((short) ((((short) val) + ((short) item.format.add)) * ((short) item.format.multiply))).ToString(item.format.format);
}
else if (val.GetType() == typeof(ushort))
{
str = ((ushort) ((((ushort) val) + ((ushort) item.format.add)) * ((ushort) item.format.multiply))).ToString(item.format.format);
}
else if (val.GetType() == typeof(byte))
{
str = ((byte) ((((byte) val) + ((byte) item.format.add)) * ((byte) item.format.multiply))).ToString(item.format.format);
}
else if (val.GetType() == typeof(sbyte))
{
str = ((sbyte) ((((sbyte) val) + ((sbyte) item.format.add)) * ((sbyte) item.format.multiply))).ToString(item.format.format);
}
else if (val.GetType() == typeof(decimal))
{
str = ((((decimal) val) + ((decimal) item.format.add)) * ((decimal) item.format.multiply)).ToString(item.format.format);
}
else if (val.GetType() == typeof(DateTime))
{
str = ((DateTime) val).ToString(item.format.format);
}
else
{
str = val.ToString();
}
if ((item.idef.OpcIRslt.Quality < 0x40) && item.format.showNoValueOnBadQuality)
{
str = "";
}
if ((item.idef.OpcIRslt.Quality != 0xc0) && item.format.showNonGoodQuality)
{
str = str + "(" + item.Quality + ")";
}
return str;
}
public bool Active
{
get
{
return this.refreshGrp.iOpcGrp.Active;
}
set
{
this.refreshGrp.iOpcGrp.Active = value;
}
}
public OpcServer OpcSrv
{
get
{
return this.opcSrv;
}
}
public RefreshGroup RefreshGrp
{
get
{
return this.refreshGrp;
}
}
public int UpdateRate
{
get
{
return this.updRate;
}
set
{
this.updRate = value;
this.refreshGrp.UpdateRate = value;
}
}
public DataBindCallbackErrorEventHandler UserCallbackErrorHandler
{
get
{
return this.userErrHandler;
}
set
{
this.userErrHandler = value;
}
}
public DataBindCallbackUserHandler UserCallbackHandler
{
get
{
return this.userCallbackHandler;
}
set
{
this.userCallbackHandler = value;
}
}
}
}