【发布时间】:2019-08-12 19:43:35
【问题描述】:
我正在使用现有的 C# 程序通过 Kepserver 与 PLC 通信(我知道 PLC 和 Kepserver 方面,但在 C# 方面是新手)。我不断将“Opc.Da.Item”作为值(不是实际的 PLC 值)。我知道这可能是一个基本问题,但是我从哪里得到实际值(我在最后一行逻辑中放了什么)?感谢您的帮助。
这是从 OPC 读取数据的其他部分的方式,但我似乎看不出我做错了什么。
我终于回到这个问题上,但仍然有问题。使用下面添加的方法,我在 results[0].value 中得到一个空值。
private void ReadCompleteCallback_NotApplicable (object clientHandle, Opc.Da.ItemValueResult[] results)
{
HMINotApp_TextBox.Invoke(new EventHandler(delegate { HMINotApp_TextBox.Text = Convert.ToString(results[0].Value); }));
}
Opc.Da.Item[] OPC_NotApplicable = new Opc.Da.Item[1];
OPC_NotApplicable[0] = new Opc.Da.Item();
OPC_NotApplicable[0].ItemName = Brake_Press_ID + "B1156_barcode_DINT_value";
OPC_Not_Applicable.Add(OPC_NotApplicable[0]);
NotApplicable_GroupRead.AddItems(OPC_Not_Applicable.ToArray());
Opc.IRequest req;
NotApplicable_GroupRead.Read(NotApplicable_GroupRead.Items, 123, new Opc.Da.ReadCompleteEventHandler(ReadCompleteCallback_NotApplicable), out req);
label23.Text = OPC_Not_Applicable[0].ToString();
我希望值是 9999999,但我得到了 Opc.Da.Item。
【问题讨论】:
-
对象实例上的默认
.ToString()方法将返回实例的类型名称,这可能就是这里发生的情况。我不知道“Opc”库,但从一个简短的谷歌,也许OPC_Not_Applicable[0].Value.ToString();可能在这里工作? -
.Value。部分将不起作用。 “项目不包含价值的定义......”
标签: c# opc opc-da kepserverex