|
AllgemeinesPython ist eine Sprache, die von Praktikern für Praktikern entwickelt wurde. Sie läßt alldas linksliegen über das man bei Java so schön und weltanschaulich diskutieren kann. Variablen-Deklarationen : wozu?, explizite Typkonversionen warum, Klammernzählen nee : Man muß halt ein wenig aufpassen, wenn mans bequem haben will. Trotzdem gibts OO-satt, sogar mehrfach. Und weil Python sich nun mal so einfach und kostenlos anläßt sieht man auch Möglichkeiten für den Einsatz im Informatik-Unterricht an Schulen. Diese Seite gibt einen Überblick auf die Zugriffsmöglichkeiten aus Python auf die fischertechnik Interfaces. Sie bietet keine Einführung in Python. Dazu werden vier Alternativen angeboten :
Die Alternativen basieren auf der umFish30.DLL / umFish40.DLL / umFish50.DLL Die FishFa30.DLL / FishFa40AX.DLL-Alternative ist insgesamt die komfortablere, da sie auch von sich aus für die Unterbrechbarkeit der Anwendungsprogramme sorgt. Es muß aber allerhand installiert werden. Die FishFa30.py / FishFa40.py-Alternative erwartet außer einem installierten
Python-Sytem nur noch die Installation von T.Hellers ctypes. Sie ist auch
technisch interessanter, da hier der Zugriff auf umFish30.DLL /umFish40.DLL offen
über die
Python-Klasse FishFace geschieht. Der Funktionsumfang der Basis-Klasse FishFace ist im Falle FishFa40AX.DLL etwas größer (z.B. RF-Funktionen). DownloadsAußer einem installierten Python-System ab v2.2 werden weitere Komponenten benötigt. Das ist zunächst das Download-Päckchen PythonFish30.ZIP mit dem Modul FishFa30.py, einem Handbuch und einigen Beispielen. Im beiliegenden Handbuch wird dann die Installation der zusätzlich erforderlichen Komponenten (win32all / FishFa30.DLL bzw. ctypes / umFish30.DLL) beschrieben. Die Download-Adressen sind dort ebenfalls zu finden. Für FishFa40.py entsprechend PythonFish40.ZIP und das Handbuch separat. Für FishFaTX.py entsprechend PythonFish311.ZIP und die Handbücher 40 und TX separat. Klaus Merkert für das Universal InterfaceKlaus Merkert hat für das Universal Interface eine Lösung erarbeitet, die gleichermaßen unter Windows wie auch Linux läuft : www.hsg-kl.de/faecher/inf/python/ft/index.php ProgrammierungHier ein paar kleine Beispiele (mit Version 30, für das Intelligent Interface. für 40 muß meist nur 30 durch 40 ersetzt werden, die beiliegenden Beispiele sind aktualisiert), die entweder an der "Python Shell" (von IDLE) direkt ausgeführt wurden oder über ein mit IDLE erstelltes Programm (wenns dann doch zu unübersichtlich wurde). Es wurde die Alternative 2 genutzt. Ausführliche Programmier-Beispiele finden sich im Handbuch von PythonFish30.ZIP. Bis auf die import und die Instanzierungszeile besteht zwischen den Alternativen keine gravierenden Unterschiede : import win32com.client Bei Alternative 2 hieße es dann : from
FishFa30 import * In beiden Fällen ist dann ein Open und bei Ende der Experimente ein Close erforderlich : ft.OpenInterface("COM1") ft.CloseInterface() Der Portname ist auf die eigenen Gegebenheiten zu ändern ("LPT", "COM1" - "COM8", "LPT1" - "LPT3") BlinkerLampe an M1 blinkt im Sekundentakt : Ein, Aus =
1, 0 Beenden duch ESC-Taste WechselBlinkerLampen an M1 und M2 blinken im Wechsel : while not ft.Finish(): Hier werden alle M-Ausgänge gleichzeitig geschaltet. Jeweils zwei bit pro M-Ausgang. Also 00000001 für M1 Ein und 00000100 für M2 ein. Alle anderen Ausgänge sind Aus. StatusAnzeigeDer Schaltzustand eines ausgewählten E-Eingangs (hier E3) wird angezeigt (Abbruch durch ESC-Taste): while not ft.Finish(): Anzeige 1 steht für ein, Anzeige im Sekundentakt. Der Schaltzustand aller E-Eingänge wird permanent angezeigt : while not ft.Finish(): Die Anzeige erfolgt Hexa im Sekundentakt. AnaloganzeigeDer Wert von EX wird laufend angezeigt : while not ft.Finish(): Dabei ist zu beachten, dass das Open mit ft.OpenInterface("COM1",
1) für "mit AnalogScan" erfolgen muß. Nutzen der FishRobot-FunktionenBei Verwendung der Klasse FishRobot anstelle von FishFace stehen zusätzich noch einige Robot-Methoden zur Verfügung : from
FishFa30 import * ft.OpenInterface("COM2") ft.Home() ft.MoveTo(ft.PosPrint,
[23,34]) ft.CloseInterface() Bei der Instanzierung wird die Roboter-Konfiguration mitgeteilt Motore an M3
und M4 mit maximalem Fahrweg ab Endtaster von 222 bzw. 88 Impulsen. Nutzen der FishStep-FunktionenBeispiel siehe Elefanten-Runde Der Hanoi-Roboter
Weitere ModelleDie Modelle Alarmanlage und Garagentor des Kastens Profi E-Tec Stand : 16.01.2010 |