我正在使用Visual Basic 2012的OPC Foundation .NET API。当我尝试连接时,我收到此错误:
无法将“OpcCom.Factory”类型的对象转换为“Opc.IFactory”类型
...在此代码中的new Opc.Da.Server(
指令处:
private void button1_Click(object sender, EventArgs e)
{
Opc.Da.Server plcServer = null;
string serverUrl = "opcda://localhost/RSLinx OPC Server";
plcServer = new Opc.Da.Server(new OpcCom.Factory(), new Opc.URL(serverUrl));
plcServer.Connect();
}
答案 0 :(得分:0)
它抛出了这个错误,因为Opc.Da.Server
的接口期待Opc.IFactory
,但OpcCom.Factory()
返回的内容没有实现该接口。
答案 1 :(得分:0)
问题是我正在使用的rslinx版本,rslinx安装了opc .net api版本1.3(我不知道这个)然后我安装了opc .net api 2.0来制作我的opc客户端,所以当我添加了参考文献我没有注意到我有2个版本的dll,我只选择了我在列表中看到的第一个版本。
最后我使用的是OpcNetApi.dll 2.0和OpcNetApi.Com.dll 1.3。这就是它抛出错误的原因。