@DATABASE "TechnoIO-Commands 2.0"

@NODE MAIN "TechnoIO-Commands 2.0"

               =================================
                       TechnoIO-Commands
                     
                  (C)1996-1999 by  J.Reinert
               =================================

                    @{" Rechtliches           " Link Rechtliches}
                    @{" Produktinformation    " Link Produktinformation}
                    @{" Systemvoraussetzungen " Link Systemvoraussetzungen}
                    @{" Installation          " Link Installation}
                    
                    @{" Befehle               " Link Kommandos}
                    
                    @{" Beispiele             " Link Beispiele}
                    
                    @{" Programmierer         " Link Programmierer}

@ENDNODE

@NODE Rechtliches "Rechtliches"
 
 TechnoIO-Commands sind Bestandteil des TechnoIO-Systems und
 dürfen nicht einzeln verteilt werden. Das komplette Archiv
 befindet sich auf meiner @{" Homepage " Link Programmierer} und evtl. im Aminet.

@ENDNODE

@NODE Produktinformation "Produktinformation"
 
 Da nicht jeder Amiga-Anwender mit der Programmierung des Amiga 
 vertraut ist, habe ich die hier beschriebenen Befehle programmiert.
 Es handelt sich dabei um einfache Befehle, um mit der angeschlossenen
 TechnoIO-Hardware zu kommunizieren. 
 
 Die Befehle können direkt in CLI/Shell genutzt werden oder eingebettet
 in Stapeldateien (DOS-Skripte). ARexx-Programmierer beachten bitte
 das Tool "TechnoIORexx".

@ENDNODE

@NODE Systemvoraussetzungen "Systemvoraussetzungen"
 
 Um die TechnoIO-Commands nutzen zu können, muß Ihr Amiga 
 mindestens folgende Voraussetzungen erfüllen:
 
 
 - Betriebssystem 2.04 oder besser

 - installierte "TechnoIO.library"


 Alle Befehle sind so einfach wie möglich gehalten, weswegen das
 installierte Betriebssystem nicht geprüft wird. Amigas mit
 Kickstart 1.3 werden bei benutzen der Befehle gnadenlos abstürzen.

@ENDNODE

@NODE Installation "Installation"

 Alle Befehle müssen sich in einem Verzeichnis mit eingerichtetem
 Suchpfad befinden. Normalerweise sollten die Befehle bei der In-
 stallation der "TechnoIO.library" bereits an die richtige Stelle
 kopiert worden sein. Wenn nicht, können Sie die Befehle z.B. in
 das Verzeichnis "C" der Workbench-Disk/Partition kopieren.

@ENDNODE

@NODE Kommandos "Befehle"

 Alle TechnoIO-Befehle können nur in einem Shell-Fenster genutzt
 werden. Die Einbindung in Stapel-Dateien (Skripte) ist ebenfalls
 möglich. Die Befehle sind dazu gedacht, Daten über die TechnoIO-
 Hardware auszugeben bzw. von dort zu lesen. Sie sind für all die-
 jenigen gedacht, die nicht selber programmieren. Wer sich mit
 Amiga-Dos Befehle und der Skriptsprache des Amigas auskennt, wird
 die TechnoIO-Befehle sinnvoll einsetzen können.

 Um den Datenaustausch mit der TechnoIO-Hardware besser verstehen
 zu können, sollten Sie auch den Abschnitt @{" Hardware " Link Hardware} lesen.

 Kleine Anwendungsbeispiele finden Sie im Abschnitt @{" Beispiele " Link Beispiele}

      @{" TIO_ReadByte   " Link TIO_ReadByte}
      @{" TIO_ReadWord   " Link TIO_ReadWord}
      @{" TIO_ReadWordS  " Link TIO_ReadWordS}
      @{" TIO_SaveOutput " Link TIO_SaveOutput}
      @{" TIO_Switch     " Link TIO_Switch}
      @{" TIO_SwitchOff  " Link TIO_SwitchOff}
      @{" TIO_SwitchOn   " Link TIO_SwitchOn}
      @{" TIO_TestInput  " Link TIO_TestInput}

@ENDNODE

@NODE TIO_ReadByte "TIO_ReadByte"

 Funktion :     Lesen eines Bytes von der Eingabe-Hardware
 
 Schablone:     TIO_ReadByte MODUL/N
 
 Parameter:     MODUL (Nummerisch) im Bereich 0 bis 63

 Ergebnis :     Ein Wert im Bereich 0 bis 255, welcher das
                gelesene Byte repräsentiert. Der Wert ist der
                ENV-Variable "TIOResult" zu entnehmen.

 Beispiel :     Eingabe> TIO_ReadByte 0
                Eingabe> GetENV TIOResult
                Ausgabe> Eingelesener Wert

                Es werden die Eingangskanäle 0 bis 7 gelesen

 Bemerkung:     Innerhalb von DOS-Skripte kann der gelesene
                Wert der Variable $TIOResult entnommen werden

