.net 开发OPC Client,使用自动化接口,OPCDAAuto.dll 2.02.5.20,在创建组的时候
OpcGroups = OpcServer.OPCGroups; << 这行运行时抛异常:
System.InvalidCastException: 无法将类型为“OPCAutomation.OPCServerClass”的对象强制转换为类型“OPCAutomation.IOPCGroups”。
在 OPCAutomation.OPCServerClass.get_OPCGroups();
OPCDAAuto.dll 已注册,版本也一致。
求解决方案!!!
问题已经解决了
楼主,怎么解决的?
【百分百原创 】
我是C# vs2010 ,
测试了win7 64 win10 64 都可以。
自己也困扰了很久,解决后分享出来,网上确实很难找到详细的资料。
1、VS中设置程序的属性--CPU目标改为86
2、OPCAutomation 228K大小,32位系统,复制到C:\Windows\System32下,然后管理员身份打开CMD,cd C:\Windows\System32 到目录下,regsvr32.exe OPCAutomation.dll,进行注册。如果是64位系统,要同时对System32和C:\Windows\SysWOW64两个文件夹下进行com注册,然后管理员身份打开CMD,cd到目录下,regsvr32.exe OPCAutomation.dll,注册,注册后重启电脑。
3、引用dll是com下的OPC DA Automation Wrapper 2.0,就可以了。
4、如果和上面的不一样,可以cd到C盘对应的目录下,先regsvr32.exe /u OPCAutomation.dll卸载,然后运行2,重新注册。
对64位系统如果出现异常,需要对C:\Windows\SysWOW64 和C:\Windows\System32两个目录下的opcdaauto.dll都要卸载,在注册。
5、注册成功后,程序中引用dll后,在引用--右键—opcdaautmon界面如下
可以看到名字自动变为了Interop.OPCAutomation。其中“嵌入互操作类型”项:
如果是嵌入类型,在创建服务时用private OPCServer opcSrv; 如果不是嵌入,用new OPCServerClass,这个地方会经常报错说无法 “无法将类型为“OPCAutomation.OPCServerClass”的对象强制转换为类型“OPCAutomation.IOPCGroups”。”就是上面的问题。