首页 新闻 会员 周边 捐助

无法将类型为“OPCAutomation.OPCServerClass”的对象强制转换为类型“OPCAutomation.IOPCGroups”

1
悬赏园豆:100 [已关闭问题] 关闭于 2016-04-20 14:48

.net 开发OPC Client,使用自动化接口,OPCDAAuto.dll 2.02.5.20,在创建组的时候

OpcGroups = OpcServer.OPCGroups;   << 这行运行时抛异常:
System.InvalidCastException: 无法将类型为“OPCAutomation.OPCServerClass”的对象强制转换为类型“OPCAutomation.IOPCGroups”。
   在 OPCAutomation.OPCServerClass.get_OPCGroups();

 

OPCDAAuto.dll 已注册,版本也一致。

 

求解决方案!!!

chenjm的主页 chenjm | 初学一级 | 园豆:111
提问于:2016-04-19 23:14
< >
分享
所有回答(3)
0

问题已经解决了

chenjm | 园豆:111 (初学一级) | 2016-04-20 14:48
0

楼主,怎么解决的?

qiang112 | 园豆:202 (菜鸟二级) | 2016-07-13 16:00
0

 

【百分百原创 】

我是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”。”就是上面的问题。

 

 

Damon_deng | 园豆:202 (菜鸟二级) | 2018-06-14 09:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册