OPC DCOM 错误处理讨论 点击:1404 | 回复:2



如火

    
  • 精华:154帖
  • 求助:0帖
  • 帖子:739帖 | 5249回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2006-04-26 15:35:00
楼主

在应用DCOM技术开发软件产品时,错误经常莫名其妙的出现,如果我们预先对错误处理过程进行了处理,我们将会有效的减少系统的故障率。

DCOM 本身提供了错误处理过程,下面介绍这个错误处理过程的一个应用. ( R. C. Harrison提供)

当OPC技术在分布的计算机上实现互相访问时,我们必须考虑方法返回的RPC_E_* 错误代码,我们可以尝试采用下面的代码来实现一个CLIENT在发生错误时,重新连接到SEVER上.

// 在调用RPC时, 检查返回的HRESULT
if (FACILITY_RPC == HRESULT_FACILITY(hr))
{
if (RPC_E_DISCONNECTED == hr)
{
// 建立重新连接过程,(如 Call CoCreateInstance)
}
}

另外一点可能我们需要知道如何通过一种测试方式来知道SERVER已经失效,失效的原因是多种多样的,可能是某一个方法的调用,当出现这种情况时,CLIENT需要重新建立与SEVER之间的连接,测量SERVER失效的解决方法是我们在调用每一个方法时,应该通过返回的值,检查是否存在错误发生,另外注意:

1:当连接已经丢失或失效和SERVER周期性地失效,没必要每个接口指针都调用Release() 。

2:不要总使用 QueryInterface() 来测试SERVER的状态,因为频繁访问同一个IID ,proxies不能自动更新SERVER的状态。我们可以用IOPCServer->GetStatus()来替代.

3:在OPCServer访问时,常出现的错误:OPCInvalidHandle, OPCBadType, OPCPublic, OPCBadRights, OPCUnknownItemID, OPCInvalidItemID, OPCInvalidFilter, OPCUnknownPath, OPCRange, OPCDuplicateName, OPCUnsupportedRate, OPCClamp, OPCInuse, OPCInvalidConfig, OPCNotFound, OPCInvalidPID

更精确的描述请参照:“Data Access Automation Interface Standard“


楼主最近还看过



crazyyin

  • 精华:0帖
  • 求助:1帖
  • 帖子:116帖 | 363回
  • 年度积分:0
  • 历史总积分:1066
  • 注册:2002年8月28日
发表于:2006-08-08 13:45:00
1楼
关注

crazyyin

  • 精华:0帖
  • 求助:1帖
  • 帖子:116帖 | 363回
  • 年度积分:0
  • 历史总积分:1066
  • 注册:2002年8月28日
发表于:2006-08-09 08:57:00
2楼
 4.控制面板->管理工具->本地安全策略->本地策略->安全选项->网络访问:本地账户的共享和安全模式改为:经典-本地用户以自己的身份验证
我都按照做,在客户还是找不到服务器的OPC ID,有个问题想请教:
唯有上面的步骤,我点击“本地安全策略”出现“组策略错误:未能打开这台计算机的组策略对象,您可能没有合适的权限”。我是用管理员下操作的。是2000访问力控的OPC SERVER

热门招聘
相关主题

官方公众号

智造工程师