Active X DLL tips?

R

Roger

I want to use and Active X DLL in Python applications. I have the
win32all stuff installed and the "Excel.Application" example in the
Client QuickStart section of the manual works OK, so I guess it is
installed correctly.

Problem comes when I want to use the objects in the OPCDA library. In VB
I would include the library in the references and could then do
something like:

Dim foo as OPCServer
dim baa as OPCGroups
(lots of lower level objects omitted)

set foo=New OPCServer
foo.Connect <Server details>
set baa=foo <Call for getting a new OPCGroups object>
(code continues in a similar manner)

Leading on from the Excel example, I have tried using client.Dispatch
with "OPCServer", "OPCAutomation.OPCServer" and a few other
combinations, but I cannot get a valid object. Either I am told the
string is invalid, or I get no error but the variable which the object
was supposed to be assigned to is.....not assigned.

Maybe (as warned in the docs) the COM browser is not correctly reporting
the names I should use. It mentions the VC COM browser, but if you don't
have that are there other valid alternatives?

I have looked at the gencache functions for generating a Python module
from the type library, but I am not sure about the parameters, in
particular, what should the lcid be? Also, what is the correct way to
pass an IID, as a string complete with the hyphens?

I have looked around for examples but all I have found so far is either
accessing applications such as Excel, IE and outlook, or building
clients to test servers that have been created with Python.

I suspect that maybe I sould be doing things a bit differently to access
a vanilla Automation DLL.

Tips anyone?
 
R

Roger Irwin

Got there in the end. For the benefit of other clueless souls who turn
up my post in searches, this is what I used:

This generates what I think is a 'Class Factory' in OPCDA, and this can
be used to generate an OPCServer object, as well as other OPC objects,
allthougth of course these are usually generated by calls to higher
level objects.

It would be nice to have a few tips and examples on this type of usage
in the Client QuickStart guide. Unfortunately I have little idea of what
I am doing so I am not the person to write it.

The GetModuleForTypeLib is documented in the win32com helpfile, the
parameters are:

IID,lcid,major,minor

IID - Get this using the COM browser. Look for OPC Automation 2.0, the
'filename' entry in the Type Library should point to opcdaauto.dll

lcid - this is a 'locale' ID. One of my mistakes was tring to set this
to a typical value for my (Italian) PC. Set to 0 and use the standard
conventions.

major & minor - Get the major and minor versions by looking at the
property of the DLL. In this case the type library is called OPC
Automation 2.0 but the DLL is version 1.0 . This may sound odd but the
2.0 refers to the OPC standard that is implemented, not the version
number of the DLL which implements it!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,065
Latest member
OrderGreenAcreCBD

Latest Threads

Top