专业的OPC技术书籍,寻求赞助 点击:4518 | 回复:18



工控帮

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:63帖 | 675回
  • 年度积分:0
  • 历史总积分:1418
  • 注册:2001年7月06日
发表于:2007-01-11 19:44:00
楼主
目前本书及配套源码全部免费共享了。
http://blog.gongkong.com/blog_detail.Asp?Id=212059



楼主最近还看过



wuliangfeng

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2007年2月07日
发表于:2007-02-07 09:28:00
1楼

wuliangfeng

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2007年2月07日
发表于:2007-05-23 17:40:00
2楼
我买了 对我帮助挺大的! 谢谢楼主!
我买了 对我帮助挺大的! 谢谢楼主!

tuolin

  • 精华:0帖
  • 求助:0帖
  • 帖子:11帖 | 117回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2004年3月01日
发表于:2007-05-26 14:28:00
3楼
呵呵,民族的才是大家的

wuliangfeng

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2007年2月07日
发表于:2007-05-28 13:16:00
4楼
我买了啊!帮助挺大的! 谢谢楼主!

三脚猫

  • 精华:0帖
  • 求助:0帖
  • 帖子:180帖 | 1598回
  • 年度积分:0
  • 历史总积分:1097
  • 注册:2004年7月08日
发表于:2007-05-28 13:26:00
5楼
发现许多搞工控的开发OPC应用,喜欢用VB,DELPHI,VC++,
其实C语言用VC++开发效率太低,C++BUILDER开发OPC应用,比
VC强多了

工控帮

  • 精华:0帖
  • 求助:0帖
  • 帖子:63帖 | 675回
  • 年度积分:0
  • 历史总积分:1418
  • 注册:2001年7月06日
发表于:2007-05-28 21:50:00
6楼
目前本书及配套源码全部免费共享了。
详见:HTTP://WWW.OPC-CHINA.COM

三脚猫

  • 精华:0帖
  • 求助:0帖
  • 帖子:180帖 | 1598回
  • 年度积分:0
  • 历史总积分:1097
  • 注册:2004年7月08日
发表于:2007-06-03 12:30:00
7楼
我用C++BUILDER编程,OPC的异步读写始终未有突破,
想解决。

三脚猫

  • 精华:0帖
  • 求助:0帖
  • 帖子:180帖 | 1598回
  • 年度积分:0
  • 历史总积分:1097
  • 注册:2004年7月08日
发表于:2007-06-03 12:44:00
8楼
下载了三个源码文件,未见有书下载
非常感谢。足够了!

工控帮

  • 精华:0帖
  • 求助:0帖
  • 帖子:63帖 | 675回
  • 年度积分:0
  • 历史总积分:1418
  • 注册:2001年7月06日
发表于:2007-06-03 15:08:00
9楼
西门庆: 书在HTTP://WWW.OPC-CHINA.COM文摘中,需要在线浏览的。

三脚猫

  • 精华:0帖
  • 求助:0帖
  • 帖子:180帖 | 1598回
  • 年度积分:0
  • 历史总积分:1097
  • 注册:2004年7月08日
发表于:2007-06-04 08:14:00
10楼
好人一生平安!

三脚猫

  • 精华:0帖
  • 求助:0帖
  • 帖子:180帖 | 1598回
  • 年度积分:0
  • 历史总积分:1097
  • 注册:2004年7月08日
发表于:2007-06-04 08:27:00
11楼
我已开始阅读了,我会C++BUILDER,只要把异步解决了,
我就算彻底会客户端编程了。

书虫2008

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:15
  • 注册:2007年7月14日
发表于:2007-07-17 17:57:00
12楼

书虫2008

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:15
  • 注册:2007年7月14日
发表于:2007-07-17 18:50:00
13楼
我用OCPDA服务器与客户程序开发指南3.4节作了一遍,还不错,可再添加接口就报个C2259,C4259故障,好像多重接口配置的不对,哪位仁兄对ATL熟悉啊帮帮忙。
YDGROUP.h代码如下:
// YDGROUP.h : Declaration of the CYDGROUP

#ifndef __YDGROUP_H_
#define __YDGROUP_H_

#include "resource.h"       // main symbols

