Diese Dokumentation beschreibt das hal Python-Modul, das eine Python-API für die Erstellung und den Zugriff auf HAL-Pins und -Signale bereitstellt.

1. Grundlegende Verwendung (engl. basic usage)

#!/usr/bin/env python3
import hal, time
h = hal.component("passthrough")
h.newpin("in", hal.HAL_FLOAT, hal.HAL_IN)
h.newpin("out", hal.HAL_FLOAT, hal.HAL_OUT)
h.ready()

2. Funktionen

Komponente

+ Die Komponente selbst wird durch einen Aufruf des Konstruktors hal.component erzeugt. Die Argumente sind der HAL-Komponentenname und (optional) das für Pin- und Parameternamen verwendete Präfix. Wird das Präfix nicht angegeben, wird der Komponentenname verwendet.
.Beispiel

h = hal.component("passthrough")
newpin

+
Erstellen eines neuen Pins.
Argumente: Suffix des Pin-Namens, Pin-Typ und Pin-Richtung. Bei Parametern lauten die Argumente: Parameternamenssuffix, Parametertyp und Parameterrichtung.
.Beispiel:

h.newpin("in", hal.HAL_FLOAT, hal.HAL_IN)
ready (engl. für bereit)

Sagt dem HAL-System, dass die Komponente initialisiert ist. Sperrt das Hinzufügen von Pins.

unready (engl. für nicht bereit)

Ermöglicht es einer Komponente, Pins hinzuzufügen, nachdem ready() aufgerufen wurde. Man sollte ready() auf der Komponente danach aufrufen.

component_exists

Existiert die angegebene Komponente zu diesem Zeitpunkt.

Beispiel
hal.component_exists("testpanel")
component_is_ready (engl. für Komponente ist bereit)

Ist die angegebene Komponente zu diesem Zeitpunkt bereit.

Beispiel
hal.component_is_ready("testpanel")
get_msg_level

Abfrage der aktuellen Echtzeit-Nachrichten (engl. kurz msg)-Stufe.

set_msg_level

Legen Sie die aktuelle Echtzeit-MSG-Stufe fest. Wird zum Debuggen von Informationen verwendet.

connect

Verbinden Sie einen Pin mit einem Signal.

Beispiel
hal.connect("pinname","signal_name")
disconnect (engl. für trennen)

Trennen Sie einen Pin von einem Signal.

Beispiel
hal.disconnect("Pinname")
get_value

Lesen Sie einen Pin, einen Parameter oder ein Signal direkt.

Beispiel
value = hal.get_value("iocontrol.0.emc-enable-in")
get_info_pins()

Gibt eine Liste von Dicts aller Systempins zurück.

listOfDicts = hal.get_info_pins()
pinName1 = listOfDicts[0].get('NAME')
pinValue1 = listOfDicts[0].get('VALUE')
pinType1 = listOfDicts[0].get('TYPE')
pinDirection1 = listOfDicts[0].get('DIRECTION')
get_info_signals()

Gibt eine Liste von Dicts aller Systemsignale zurück.

listOfDicts = hal.get_info_signals()
signalName1 = listOfDicts[0].get('NAME')
signalValue1 = listOfDicts[0].get('VALUE')
driverPin1 = listOfDicts[0].get('DRIVER')
get_info_params()

Gibt eine Liste von Dicts mit allen Systemparametern zurück.

listOfDicts = hal.get_info_params()
paramName1 = listOfDicts[0].get('NAME')
paramValue1 = listOfDicts[0].get('VALUE')
paramDirection1 = listOfDicts[0].get('DIRECTION')
new_sig

Erstellt ein neues Signal des angegebenen Typs.

Beispiel
hal.new_sig("signalname",hal.HAL_BIT)
pin_has_writer

Ist der angegebene Pin mit einem treibenden Pin verbunden.
Gibt True oder False zurück.

h.in.pin_has_writer()
get_name

Ermittelt den Namen des HAL-Objekts.
Rückgabe einer Zeichenkette.

h.in.get_name()
get_type

Ermittelt den Typ des HAL-Objekts'.
Gibt eine ganze Zahl zurück.

h.in.get_type()
get_dir

Ermittelt den Richtungstyp des HAL-Objekts.
Gibt eine ganze Zahl zurück.

h.in.get_dir()
get

Ermittelt den Wert des HAL-Objekts.

h.in.get()
set

Setzt den Wert des HAL-Objekts.

h.out.set(10)
is_pin

Ist das Objekt ein Pin oder Parameter?
Gibt True oder False zurück.

h.in.is_pin()
sampler_base

TODO

stream_base

TODO

stream

TODO

set_p

Einstellen eines Pin-Wertes eines beliebigen Pins im HAL-System.

Beispiel
hal.set_p("pinname","10")