"对COM 组件的调用返回了错误HRESULT E_FAIL",在枚举OPC服务器时候出现这个错误提示

dillon00072002 2013-05-31 12:05:10
            //获取本地计算机IP,计算机名称
IPHostEntry IPHost = Dns.Resolve(Environment.MachineName);
if (IPHost.AddressList.Length > 0)
{
strHostIP = IPHost.AddressList[0].ToString();
}
else
{
return;
}
//通过IP来获取计算机名称,可用在局域网内
IPHostEntry ipHostEntry = Dns.GetHostByAddress(strHostIP);
strHostName=ipHostEntry.HostName.ToString();

//获取本地计算机上的OPCServerName
try
{
KepServer = new OPCServer();
object serverList = KepServer.GetOPCServers(strHostName);

foreach (string turn in (Array)serverList)
{
cmbServerName.Items.Add(turn);
}

cmbServerName.SelectedIndex = 0;
btnConnServer.Enabled = true;
}
catch(Exception err)
{
MessageBox.Show("枚举本地OPC服务器出错:"+err.Message,"提示信息",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}

我在单位的电脑运行这个程序就正常,但是在我自己的电脑上边(Mac电脑虚拟的xp,用vmware fusion)就出现这个提示:我按照网上说明的方法修改了组件服务,但是还是不行,哪位大神能帮我看下

运行时候就是出现错误提示:“枚举本地OPC服务器出错:对COM 组件的调用返回了错误HRESULT E_FAIL”
...全文
4634 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
huachengming 2014-12-22
  • 打赏
  • 举报
回复
吧 OPCDAAuto.dll 换下可能就可以了···
poweroo7 2014-05-27
  • 打赏
  • 举报
回复
同样的问题,我也遇到了,公司几个机器都好用的程序,到一个电脑上就不行,而且opc都是按照同一个配置说明进行的opc配置,不应该别的电脑都好用,就这一台不行,可是问题就是这么怪,不知道哪里的原因,
justlit 2013-08-19
  • 打赏
  • 举报
回复
我想问下楼主你这问题解决了没? 我也遇到同样的问题了
gzq_gzq 2013-08-14
  • 打赏
  • 举报
回复
机器是32位还是64位?opc组件不支持64位,需要编译成x86
by_封爱 版主 2013-05-31
  • 打赏
  • 举报
回复
所以 环境环境.. 反正 只引用DLL是不行的 因为本地客户端没有OPC枚举 不能列出服务器的列表 所以 我在客户机 也安装了 OPC wincc..
dillon00072002 2013-05-31
  • 打赏
  • 举报
回复
引用 13 楼 diaodiaop 的回复:
或者 你会wincc的话 自己开个环境 自己设置几个变量(random)自己读取 反正 我不会 所以 我都是到现场调试的
还像刚才说的,我写的这个在单位电脑可以运行,我自己的电脑就不能运行=。=这个真心郁闷啊
by_封爱 版主 2013-05-31
  • 打赏
  • 举报
回复
或者 你会wincc的话 自己开个环境 自己设置几个变量(random)自己读取 反正 我不会 所以 我都是到现场调试的
by_封爱 版主 2013-05-31
  • 打赏
  • 举报
回复
引用 11 楼 dillon00072002 的回复:
...
这个地方 我只写代码 一般不在本机测试. 方法有了 就差环境的情况下 你可以到现场调试. 就算你本地测试 你没硬件数据 也是不行的 所以 我只能说 你把我的程序带到现场 然后根据OPC给的变量 进行读取 就知道了
dillon00072002 2013-05-31
  • 打赏
  • 举报
回复
引用 10 楼 diaodiaop 的回复:
http://bbs.csdn.net/topics/390462314 看这个帖子 正常的环境下,发布的OPC我在客户端读取是没问题的. 至于报错 有2点 第一就是权限 第二就是客户机的环境
我现在还没有连接远程OPC,只是测试一下本机KepServer就会出现这个问题。权限和环境设置?能讲的详细点吗?谢谢~~
by_封爱 版主 2013-05-31
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/390462314 看这个帖子 正常的环境下,发布的OPC我在客户端读取是没问题的. 至于报错 有2点 第一就是权限 第二就是客户机的环境
dillon00072002 2013-05-31
  • 打赏
  • 举报
回复
引用 7 楼 findcaiyzh 的回复:
asp.net的话还要注意权限。 其他想不起太多了,如果是组件内部的错误,就只能看文档,或者找support了。
最主要问题是,这个问题只有在我的电脑才会出现,单位的电脑就没有问题
dillon00072002 2013-05-31
  • 打赏
  • 举报
回复
引用 6 楼 findcaiyzh 的回复:
opcdadata.dll注册了吗?
注册了,我跟http://bbs.csdn.net/topics/350205771?page=1#post-394651287 这个可能遇到相同的问题,哎
宝_爸 2013-05-31
  • 打赏
  • 举报
回复
asp.net的话还要注意权限。 其他想不起太多了,如果是组件内部的错误,就只能看文档,或者找support了。
宝_爸 2013-05-31
  • 打赏
  • 举报
回复
opcdadata.dll注册了吗?
dillon00072002 2013-05-31
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/350205771?page=1#post-394651287
宝_爸 2013-05-31
  • 打赏
  • 举报
回复
这个就是GetOPCServers出错了,返回的Error Code 是E_FAIL。 你的找opcdadata.dll的文档看看,或者它的Support问问。 应该大部分人都没有碰到过这种问题
dillon00072002 2013-05-31
  • 打赏
  • 举报
回复
引用 1 楼 findcaiyzh 的回复:
看的我一头雾水啊。OPCServer是第三方类库? err.ToString()中,看看有没有详细错误。
其实我感觉我跟这位朋友的问题一样,我不知道应该怎样配置DCOM
dillon00072002 2013-05-31
  • 打赏
  • 举报
回复
引用 1 楼 findcaiyzh 的回复:
看的我一头雾水啊。OPCServer是第三方类库? err.ToString()中,看看有没有详细错误。
引用了opcdadata.dll err中详细的: --------------------------- 提示信息 --------------------------- 枚举本地OPC服务器出错:System.Runtime.InteropServices.COMException (0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component. at OPCAutomation.OPCServerClass.GetOPCServers(Object Node) at OPC测试通过.MainFrom.GetLocalServer() in E:\OPC测试通过\OPC测试通过\MainFrom.cs:line 103 --------------------------- OK ---------------------------
宝_爸 2013-05-31
  • 打赏
  • 举报
回复
看的我一头雾水啊。OPCServer是第三方类库? err.ToString()中,看看有没有详细错误。
dillon00072002 2013-05-31
  • 打赏
  • 举报
回复
有人知道怎么搞吗
加载更多回复(2)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