/////////////////////////////////////////////////////////////////////////////
// CYDGROUP
class ATL_NO_VTABLE CYDGROUP : 
public CComObjectRootEx<CComSingleThreadModel>,
// public CComCoClass<CYDGROUP, &CLSID_YDGROUP>,
public IConnectionPointContainerImpl<CYDGROUP>,
// public IDispatchImpl<IYDGROUP, &IID_IYDGROUP, &LIBID_OPCDALib>,
// public IDispatchImpl<IOPCServer, &IID_IOPCServer, &LIBID_OPCDALib>,

public IOPCAsyncIO2,
public IOPCGroupStateMgt,
public IOPCItemMgt

// public IDispatchImpl<IOPCItemMgt, &IID_IOPCItemMgt, &LIBID_OPCDALib>,
// public IDispatchImpl<IOPCGroupStateMgt, &IID_IOPCGroupStateMgt, &LIBID_OPCDALib>,
// public IDispatchImpl<IOPCAsyncIO2, &IID_IOPCAsyncIO2, &LIBID_OPCDALib>
{
public:
CYDGROUP()
{
}

DECLARE_REGISTRY_RESOURCEID(IDR_YDGROUP)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CYDGROUP)
// COM_INTERFACE_ENTRY(IYDGROUP)
// COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IConnectionPointContainer)
// COM_INTERFACE_ENTRY2(IDispatch,IOPCItemMgt)
COM_INTERFACE_ENTRY(IOPCAsyncIO2)
COM_INTERFACE_ENTRY(IOPCGroupStateMgt)
COM_INTERFACE_ENTRY(IOPCItemMgt)
END_COM_MAP()
BEGIN_CONNECTION_POINT_MAP(CYDGROUP)
END_CONNECTION_POINT_MAP()


// IYDGROUP
public:
// IOPCAsyncIO2
STDMETHOD (Read)(DWORD dwCount, OPCHANDLE * phServer, DWORD dwTransactionID, DWORD * pdwCancelID, HRESULT * * ppErrors)
{
if (pdwCancelID == NULL)
return E_POINTER;

if (ppErrors == NULL)
return E_POINTER;

return S_OK;
}
STDMETHOD(Write)(DWORD dwCount, OPCHANDLE * phServer, VARIANT * pItemValues, DWORD dwTransactionID, DWORD * pdwCancelID, HRESULT * * ppErrors)
{
if (pdwCancelID == NULL)
return E_POINTER;

if (ppErrors == NULL)
return E_POINTER;

return S_OK;
}
STDMETHOD(Refresh2)(OPCDATASOURCE dwSource, DWORD dwTransactionID, DWORD * pdwCancelID)
{
if (pdwCancelID == NULL)
return E_POINTER;

return S_OK;
}
STDMETHOD(Cancel2)(DWORD dwCancelID)
{
return S_OK;
}
STDMETHOD(SetEnable)(BOOL bEnable)
{
return S_OK;
}
STDMETHOD(GetEnable)(BOOL * pbEnable)
{
if (pbEnable == NULL)
return E_POINTER;

return S_OK;
}
// IOPCGroupStateMgt
STDMETHOD(GetState)(DWORD * pUpdateRate, BOOL * pActive, LPWSTR * ppName, LONG * pTimeBias, FLOAT * pPercentDeadband, DWORD * pLCID, OPCHANDLE * phClientGroup, OPCHANDLE * phServerGroup)
{
if (pUpdateRate == NULL)
return E_POINTER;

if (pActive == NULL)
return E_POINTER;

if (ppName == NULL)
return E_POINTER;

if (pTimeBias == NULL)
return E_POINTER;

if (pPercentDeadband == NULL)
return E_POINTER;

if (pLCID == NULL)
return E_POINTER;

if (phClientGroup == NULL)
return E_POINTER;

if (phServerGroup == NULL)
return E_POINTER;

return S_OK;
}
STDMETHOD(SetState)(DWORD * pRequestedUpdateRate, DWORD * pRevisedUpdateRate, BOOL * pActive, LONG * pTimeBias, FLOAT * pPercentDeadband, DWORD * pLCID, OPCHANDLE * phClientGroup)
{
if (pRevisedUpdateRate == NULL)
return E_POINTER;

return S_OK;
}
STDMETHOD(SetName)(LPCWSTR szName)
{
return S_OK;
}
STDMETHOD(CloneGroup)(LPCWSTR szName, REFIID riid, LPUNKNOWN  * ppUnk)
{
if (ppUnk == NULL)
return E_POINTER;

return S_OK;
}
// IOPCItemMgt
STDMETHOD(AddItems)(DWORD dwCount, OPCITEMDEF * pItemArray, OPCITEMRESULT * * ppAddResults, HRESULT * * ppErrors)
{
if (ppAddResults == NULL)
return E_POINTER;

if (ppErrors == NULL)
return E_POINTER;

return S_OK;
}
STDMETHOD(ValidateItems)(DWORD dwCount, OPCITEMDEF * pItemArray, BOOL bBlobUpdate, OPCITEMRESULT * * ppValidationResults, HRESULT * * ppErrors)
{
if (ppValidationResults == NULL)
return E_POINTER;

if (ppErrors == NULL)
return E_POINTER;

return S_OK;
}
STDMETHOD(RemoveItems)(DWORD dwCount, OPCHANDLE * phServer, HRESULT * * ppErrors)
{
if (ppErrors == NULL)
return E_POINTER;

return S_OK;
}
STDMETHOD(SetActiveState)(DWORD dwCount, OPCHANDLE * phServer, BOOL bActive, HRESULT * * ppErrors)
{
if (ppErrors == NULL)
return E_POINTER;

return S_OK;
}
STDMETHOD(SetClientHandles)(DWORD dwCount, OPCHANDLE * phServer, OPCHANDLE * phClient, HRESULT * * ppErrors)
{
if (ppErrors == NULL)
return E_POINTER;

return S_OK;
}
STDMETHOD(SetDatatypes)(DWORD dwCount, OPCHANDLE * phServer, VARTYPE * pRequestedDatatypes, HRESULT * * ppErrors)
{
if (ppErrors == NULL)
return E_POINTER;

return S_OK;
}
STDMETHOD(CreateEnumerator)(REFIID  riid, LPUNKNOWN * ppUnk)
{
if (ppUnk == NULL)
return E_POINTER;

return S_OK;
}
};

