Copyright (c) 1999,2000,2001,2002 by Martin Tomes. All rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
If you find this module useful please e-mail me, my e-mail address is in
OPC.txt and OPC.html. I failed to record the addresses of those who have
contacted me about version 0.91 so please mail me again and let me know how
you got on.
This code implements an OPC Server Interface, OPC used to mean Ole for Process
Control, but as Microsoft don't like to talk about OLE any more it's now just
OPC. For more information about OPC see the OPC Programmers Connection at
http://www.opcconnect.com/
SYNOPSIS
Two ways of using the OPC interface are provided, the class
methods:
use Win32::OLE::OPC;
my $opcintf = Win32::OLE::OPC->new('Someones.OPCAutomation',
'Someones.Server');
$opcintf->MoveToRoot;
foreach $item ($opcintf->Leafs) {
print $item->{name}, "\n";
my %result = $opcintf->ItemData($item->{itemid});
for $attrib (keys %result) {
print " [", $attrib, " = '", $result{$attrib}, "']", "\n";
}
print "\n";
}
foreach $item ($opcintf->Branches) {
print $item->{name}, "\n";
}
or a tied hash:
use Win32::OLE::OPC;
my %OPC;
tie %OPC, Win32::OLE::OPC, 'Someones.OPCAutomation', 'Someones.Server';
# OK, list the keys...
for $key (keys %OPC) {
my %x = %{$OPC{$key}};
print $key, "\n";
for $attrib (keys %x) {
print " '", $attrib, "' = '", $x{$attrib}, "'", "\n";
}
print "\n";
}
The tied hash method has to return a reference to a hash
containing the item data hence the unpleasant code '`%x =
%{$OPC{$key}}''. Alternatively one can assign the returned value
into a scalar and dereference it when using the hash like this
'`keys %$x'' and '`$result->{$item}''.
Note that both methods can be used together. First create an
interface using the `new()' method and then tie it like this:
tie %OPC, $opcintf, 'Someones.OPCAutomation', 'Someones.Server';
To connect to a remote server add the name of the server as a
parameter to the call to new() or to the tie:
my $opcintf = Win32::OLE::OPC->new('Someones.OPCAutomation',
'Someones.Server',
'machine.name');
tie %OPC, Win32::OLE::OPC, 'Someones.OPCAutomation',
'Someones.Server',
'machine.name';
INSTALLATION
If you have nmake you can use MakeMaker as follows:
perl Makefile.PL
nmake
nmake test
nmake install
nmake documentation
The final step makes OPC.html and OPC.txt from OPC.pm.
If you don't have nmake then you will find OPC.html and OPC.txt
are included in the package ready built and all you have to do
is copy OPC.pm into the `site/lib/Win32/OLE' directory with your
Perl installation. This module has been tested with ActiveState
Perl build 522.