@ENDNODE

@NODE TIO_ReadWord "TIO_ReadWord"

 Funktion :     Einlesen von zwei aufeinander folgende Bytes von
                der Eingabe-Hardware

 Schablone:     TIO_ReadWord FIRSTMODUL/N

 Parameter:     Nummer des ersten Modules, welches ausgelesen werden 
                soll. Das nächst höhere Modul wird automatisch mit
                ausgelesen 

 Ergebnis :     Ein Wert im Bereich 0 bis 65535, welcher das
                gelesene Wort repräsentiert. Der Wert ist der
                ENV-Variable "TIOResult" zu entnehmen.
                Der Wert vom angegebenen Modul befindet sich
                in den Bits 0 bis 7. Der Wert des nächst höheren
                Modules in den Bits 8 bis 15

 Beispiel :     Eingabe> TIO_ReadWord 2
                Eingabe> GetENV TIOResult
                Ausgabe> Eingelesener Wert

                Es werden die Eingangskanäle 16 bis 31 eingelesen



@ENDNODE

@NODE TIO_ReadWordS "TIO_ReadWordS"

 Funktion :     Einlesen von zwei aufeinander folgende Bytes von
                der Eingabe-Hardware im Synchron-Modus

 Schablone:     TIO_ReadWordS FIRSTMODUL/N

 Parameter:     Nummer des ersten auszulesenden Modules. Das nächst
                höhere Modul wird automatisch mit ausgelesen.

 Ergebnis :     Eine Wert im Bereich 0 bis 65536, welcher das
                gelesene Wort repräsentiert. Der Wert ist der
                ENV-Variable "TIOResult" zu entnehmen.
                Der Wert vom angegebenen Modul befindet sich
                in den Bits 0 bis 7. Der Wert des nächst höheren
                Modules in den Bits 8 bis 15

 Beispiel :     Eingabe> TIO_ReadWordS 0
                Eingabe> GetENV TIOResult
                Ausgabe> Eingelesener Wert

                Es werden die Eingangskanäle 0 bis 15 eingelesen

 Bemerkung:     Im Gegensatz zum Befehl "TIO_ReadWord" wird bei dem
                Befehl "TIO_ReadWordS" auf ein komplettes Datenpaket
                von der Hardware gewartet. Fehlerhafte Übertragung
                durch schlechtes Timing wird dadurch ausgeschlossen.

@ENDNODE

@NODE TIO_SaveOutput "TIO_SaveOutput"

 Funktion :     Speichern des aktuellen Ausgabezustandes

 Schablone:     TIO_SaveOutput

 Parameter:     Keine

 Ergebnis :     Nichts

 Bemerkung:     Es werden alle 64 Ausgabebytes gesichert. Der Datei-
                name ist mit "ENVARC:TechnoIO.OUT" festgelegt. Sobald
                die Library nach erneutem Rechnerstart von einem
                Programm angefordert wird, werden die gespeicherten
                Ausgabezustände wieder hergestellt.


@ENDNODE

@NODE TIO_Switch "TIO_Switch"

 Funktion :     Ein- und ausschalten bestimmter Kanäle

 Schablone:     TIO_Switch ON/S,OFF/S,Channel/N
 
 Parameter:     ON (Schalter)   Ist das Schlüsselwort "ON" angegeben,
                                so wird der betreffende Kanal einge-
                                schaltet

                OFF (Schalter)  Mit diesem Schlüsselwort wird fest-
                                gelegt, das der angegebene Kanal
                                ausgeschaltet werden soll


                Channel (Nummerisch) im Bereich von 0 bis 511. 
                                Gibt an, welcher Kanal beeinflusst
                                werden soll
 
 Ergebnis :     Nichts


 Bemerkung:     Dieser Befehl ist universell einsetzbar. Wird kein
                Kanal angegeben, so werden alle Kanäle ein- bzw.
                ausgeschaltet. Wird kein Schlüsselwort (ON oder OFF)
                angegeben, so wird der angegebene Kanal oder alle
                Kanäle ausgeschaltet.

@ENDNODE

