| |
Allgemeines
Hinweise
und Tips zum Einsatz der ActiveX FishFa30.DLL
(vbFish30Setup.EXE) / FishFa40AX.DLL
(vbFish40Setup.EXE) unter Perl auf Win32 Rechnern.
FishFa30.DLL eignet sich für den Einsatz mit dem Intelligent Interface (an
COM) und dem Universal Interface (an LPT). FishFa30AX.DLL eignet sich für den
Einsatz mit den Interfaces der ROBO-Serie (USB, COM, RF-Datalink) und dem
Intelligent Interface (an COM). Das vorliegende Handbuch FishFa30PL.PDF
beschreibt den Einsatz mit FishFa30.DLL, es kann genauso für den Einsatz mit
FishFa40AX.DLL herangezogen werden.
Installation Perl und FishFa30
Die Installation ist erfolgt mehrstufig :
- Perl-System
Wenn nicht schon vorhanden : Kostenloser Download von www.activestate.com/ActivePerl.
Hier wurde mit der MSI Binär-Distribution für Win32 "Active Perl 5.6.1
build 635" gearbeitet. Diese Distribution stellt auch das erforderliche
OLE-Package zur Verfügung. Die Perl-Installation erfolgt sehr einfach über
den MSI-Installer, der auf dem System vorhanden sein muß.
FishFa30.DLL
Sollte mit dem Installprogramm vbfish30setup.exe
installiert werden. Das Installprogramm erlaubt wahlweise die Installation
eines Treiber, der zum Betrieb des älteren (parallelen) Universal-Interfaces
erforderlich ist. Außerdem wird ein "Interface Panel" (ein Tool zum
Test der an das Interface angeschlossenen Modelle) installiert. Das
beiliegende VB6-Handbuch kann ebenfalls gewinnbringend genutzt werden, da die
FishFace.Methoden gleich sind (man muß sich nur die $, @, -> ; dazu
denken) .
FishFa30PL.PDF
Handbuch mit einer Befehlsreferenz und
umfangreichen Tips & Tricks in Perl.
Entwicklungsumgebung
Im einfachsten Fall Editieren mit NotePad (Editor) und Testen im
MS-DOS-Fenster.
Alternativ ein Editor mit Syntax-Highlighting und Kommando zum Ausführen des
Programms z.B. Uli Meybohms (www.meybohm.de)
Proton.
Literatur zu Perl
Hier ein paar sehr subjektive Hinweise und Anmerkungen :
O'Reilly : Einführung
in Perl für Win32 Systeme (ISBN 3-89721-106-8, scheint nicht mehr lieferbar
zu sein,
ISBN der amerikanischen Ausgabe : 1-56592-324-3).
Enthält ein kurzes Kapitel "OLE-Automatisierung".
O'Reilly : Perl in
a Nutshell (ISBN 3-89721-338-9) Referenz und Kurzeinführung.
Ebenfalls mit einem Kapitel OLE-Automatisierung.
O'Reilly :
Programmieren mit Perl (Larry Wall et. al. ISBN 3-89721-144-0)
Das Buch über Perl und seine Philosophie.
Addison-Wesley
: Nitty Gritty Perl (ISBN 3-8273-18886-6) Für erfahrene Programmierer,
die einen kurzen Überblick gewinnen möchten. Zudem das (mit Abstand
preiswerteste Buch). Kein OLE-Automatisierungs Kapitel.
Wenns nur um OLE-Automatisierung geht und man Perl einigermaßen sicher kann
und den Beispielen der Dokumentation traut, geht’s auch ohne.
Anmerkungen zu FishFace
Bei Einsatz von FishFa30.DLL ist der folgendes use erforderlich :
use Win32::OLE;
FishFa30.DLL muß ordnungsgemäß installiert sein (geschieht automatisch beim
Setup).
Die Objekterstellung erfolgt über :
$ft =
Win32::OLE->new("FishFa30.FishFace", 'Quit');
Alternative kann auch mit use OLE; gearbeitet werden (im Handbuch wird mit
use Win32::OLE gearbeitet) :
use OLE;
$ft = CreateObject OLE
"FishFa30.FishFace" || die "CreateObject: $!;
Der Rest ist dann wie oben. Gelegentlich wird aber mehr Wert auf {} und
"" in der Schreibweise gelegt.
Perl-FishFace Beispiele
WechselBlinker mit FishFa30.DLL
Die Lampen an M1 und M2 schalten abwechselnd jeweils für 555 ms ein. Endlos,
Abbruch über ESC-Taste.
use Win32::OLE;
$ft = Win32::OLE->("FishFa30.FishFace", 'Quit');
print "--- WechselBlinker.PL gestartet ---\npress ESC to HALT\n";
$ft->OpenInterface("COM2");
until($ft->Finish) {
$ft->SetMotor(2, 0);
$ft->SetMotor(1, 1);
$ft->Pause(555);
$ft->SetMotor(1, 0);
$ft->SetMotor(2, 1);
$ft->Pause(555);
}
$ft->CloseInterface();
print "--- FINIS ---\n"; |
- use Win32::OLE
- Anlegen des Objects ft
- Herstellen der Verbindung zum Interface, hier eigenen Wert einstellen
(COM1 - COM9, LPT, LPT1 - LPT3)
- eine Lampe an (Aus => 0, Ein => 1), die andere aus, 555 ms warten und umgekehrt.
- und das in einer until-Schleife, die durch die ESC-Taste abgebrochen
werden kann
- Schließen der Verbindung zum Interface
Blinker mit FishFa40AX.DLL
#!perl -w
# --- *.PL : Blinkende Lampe an M1 ---
use OLE;
$ft = CreateObject OLE "FishFa40AX.FishFace" || die "CreateObject: $!";
$ft->OpenInterfaceUSB(0,0);
$mGelbeLampe = 1;
while (not $ft->Finish()) {
$ft->SetMotor($mGelbeLampe, 1);
$ft->Pause(400);
$ft->SetMotor($mGelbeLampe, 0);
$ft->Pause(200);
}
$ft->CloseInterface();
|
|
Simultane Ansteuerung einer vorgegebenen Position
Motor an M3 (mit Endtaster an E5 und Impulstaster an E6) und an M4 (mit E7
und E8)
Motor an M4 fährt 25 Impulse mit halber Geschwindigkeit (8) nach links und der
Motor an M3 mit voller Geschwindigkeit(15) 40 Impulse nach rechts. Details sind
im erwähnten Manual beschrieben.
use Win::OLE;
%Dir = (Aus => 0, Ein => 1, Links => 1, Rechts => 2);
%Wait = (Ende => 0, Time => 1, NotHalt => 2, ESC => 3);
$ft = Win32::OLE->( "FishFa30.FishFace", 'Quit');
print "--- Position.PL gestartet ---\npress ESC to HALT\n";
$ft->OpenInterface("COM2");
print "Motor an M4 faehrt 25 links, halbe Geschw. ",
"und Motor an M3, 40 rechts, voll\n";
$ft->SetMotor(3, $Dir{Rechts}, 15, 40);
$ft->SetMotor(4, $Dir{Links}, 8, 25);
do {
print $ft->GetCounter(6), " - ", $ft->GetCounter(8), "\n";
} while($ft->WaitForMotors(100, 3, 4) eq $Wait{Time});
print $ft->GetCounter(6), " - ", $ft->GetCounter(8), "\n";
$ft->CloseInterface();
print "--- FINIS ---\n"; |
- use Win32::OLE
- Hash als symbolische Konstanten für für Drehrichtung und Warten
- Anlegen der Objekts ft
- Herstellen der Verbindung zum Interface (s.o.)
- Starten der Motoren
- Warten auf Beendigung des Auftrages. Hier wird in Intervallen von 100 ms
auf Ende abgefragt, die Motoren schalten sich bei Erreichen der vorgegebenen
Postion selbsttätig ab.
- In der do-Schleife wird die aktuell erreiche Position auf der Konsole
ausgegeben. Nach Schleifen-Ende die Endposition
- Schließen der Verbindung zum Interface.
Turm von Hanoi
Auf der Seite Turm von Hanoi gibt es dann noch ein
vollständiges, etwas größeres Perl-Programm.
Die Alternative : Win32::API
Das von Aldo Calpini auf CPAN
angebotene Module Win32::API (akt. Jan 04 : Win32-API-0.41) ermöglicht den
direkten Zugriff auf Windows.DLLs. Damit ist die Erstellung eines Perl-Moduls
auf direkt Basis von umFish30.DLL möglich (Siehe auch die entsprechende Python-Lösung).
Strickmuster :
package ftC::FiFa.pm
use Win32::API
$Version = new Win32::API('umFish30',
'Version', .... |
Wenn denn jemand das probiert, würde ich es gerne hier veröffentlichen.
Stand : 07.07.2005
|