【原创解决】无法将类型为“OPCAutomation.OPCServerClass”的对象强制转换为类型“OPCAutomation.IOPCGroups”。

 

【百分百原创 】

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

 

【原创解决】无法将类型为“OPCAutomation.OPCServerClass”的对象强制转换为类型“OPCAutomation.IOPCGroups”。_第1张图片

【原创解决】无法将类型为“OPCAutomation.OPCServerClass”的对象强制转换为类型“OPCAutomation.IOPCGroups”。_第2张图片

 

你可能感兴趣的:(C#,工业控制)