@NODE TIO_SwitchOff "TIO_SwitchOff"

 Funktion :     Ausschalten eines bestimmten Ausgabekanals

 Schablone:     TIO_SwitchOff Channel/N

 Parameter:     Channel (Nummerisch) im Bereich von 0 bis 511. Der
                angegebene Kanal wird auf Null Volt geschaltet

 Ergebnis :     Nichts

 Bemerkung:     Kanal 0 ist der niederwertigste Kanal des ersten Aus-
                gabemodules. Kanal 511 ist der höchstwertigste Kanal
                des 63ten (höchsten) Ausgabemodules



@ENDNODE

@NODE TIO_SwitchOn "TIO_SwitchOn"

 Funktion :     Einschalten eines bestimmten Ausgabekanals

 Schablone:     TIO_SwitchOn Channel/N

 Parameter:     Channel (Nummerisch) im Bereich von 0 bis 511. Der
                angegebene Kanal wird auf +5 Volt geschaltet

 Ergebnis :     Nichts

 Bemerkung:     Kanal 0 ist der niederwertigste Kanal des ersten Aus-
                gabemodules. Kanal 511 ist der höchstwertigste Kanal
                des 63ten (höchsten) Ausgabemodules

@ENDNODE

@NODE TIO_TestInput "TIO_TestInput"

 Funktion :     Prüfen, welchen Logikpegel ein Eingangskanal hat

 Schablone:     TIO_TestInput Channel/N

 Parameter:     Channel (Nummerisch) im Bereich von 0 bis 511. Der
                abgegebene Eingangskanal wird getestet

 Ergebnis :     Wenn der getestete Kanal auf Hi-Pegel liegt, wird das
                WARN-Flag gesetzt. Eine Verwendung dieses Befehls ist
                also nur innerhalb eines Skriptes sinnvoll.
 
 Bemerkung:     Kanal 0 ist der erste Kanal des ersten Ausgabemodules. 
                Kanal 511 ist der letzte Kanal des 63ten (letzten) 
                Ausgabemodules

                Siehe auch im Abschnitt @{" Beispiele " Link Beispiele}

@ENDNODE

@NODE Beispiele "Beispiele"

 In diesem Abschnitt finden Sie einige Skripte, welche die Ver-
 wendung der TechnoIO-Commands demonstrieren. Solche Skripte
 können mit einem Texteditor Ihrer Wahl geschrieben werden. Die
 Beispiele finden Sie auch im Unterverzeichnis "Batch" der
 Installations-Diskette. Diese Beispiele können wie ein Programm
 in einem CLI-Fenster gestartet werden oder durch voranstellen
 des Befehles "Execute".

 Zum schreiben oder ändern eigener Skripte können Sie z.B. den
 Editor "ED" des Amiga-OS verwenden. Öffnen Sie dazu ein Shell-
 Fenster und setzen Sie das aktuelle Verzeichnis auf Ihr Skript-
 verzeichnis. Zum testen empfiehlt sich die RAM-Disk. Geben Sie
 also folgende Zeile in der Shell ein:

        CD RAM:

 Schließen Sie die Eingabe mit der Return-Taste ab. Schreiben
 wir jetzt einmal ein kleines Skript. Es soll die Ausgabekanäle
 0 bis 3 (die ersten vier Kanäle) einschalten. Geben Sie folgende
 Zeilen der Reihe nach ein (Die Texte in Klammern sollen kurz
 erklären, was nach der Eingabe passiert):

        ED Test         (Ein neues Fenster öffnet sich für die
                         Eingabe der nächsten vier Zeilen)
        TIO_SwitchOn 0
        TIO_SwitchOn 1
        TIO_SwitchOn 2
        TIO_SwitchOn 3

 Tippen Sie kurz auf die ESC-Taste (Oben links auf der Tastatur)
 und geben die den Buchstaben "x" gefolgt von der Return-Taste
 ein. Das Skript wird jetzt gespeichert und das Fenster geschlos-
 sen. Gestartet wird das Skript jetzt mit:

        Execute Test

 Die ersten vier Kanäle sollten jetzt eingeschaltet sein. Um das
 Skript wie ein Programm starten zu können, müssen Sie das Skript-
 Flag der Datei setzen:

        Protect Test S Add

 Jetzt kann das Skript durch einfaches eingeben des Namens (ohne
 Execute) gestartet werden.


 !!! WICHTIG !!!

 Damit die Beispiele und eigene Experimente ohne Probleme funktio-
 nieren, müssen sich die TechnoIO-Commands in einem Verzeichnis
 mit eingerichtetem Suchpfad befinden. Der beste Platz ist das
 Unterverzeichnis "C" der Workbench-Partition


@{" TestInput " Link TestInput}
@ENDNODE

