21.03.2005

Achtung - Neue Projektseite!
homepage.mac.com/ralf.krause/cylab

 
 

12.02.2002

Ralf Krause

Macintosh und Modul-Bus ...
... CompuLAB-USB läuft mit REALbasic 4.0

Messen-Steuern-Regeln jetzt auch mit dem iMac und dem iBook

Seit der konsequenten Einführung der USB-Schnittstelle bei allen Computern aus dem Hause Apple wurde Messen-Steuern-Regeln mit dem Macintosh ein zunehmend schwierigeres Unterfangen. So mancher User der bunten iMacs oder schicken iBooks hat in der Vergangenheit leider aufgeben müssen und sich inzwischen anderen Betätigungsfeldern gewidmet.

Dass es trotzdem funktioniert ... und noch dazu sogar sehr komfortabel, das möchte ich in meinem Aufsatz in den MB-News zeigen. Ich bin sicher, dass dies nicht die letzte Gelegenheit sein wird, die Ansteuerung von Hardwaremodellen mit dem Macintosh zu zeigen. Ausprobieren und Mitmachen sind unbedingt erwünscht. Ich hoffe, es gelingt mir, das Interesse für die Hardwareprogrammierung mit dem Macintosh wieder zu wecken.
 
 

- die Programmierumgebung

"REALbasic ist der einfachste und preiswerteste Weg, um professionelle Anwendungen auf dem Mac zu entwickeln. Objektorientiert. Visuell. Professionell. REALbasic ist eine moderne visuelle objektorientierte BASIC-Programmierumgebung für den Macintosh. REALbasic ist für all die interessant, die auf dem Mac schnell und einfach programmieren wollen. Auch komplexe Anwendungen lassen sich mit REALbasic realisieren."
Application Systems Heidelberg, deutscher Distributor von REALbasic

"Nie war es einfacher, auf dem Macintosh eine eigenständige Applikation zu erstellen, die sich weder im Aussehen noch im Verhalten von einer in C programmierten unterscheidet, als mit REALbasic."
c't magazin

Um die Software selber kennenzulernen, kann man eine kostenlose Testversion aus dem Internet laden. Die Testumgebung ist vollständig mit allen Handbüchern sowie einem Tutorial und funktioniert uneingeschränkt für 30 Tage. Eine deutsche Version gibt es bei Application-Systems Heidelberg.

Die Lizenzgebühren für die Software betragen nach der Testphase für Schulen (je nach Ausführung) zwischen 80 und 255 Euro. Download-Lizenzen sind preiswerter als Komplettlieferungen. Gedruckte Handbücher gibt es einzeln.
Für die Ausstattung eines ganzen Klassenraumes gibt es Sonderkonditionen. <

Infos und Download:  www.ash-software.de/realbasic/
 
 

CyLab - der Treiber zur Ansteuerung der Hardware

Es reicht natürlich nicht, eine leistungsfähige Entwicklungsumgebung auf den Macintosh aufzuspielen, um damit Hardware wie das CompuLAB-USB anzusteuern. Der passende Treiber ist notwendig.

Ganz neidisch hatte ich lange Zeit die Entwicklungen von Burkhard Kainka verfolgt ... CompuLAB-USB ... Elektor USB ... sein Buch "Messen, Steuern, Regeln mit USB" bei Franzis ... aber alles ausschließlich nur für Windows ... nichts für den Mac ...

Seit Januar 2002 ist das anders geworden. Martijn Plak, ein Mac-Entwickler aus den Niederlanden, hat für das USB-Projekt von Elektor einen passenden Mac-Treiber veröffentlicht. Da sowohl das CompuLAB-USB von ModulBus wie auch die Elektor-Projekte auf dem Microcontroller Cypress CY7C63001 basieren und in ihrer internen Firmware ähnlich sind, funktioniert der Treiber für alle diese Projekte gleichermaßen. Toll ...

Der Treiber liegt aktuell in der Version 1.0b3 auf der Internetseite von Martijn Plak zum kostenlosen Download bereit. Nach dem Herunterladen und Auspacken der Software müssen lediglich die beiden Systemerweiterungen "USB CyLab Driver" und "USB CyLab Library" in den Systemordner geschoben werden. Das ist alles! Das Programm "CyApp" zeigt danach an, ob ein Interface angesteckt ist.

Infos und Download:  www.plak.net/cylab/
 
 

CyLabClass - die Verbindung zwischen dem Treiber und REALbasic

Einen gut dokumentierten Treiber aus einem Programm heraus anzusprechen, ist eigentlich nicht schwer. Das gelingt in jeder beliebigen Programmierumgebung ... in Metrowerks C/C++, der Standardprogrammiersprache für den Mac, und auch in REALbasic, der hier wegen der Einfachheit gewählten Alternative.

Um es Einsteigern besonders einfach zu machen, habe ich die Schnittstelle zwischen dem Treiber CyLab und der Programmierumgebung in eine Klasse CyLabClass gepackt. Hier sind alle Routinen enthalten, die die Hardware steuern.

Um ein neues eigenes Projekt zu realisieren, muss man in REALbasic ein neues Projekt erzeugen und die Klasse hineinschieben. Danach stehen auch dem neuen Projekt alle Routinen zur Verfügung.

Download:  CyLabClass.sit
 
 

