如何实现异步数据的读写? 点击:1536 | 回复:8



问题1

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:8帖 | 16回
  • 年度积分:0
  • 历史总积分:45
  • 注册:2003年11月27日
发表于:2004-07-02 12:26:00
楼主
如何从客户端实现对OPC server数据的异步读写?



kking

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 116回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2002年7月09日
发表于:2004-07-08 10:35:00
1楼
调用异步访问接口,实现好回调函数。

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2004-07-14 15:10:00
2楼
回调函数能在非exe程序里调用吗?即我想在(dll)里异步调用opc server上的数据,然后通过callback 的OnReadComple函数设置dll对象的成员函数。客户端永远只取dll对象的成员函数获得数据。 我在应用程序里测试正常,然后我用dll来测试却异步读不到。调试时,在onReadComple处设断点,dll 内部调用IID_IOPCAsyncIO2接口后,发现没有回调。即没有调用onrreadcomple函数

问题1

  • 精华:1帖
  • 求助:0帖
  • 帖子:8帖 | 16回
  • 年度积分:0
  • 历史总积分:45
  • 注册:2003年11月27日
发表于:2004-07-15 10:11:00
3楼
好像在程序里边,OnReadComplete以回调方式也不执行啊?

kking

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 116回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2002年7月09日
发表于:2004-07-15 16:41:00
4楼
在DLL里应该没问题,一般情况下,DLL在运行时被映射到调用进程的地址空间当中,与调用进程本身的代码没什么区别。 你的异步读请求成功返回了吗?这种问题只能一点点调试解决,最好有实验用的服务器及源代码,看看服务器在做什么。

三脚猫

  • 精华:0帖
  • 求助:0帖
  • 帖子:180帖 | 1598回
  • 年度积分:0
  • 历史总积分:1097
  • 注册:2004年7月08日
发表于:2007-06-02 11:56:00
5楼
一样头疼,这异步方式读写的回调函数如果连接上,头疼,
说实在的,这OPC实在太麻烦,没有一定的高的COM水平
没法做,许多人只会用工具,不会编程,编程的人不会OPC,
知道OPC的人不会编程,只在是怪物一个。

三脚猫

  • 精华:0帖
  • 求助:0帖
  • 帖子:180帖 | 1598回
  • 年度积分:0
  • 历史总积分:1097
  • 注册:2004年7月08日
发表于:2007-06-03 10:54:00
6楼
这OPC的异步方式读事件处理一直是我的一块心病,到今未能解决,查了许多文章,除了夸夸其谈的介绍外,没有实质性的解决。
但不知VB编为何如此简单,两三条指令就能搞成,OPC虽是利用了
微软的COM技术,但并不是微软件搞的,但OPC到了VB很简单,利用了COM中的调度接口。而OPC是用C++语言编的,但到了C++编客户端
异步读写时却比VB麻烦多了。我发现国内会用C++编OPC应用的人
很少。

三脚猫

  • 精华:0帖
  • 求助:0帖
  • 帖子:180帖 | 1598回
  • 年度积分:0
  • 历史总积分:1097
  • 注册:2004年7月08日
发表于:2007-06-03 12:25:00
7楼
我今天试验OPC,列它的树形结构,OPC服务端就是Kepware,
我发现有些项死活列不出: _System.*,
原来是“权”作怪,显示它的缺省权是3,改成非3,就可以了:
brw->set_AcesssRight(0);
这权的说明却没有

三脚猫

  • 精华:0帖
  • 求助:0帖
  • 帖子:180帖 | 1598回
  • 年度积分:0
  • 历史总积分:1097
  • 注册:2004年7月08日
发表于:2007-06-04 08:16:00
8楼
brw->set_AcesssRight(1);

热门招聘
相关主题

官方公众号

智造工程师