@NODE TestInput "TestInput"

 Das folgende Skript testet einen beliebigen Eingangskanal und 
 bibt den logischen Zustand aus. Als Parameter erwartet das
 Skript die Nummer des zu testenden Kanales im Bereich 0 bis 511
 
    Aufruf:     Execute TestInput 3

 Mit der Befehlsfolge wird der Eingang 3 auf Pegel getestet.


 ;---------------- Ab hier ausschneiden ---------------
 ; Programm $VER:TestInput 1.0 (03.01.97)

 .KEY Kanal
 tio_testinput <Kanal>
 if warn
    echo "Eingang <Kanal>=Hi"
 else
    echo "Eingang <Kanal>=Lo"
 endif
 ;---------------- Bis hier ausschneiden --------------

@ENDNODE

@NODE Hardware "Hardware"

 Wie die Hardware genau aufgebaut ist, können Sie den Schaltplänen
 der TechnoIO-Hardware entnehmen. Ich möchte hier nur kurz das
 Prinzip erleutern, damit Sie die von mir geschaffenen Befehle
 gezielt einsetzen können.

 Die TechnoIO-Hardware besteht im Prinzip aus Schieberegister-Bau-
 steinen. Jeder Baustein kann 8 Kanäle bedienen. Damit auch mehr 
 als 8 Kanäle bedienbar sind, können mehrerer dieser Bausteine in 
 Reihe geschaltet werden. Der erste Baustein in der Kette stellt 
 dann die Kanäle 0 bis 7, der zweite die Kanäle 8 bis 15 usw. dar.
 
 Die acht Kanäle eines Bausteines können wir auch als Modul be-
 zeichnen. Der erste Baustein in der Kette ist Modul 0, der Zweite
 das Modul 1 usw. Diese Festlegung ist wichtig, da einige Befehle 
 als Parameter eine Modul-Nummer erwarten. 
 
 Wenn an den Eingangskanälen 8 bis 15 ein 8-Bit Analog-Digital 
 Wandler angeschlossen ist, so kann der Wandler-Wert durch lesen 
 des Modules mit der Nummer 1 ausgelesen werden. Ein A/D-Wandler 
 mit 16 Bit Auflösung könnte z.B. die Eingangskanäle 496 bis 511 
 mit Daten beliefern (Lo-Byte an Modul 510, Hi-Byte an Modul 511).
 Da in diesem Fall zwei Byte eingelesen werden müssen, muss ein
 "ReadWord"-Befehl verwendet werden. Als FIRSTMODUL muss dann der
 Wert 62 angegeben werden. Das Modul Nummer 63 wird automatisch 
 mit ausgelesen, weil es das nächst folgende Modul ist.

 Um möglichst genaue Werte von einem 16-Bit Wandler zu erhalten,
 sollten Sie den Befehl "TIO_ReadWordS" (Synchron-Modus) verwen-
 den. Der Befehle "TIO_ReadWord" arbeitet aber schneller. Der
 Unterschied ist, das der erste Befehl darauf wartet, bis alle
 Eingangskanäle von der Library eingelesen wurden. Dies kann, je
 nach eingestelltem Timing, auch mehrere Sekunden dauern (Einstell-
 bar mit dem Tool "Calibrate-Timer").

 Reine Anwender werden sich fragen, wieso ich den ersten Kanal der
 Hardware mit der Nummer 0 bezeichne und nicht mit 1. Dies liegt
 in der Technik von Computer begründet. Die kleinste Informations-
 einheit ist dort immer 0. Ein Bit (kleinste Informationseinheit)
 kann nur 0 oder 1 sein. Ein Byte (8 Bit zusammengefasst) kann als
 kleinste Information den Wert 0 (Alle Bits sind 0) und als höchsten
 Wert 255 (All 8 Bits sind 1) darstellen. Viele Funktionen der
 "TechnoIO.library" müssen mit Parameter versorgt werden. Diese habe
 ich dem Anwendungs-Programmierer zuliebe so festgelegt, daß er mit
 den ihm gewohnten Werten arbeiten kann. 

@ENDNODE


@NODE Programmierer "Programmierer"

 Urheber von TechnoIO-Commands ist:
  
                     Jürgen Reinert
                     Am Kirchberg 4
                     D-31275 Lehrte

                     Tel   : 05175-3972
                     E-Mail: AC-Techno@T-Online.de

 Schriftliche Anfragen werden nur beantwortet,wenn ein ausreichend
 frankierter Rückumschlag beigelegt wird. Bitte haben Sie dafür
 Verständnis.

@ENDNODE

