OPC Classic(也叫OPC DA) 有别于OPC UA,是最早也是被接受最多的OPC技术。注意,我这里说的的是技术,而不是说OPC协议,因为它本身并不是协议,而是基于COM技术提供了一套接口。COM技术也不是协议,它是建立在RPC协议上的。所以OPC Classic用的协议是RPC。微软的RPC是用TCP作为载体的,遵循的是DCE的RPC标准。
大家看一下官方开发包里的IDL文件(https://opcfoundation.org/developer-tools/developer-kits-classic/all-source-code-cc/),它们是OPC Classic的基础。在微软平台下所有接口都是执行了IUnknown,注定了OPC必然要使用COM技术。用微软的MIDL编译这些IDL文件后会产生你要使用的头文件,比如opcda.h,opccomn.h等等,你用VC++进行开发时需要使用这些头文件。如果你要使用C#开发,注意一下开发包里的OPC COM RCW项目。这是一个C#的项目,里面啥也没有只是定义了 —— 接口,在C#下的使用接口。仔细看下,C#里的接口和IDL文件里的是一模一样,比如COM的UUID,接口函数的参数类型等等。只有这样保证了早期客户用C++写的应用程序和后来用C#写的可以无缝调用,这也是叫RCW(Runtime COM Wrapper)的原因。
有了这二套接口(IDL和C#),你可以选用你适合的来开发。讲究速度的,用IDL(C++/COM);喜欢快速开发的用C#,只要在你的程序中执行这些接口就可以了。当然不愿从头开始的,参照官方开发包中的Sample程序,C++和C#的都有。
楼主最近还看过
太老了,小鲜肉都没机会接触到。我写了几篇博文,
https://blog.csdn.net/kkus123/article/details/78994114
https://blog.csdn.net/kkus123/article/details/80296466
https://blog.csdn.net/kkus123/article/details/80296468
https://blog.csdn.net/kkus123/article/details/80474854