#endif //__YDGROUP_H_
故障代码如下:
OPCDA.cpp
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : error C2259: 'CComObject<class CYDServer>' : cannot instantiate abstract class due to following members:
        c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CYDServer> >::CreateInstance(void *,const struct _GUID &,v
oid ** )'
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : warning C4259: 'long __stdcall IOPCServer::AddGroup(const unsigned short *,int,unsigned long,unsigned long,long *,float *,unsigned long,unsigned long *,unsigned long *,const 
struct _GUID &,struct IUnknown ** )' : pure virtual function was not defined
        j:\shoushutai\opcda\opcda.h(405) : see declaration of 'AddGroup'
        c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CYDServer> >::CreateInstance(void *,const struct _GUID &,v
oid ** )'
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : error C2259: 'CComObject<class CYDServer>' : cannot instantiate abstract class due to following members:
        c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CYDServer> >::CreateInstance(void *,const struct _GUID &,v
oid ** )'
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : warning C4259: 'long __stdcall IOPCServer::AddGroup(const unsigned short *,int,unsigned long,unsigned long,long *,float *,unsigned long,unsigned long *,unsigned long *,const 
struct _GUID &,struct IUnknown ** )' : pure virtual function was not defined
        j:\shoushutai\opcda\opcda.h(405) : see declaration of 'AddGroup'
        c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CYDServer> >::CreateInstance(void *,const struct _GUID &,v
oid ** )'
YDGROUP.cpp
YDServer.cpp
Generating Code...
Error executing cl.exe.

OPCDA.exe - 2 error(s), 2 warning(s)

bannie0520

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2006年9月25日
发表于:2007-08-06 11:46:00
14楼
请问如何买书呀?急!

bannie0520

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2006年9月25日
发表于:2007-08-06 11:47:00
15楼
我的联系方式:bannie0520@126.com

oyzw123

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 20回
  • 年度积分:0
  • 历史总积分:158
  • 注册:2001年11月27日
发表于:2007-10-18 16:01:00
16楼
西门庆:工控帮现在好象有故障,不能注册了,能否将示例原码发给我一份,不胜感激。我的邮箱ounce@yeah.net

ethan1983

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2007年10月31日
发表于:2007-10-31 20:07:00
17楼
给我一份,谢谢
wfc100@163.com

工控农民工

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 36回
  • 年度积分:0
  • 历史总积分:109
  • 注册:2005年7月13日
发表于:2007-12-17 17:40:00
18楼
司工能否给我发一份源码,工控帮不能注册了,我正在学习你的<<OPC服务器开发与指南>>
gao163shan@126.com
不胜感激!!!

热门招聘
相关主题

官方公众号

智造工程师