Lauflicht - das erste Beispiel

       

Nach dem Start von REALbasic öffnet die Programmier-umgebung automatisch mit einem neuen leeren Projekt. Man bewegt -wie oben beschrieben- die Datei "CyLabClass" in das Projektfenster. (Bild rechts)

Für das Lauflicht braucht man im Programmfenster einen Knopf "Start" sowie das Textfeld "EditField1" zur Anzeige des Ausgabewertes. (Bild links)
 

Das im "Code Editor" abgebildete Programm wird als Methode "Action" für den Knopf "Start" eingeben ...
... fertig ...
... und "Run" ...

Das CompuLAB zeigt das Lauflicht in invertierter Logik, d.h. alle LEDs sind an und die angesprochene LED ist aus. Kleine Korrektur im Quelltext ... statt CyLab.WriteDigitalIO(i) steht dort jetzt CyLab.WriteDigitalIO(255-i) ... und nur ein einzelnes Licht läuft rund.

Sicherlich geht es eleganter, aber als erstes Beispiel soll das reichen.

Download:  Lauflicht.sit


 
 

Analogeingänge - ein zweites Beispiel

Genau wie eben ... REALbasic ... neues Projekt ... CyLabClass rein ...

Das neue Projekt soll kontinuierlich die Spannung an den Analogeingängen A und B des CompuLAB in einer Großanzeige anzeigen. Also braucht das Programmfenster eine gewisse Größe, zwei Anzeigefenster und einen Messknopf.

Das Programmfenster wird auf die gewünschte Größe aufgezogen, z.B. 800*600. Die beiden Textfenster "EditField1" und "EditField2" werden erzeugt, in "Spannung1" und "Spannung2" umbenannt und in ihrer Größe angepasst. Die zu verwendende Schrift und Schriftgröße kann man einfach setzen, für eine im Unterrichtsraum weit sichtbare Großanzeige z.B. Chicago - 200 Punkt.

Download:   Messen.sit
Screenshot: Großanzeige der Messwerte


 
 

Dokumentation - ...

An der Dokumentation arbeite ich noch! Da ich möglichst schnell etwas für die MB-News fertig stellen wollte, klemmt es hier eventuell noch. Ich kann noch nicht beurteilen, wieviel ich dokumentieren soll und muss ...

Eine vollständige Einführung in REALbasic kann es hier nicht werden. Es muss allerdings soviel erklärt werden, wie man zur Ansteuerung des CompuLAB-USB braucht. Die beiden obigen Beispiele zeigen bereits das Grundprinzip der allgemeinen Vorgehensweise auf.

Programme, die die Methoden der Klasse "CyLabClass" benutzen sollen, müssen immer eine Instanz der Klasse erzeugen:

dim CyLab as CyLabClass
CyLab = New CyLabClass

CompuLAB-USB wird mit folgenden Methoden angesprochen:

Interface suchen, öffnen und schließen

dim err as integer
err = CyLab.FindFirstDevice()
err = CyLab.FindNextDevice()
err = CyLab.OpenDevice()
err = CyLab.CloseDevice()

Digitalmuster ausgeben und einlesen

dim err as integer
dim wert as integer
err = CyLab.WriteDigitalIO(wert)
err = CyLab.ReadDigitalIO(wert)

Alle Parameter des CompuLAB-USB gleichzeitig ausgeben und einlesen
- dOut ist der Ausgabewert für die Digitalausgänge
- dIn ist der Eingabewert von den Digitaleingängen
- aInA, aInB, aInC sind die Eingabewerte von den Analogeingängen A,B,C
- aInD ist eine intern benutzte Referenzspannung
- die Spannungen sind 10-Bit-Ganzzahlen mit 1023=5V, 511=2.5V, 255=1.25V ...

dim err as integer
dim dOut, dIn, aInA, aInB, aInC, aInD as integer
err = CyLab.CompuLAB(dOut, dIn, aInA, aInB, aInC, aInD)

Zum Warten zwischen zwei Messungen

dim milliseconds as integer
CyLab.Wait(milliseconds)

REALbasic löscht die Instanz wieder automatisch, sobald kein Verweis mehr darauf existiert, also beim Programmende oder mit dem folgenden Programmbefehl. Danach kann das Programm die Methoden der Klasse "CyLabClass" nicht mehr ausführen.

CyLab = nil


 
 

... und Schluss

Ich wünsche allen viel Erfolg und eine Menge Spaß bei der Programmierung mit dem Macintosh, dem CompuLAB-USB, dem CyLab-Treiber und REALbasic. Martijn Plak und ich würden uns über Rückmeldungen freuen. Auch Hinweise auf eventuelle Fehler oder Unstimmigkeiten wären hilfreich bei der Weiterentwicklung.

Ralf Krause
 
 
 
 

Aktualisierungen

30.09.2003

Den Download des aktuellen Treibers für MacOS 9 und MacOS X
findet man unter der Adresse www.plak.net/cylab
 

29.12.2004

Die Programmierung in REALbasic ist seit heute einfacher.
Martin Plak hat ein Plugin veröffentlicht www.plak.net/cylab
 

21.03.2005

Eine aktualisierte und stark erweiterte Version dieses Artikels
findet man unter der Adresse homepage.mac.com/ralf.krause/cylab