SYNOPSIS
halcmd [OPTIONS] [COMMAND [ARG]]
BESCHREIBUNG
halcmd wird verwendet, um die HAL (Hardware Abstraction Layer) über die Befehlszeile zu bearbeiten. halcmd kann optional Befehle aus einer Datei lesen, so dass komplexe HAL-Konfigurationen mit einem einzigen Befehl eingerichtet werden können.
Wenn die Bibliothek readline verfügbar ist, wenn LinuxCNC kompiliert wird, dann bietet halcmd die Bearbeitung und Vervollständigung von Befehlszeilen, wenn es interaktiv ausgeführt wird. Verwenden Sie den Pfeil nach oben, um vorherige Befehle aufzurufen, und drücken Sie Tab, um die Namen von Elementen wie Pins und Signale zu vervollständigen.
OPTIONEN
- -I
-
Bevor Sie die Echtzeitumgebung abbauen, führen Sie einen interaktiven halcmd aus. Gilt nur für halrun. Wenn -I verwendet wird, muss es vor allen anderen Befehlszeilenargumenten stehen.
- -f [<Datei>]
-
Ignoriert Befehle auf der Kommandozeile, nimmt stattdessen Eingaben aus Datei. Wenn Datei nicht angegeben ist, wird die Eingabe von stdin übernommen.
- -i <INI-Datei>
-
Verwendet Variablen aus der angegebenen INI-Datei für Ersetzungen. Siehe SUBSTITUTION weiter unten.
- -k
-
Nach fehlgeschlagenem(n) Befehl(en) weitermachen. Standardmäßig wird bei einem fehlgeschlagenen Befehl angehalten und ein Fehler zurückgegeben.
- -q
-
nur Fehler anzeigen (Standard)
- -Q
-
nichts anzeigen, Befehle lautlos ausführen
- -s
-
Skript-freundlicher Modus. In diesem Modus gibt show keine Titel für die angezeigten Elemente aus. Außerdem werden Modulnamen anstelle von ID-Codes in Pin-, Param- und Funktionsauflistungen gedruckt. Threads werden auf einer einzigen Zeile gedruckt, mit der Thread-Periode, der FP-Verwendung und dem Thread-Namen an erster Stelle, gefolgt von allen Funktionen des Threads in der Reihenfolge ihrer Ausführung. Signale werden in einer einzigen Zeile gedruckt, mit Typ, Wert und Signalname zuerst, gefolgt von einer Liste der mit dem Signal verbundenen Pins, die sowohl die Richtung als auch den Pin-Namen anzeigen.
- -R
-
Freigabe des HAL-Mutex. Dies ist nützlich für die Wiederherstellung, wenn eine HAL-Komponente abgestürzt ist, während sie den HAL-Mutex hielt.
- -v
-
Anzeige der Ergebnisse der einzelnen Befehle
- -V
-
zeigt eine Menge zunächst unnütz erscheinender Information zur Fehlerfindung
- -h [Befehl]
-
einen Hilfebildschirm anzeigen und beenden, zeigt die erweiterte Hilfe zum Befehl an, falls angegeben
KOMMANDOS
Commands tell halcmd what to do. Normally halcmd reads a single command from the command line and executes it. If the -f option is used to read commands from a file, halcmd reads each line of the file as a new command. Anything following # on a line is a comment.
- loadrt Modulname
-
(kurz für "load realItime module") Lädt ein Echtzeit-HAL-Modul namens Modulname. halcmd sucht das Modul in einem zur Kompilierzeit angegebenen Verzeichnis.
In systems with kernel-based realtime support (e.g. RTAI), halcmd calls the linuxcnc_module_helper to load realtime modules. linuxcnc_module_helper is a setuid program and is compiled with a whitelist of modules it is allowed to load. This is currently just a list of LinuxCNC-related modules. The linuxcnc_module_helper execs insmod, so return codes and error messages are those from insmod. Administrators who wish to restrict which users can load these LinuxCNC-related kernel modules can do this by setting the permissions and group on linuxcnc_module_helper appropriately.
In Systemen mit Userspace-basierter Echtzeitunterstützung (z.B. Preempt-RT) und in Systemen ohne Echtzeitunterstützung ruft halcmd das rtapi_app auf, das die Echtzeitumgebung (simulierte Echtzeit, auf Systemen ohne Userspace-Echtzeitunterstützung) erzeugt, falls sie noch nicht existiert, und dann die angeforderte Komponente mit einem Aufruf von dlopen(3) lädt.
- unloadrt Modulename
-
(unload realtime module) Entlädt ein Echtzeit-HAL-Modul namens modname. Wenn modname "all" ist, werden alle derzeit geladenen Echtzeit-HAL-Module entladen. unloadrt funktioniert auch durch Ausführung von linuxcnc_module_helper oder rtapi_app, genau wie loadrt.
- loadusr [flags] UNIX-Befehl
-
(load Userspace component) Executes the given UNIX-command, usually to load a non-realtime component. [flags] may be one or more of:
-
-W - to wait for the component to become ready. The component is assumed to have the same name as the first argument of the command.
-
-n name - to wait for the component, which will have the given name.
-
-w - to wait for the program to exit
-
-i - to ignore the program return value (with -w)
-
- waitusr name
-
(wait for Userspace component) Wartet darauf, dass die Nicht-Echtzeit-Komponente name die Verbindung zur HAL trennt (normalerweise beim Beenden). Die Komponente muss bereits geladen sein. Nützlich am Ende einer HAL-Datei, um zu warten, bis der Benutzer eine Komponente der Benutzeroberfläche schließt, bevor er sie aufräumt und verlässt.
- unloadusr compname
-
(unload Userspace component) Entlädt eine Nicht-Echtzeitkomponente namens compname. Wenn compname "all" ist, werden alle Nicht-Echtzeit-Komponenten entladen. unloadusr> arbeitet, indem es SIGTERM an alle Nicht-Echtzeit-Komponenten sendet.
- unload compname
-
Entlädt eine Nicht-Echtzeitkomponente oder ein Echtzeitmodul. Wenn compname "all" ist, werden alle Nicht-Echtzeit-Komponenten und Echtzeit-Module entladen.
- newsig signame type
-
(OBSOLETE - stattdessen net verwenden) (new signal) Erzeugt ein neues HAL-Signal namens signame, das später zur Verbindung von zwei oder mehr HAL-Komponentenpins verwendet werden kann. type ist der Datentyp des neuen Signals und muss einer von "bit", "s32", "u32" oder "float" sein. Schlägt fehl, wenn ein Signal mit demselben Namen bereits existiert.
- delsig signame
-
(delete signal) Löscht das HAL-Signal signame. Alle Pins, die derzeit mit dem Signal verknüpft sind, werden entkoppelt. Schlägt fehl, wenn signame nicht existiert.
- sets signame value
-
(kurz für set sgnal) Setzt den Wert des Signals signname auf value. Schlägt fehl, wenn signname nicht existiert, wenn es bereits einen Writer hat oder wenn der Wert value kein gültiger Wert ist. Zulässige Werte hängen vom jeweiligen Signaltyp ab.
- stype name
-
(signal type) Ermittelt den Typ des Signals name. Schlägt fehl, wenn name nicht als Signal existiert.
- gets signame
-
(get signal) Ermittelt den Wert des Signals signame. Schlägt fehl, wenn signame nicht existiert.
- linkps pinname [arrow] signame
-
(VERALTET - verwenden Sie stattdessen net) (link pin to signal) Stellt eine Verbindung zwischen einem HAL-Komponentenpin Pin-Name und einem HAL-Signal Sig-Name her. Jeder vorherige Link zu Pin-Name wird unterbrochen. arrow kann "
<=", "=>", "=" sein oder weggelassen werden. halcmd ignoriert Pfeile, aber sie können in Befehlsdateien nützlich sein, um die Richtung des Datenflusses zu dokumentieren. Pfeile sollten nicht in der Befehlszeile verwendet werden, da die Shell versuchen könnte, sie zu interpretieren. Es ist ein Fehler wenn Pin-Name oder Sig-Name nicht vorhanden sind oder wenn diese nicht gleichen Typs sind. - linksp signame [arrow] pinname
-
(VERALTET - verwenden Sie stattdessen net) (link signal to pin) Funktioniert wie linkps, kehrt aber die Reihenfolge der Argumente um. halcmd behandelt beide Link-Befehle genau gleich. Verwenden Sie, was Sie bevorzugen.
- linkpp pinname1 [arrow] pinname2
-
(VERALTET - stattdessen net verwenden) (link pin to pin) Abkürzung für linkps, was das Signal erzeugt (benannt nach dem ersten Pin), verbindet sie dann beide mit diesem Signal. halcmd behandelt dies so, als wäre es: halcmd treats this just as if it were: halcmd newsig pinname1 halcmd linksp pinname1 pinname1 halcmd linksp pinname1 pinname2
- net signame pinname …
-
Erstelle signame, das dem Typ von Pinname entspricht, falls er noch nicht existiert. Verknüpfen Sie dann signame mit jedem Pinname der Reihe nach. Pfeile können wie in linkps verwendet werden. Wenn ein Pin zum ersten Mal mit einem Signal verknüpft wird, erbt der Signalwert den Standardwert des Pins.
- unlinkp pinname
-
(unlink pin) Unterbricht jede vorherige Verbindung zu pinname. Schlägt fehl, wenn pinname nicht vorhanden ist. Ein nicht verknüpfter Pin behält den letzten Wert des Signals, mit dem er verknüpft war.
- setp name value
-
(set parameter oder pin) Setzt den Wert von Parameter oder Pin Name auf Wert. Schlägt fehl, wenn Name nicht als Pin oder Parameter existiert, wenn es sich um einen Parameter handelt, der nicht beschreibbar ist, wenn es ein Pin ist, der ein Ausgang ist, wenn es ein Pin ist, der bereits mit einem Signal verbunden ist, oder wenn Wert kein zulässiger Wert ist. Die zulässigen Werte hängen vom Typ des Pins oder Parameters ab. Existieren sowohl ein Pin als auch ein Parameter mit dem angegebenen Namen, so wird auf den Parameter zugegriffen.
- paramname = Wert
- pinname = Wert
-
Identisch mit setp. Diese alternative Form des Befehls kann bei Verwendung in einer Datei bequemer und lesbarer sein.
- ptype name
-
(parameter oder pin Typ) Liefert den Typ von Parameter oder Pin name. Schlägt fehl, wenn name nicht als Pin oder Parameter vorhanden ist. Existieren sowohl ein Pin als auch ein Parameter mit dem angegebenen Namen, wird der Parameter berücksichtigt.
- getp name
-
(get parameter or pin) Liefert den Typ von Parameter oder Pin name. Schlägt fehl, wenn name nicht als Pin oder Parameter vorhanden ist. Existieren sowohl ein Pin als auch ein Parameter mit dem angegebenen Namen, wird der Parameter berücksichtigt.
- addf functname threadname
-
(add funktion) Fügt die Funktion functname zum Echtzeit-Thread threadname hinzu. functname wird nach allen Funktionen ausgeführt, die zuvor zum Thread hinzugefügt wurden. Schlägt fehl, wenn entweder functname oder threadname nicht existiert, oder wenn sie nicht kompatibel sind.
- initf functname threadname
-
(init function) Registers functname to run once in realtime context on a dedicated init cycle of threadname, before the cyclic function list executes. Intended for one-shot setup that must run in the realtime task (for example EtherCAT slave configuration). Once the init cycle has run, further initf calls on that thread are rejected. Fails if either functname or threadname does not exist.
- delf functname threadname
-
(delete funktion) Entfernt die Funktion functname aus dem Echtzeit-Thread threadname. Schlägt fehl, wenn entweder functname oder threadname nicht existiert, oder wenn functname derzeit nicht Teil von threadname ist.
- start
-
Startet die Ausführung von Echtzeit-Threads. Jeder Thread ruft periodisch alle Funktionen auf, die ihm mit dem Befehl addf hinzugefügt wurden, und zwar in der Reihenfolge, in der sie hinzugefügt wurden.
- stop
-
Stoppt die Ausführung von Echtzeit-Threads. Die Threads werden ihre Funktionen nicht mehr aufrufen.
- show [item]
-
Gibt HAL-Elemente (engl. items) in menschenlesbarem Format auf stdout aus. I<element> kann eines von "comp" (Komponenten), "pin", "sig" (Signale), "param" (Parameter), "funct" (Funktionen), "thread", oder "alias". Der Typ "all" kann verwendet werden, um übereinstimmende Elemente aller vorangegangenen Typen anzuzeigen. Wenn element weggelassen wird, dann gibt show alles aus.
- save [Element]
-
Gibt HAL-Elemente in Form von HAL-Befehlen auf stdout aus. Diese Befehle können in eine Datei umgeleitet und später mit halcmd -f ausgeführt werden, um die gespeicherte Konfiguration wiederherzustellen. Element kann einer der folgenden Werte sein:
"comp" erzeugt einen loadrt-Befehl für die Echtzeitkomponente.
"alias" erzeugt einen alias-Befehl für jede Pin- oder Parameter-Alias-Paarung
"sig" (oder "signal") erzeugt einen newsig-Befehl für jedes Signal, und "sigu" erzeugt einen newsig-Befehl für jedes unverknüpfte Signal (zur Verwendung mit netl und netla).
"link" und "linka" erzeugen beide linkps-Befehle für jede Verbindung. (linka enthält Pfeile, link dagegen nicht.)
"net" und "neta" erzeugen jeweils einen newsig-Befehl für jedes Signal, gefolgt von linksp-Befehlen für jeden Pin, der mit diesem Signal verbunden ist. (neta enthält Pfeile.)
"netl" erzeugt einen net-Befehl für jedes verknüpfte Signal, und "netla" (oder "netal") erzeugt einen ähnlichen Befehl mit Pfeilen.
"param" (oder "parameter) "erzeugt einen setp-Befehl für jeden Parameter.
"thread" erzeugt einen addf-Befehl für jede Funktion in jedem Echtzeit-Thread.
"unconnectedinpins" erzeugt einen setp-Befehl für jeden unverbundenen HAL-Eingangspin.
Wenn item allu ist, tut save das Äquivalent von comp, alias, sigu, netla, param, thread und unconnectedinpins.
Wenn item weggelassen wird (oder all), tut save das Äquivalent von comp, alias, sigu, netla, param und thread.
- source filename.hal
-
Führt die Befehle in Dateiname.hal aus.
- alias type name alias
-
Weist alias als zweiten Namen für den Pin oder Parameter für "Name" zu. Für die meisten Operationen bietet ein Alias einen zweiten einen zweiten Namen, der verwendet werden kann, um auf einen Pin oder Parameter zu verweisen, sowohl der Originalname und der Alias funktionieren. "type" muss B<pin> oder B<param> sein. "name" muss ein bestehender Name oder B<alias> des angegebenen Typs sein. Beachten Sie, dass der Befehl "show" nur den Aliasnamen anzeigt, aber der ursprüngliche Name ist weiterhin gültig und kann in HAL verwendet werden. Die ursprünglichen Namen können weiterhin mit "show all" oder "show alias" angezeigt werden. Bestehende Netze bleiben erhalten, wenn ein Pin-Name aliasiert wird.
- unalias type alias
-
Entfernt jeden Alias aus dem Pin- oder Parameter-Alias. "Typ" muss pin oder param sein, "alias" muss ein vorhandener Name oder alias des angegebenen Typs sein.
- list type [pattern]
-
Prints the names of HAL items of the specified type. type is comp, pin, sig, param, funct, or thread. If pattern is specified it prints only those names that match the pattern, which may be a shell glob. For sig, pin and param, the first pattern may be -tdatatype where datatype is the data type (e.g., float) in this case, the listed pins, signals, or parameters are restricted to the given data type Names are printed on a single line, space separated.
- print [message]
-
Druckt den Dateinamen, die Leinennummer und eine optionale Nachricht. Die Nachricht wird in Anführungszeichen eingeschlossen, wenn sie Leerzeichen enthält.
- lock [all|tune|none]
-
Sperrt HAL bis zu einem gewissen Grad. none - keine Sperre. tune - einige Einstellungen sind möglich (setp und so). all - HAL vollständig gesperrt.
- unlock [all|tune]
-
Schaltet HAL bis zu einem gewissen Grad frei. tune - einige Einstellungen sind möglich (setp und so). all - HAL komplett freigeschaltet.
- status [type]
-
Prints status info about HAL. type is lock, mem, or all. If type is omitted, it assumes all.
- debug [level]
-
Setzt den rtapi-Messaging-Level (siehe man3 rtapi_set_msg_level).
- help [command]
-
Gibt Hilfeinformationen zum Befehl. Wenn Befehl weggelassen wird, dann wird der Befehl mit einer kurzen Beschreibung aufgelistet.
SUBSTITUTION
Nach dem Lesen eines Befehls, aber vor seiner Ausführung, finden mehrere Arten der Variablensubstitution statt.
Umgebungsvariablen
Umgebungsvariablen haben die folgenden Formate:
-
$ENVVAR followed by end-of-line or whitespace
-
$(ENVVAR)
INI-Datei Variablen
INI-Datei-Variablen sind nur verfügbar, wenn eine INI-Datei mit dem Flag halcmd -i angegeben wurde. Sie haben die folgenden Formate:
-
[SECTION]VAR followed by end-of-line or whitespace
-
[SECTION](VAR)
ZEILENFORTSETZUNG
Das Backslash-Zeichen (\) kann verwendet werden, um anzuzeigen, dass die Zeile bis zur nächsten Zeile verlängert wird. Das Backslash-Zeichen muss das letzte Zeichen vor dem Zeilenumbruch sein.
BUGS
Derzeit keine bekannt.
AUTOR
Originalversion von John Kasunich, als Teil des LinuxCNC-Projekts. Jetzt enthält wichtige Beiträge von mehreren Mitgliedern des Projekts.
MELDEN VON FEHLERN
Fehler melden unter https://github.com/LinuxCNC/linuxcnc/issues.
COPYRIGHT
Copyright © 2003 John Kasunich.
Dies ist freie Software; die Kopierbedingungen finden Sie in der Quelle. Es gibt KEINE Garantie; nicht einmal für die MARKTREIFE oder die EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
SIEHE AUCH
halrun(1) — ein einfaches Skript, um eine Echtzeitumgebung zu starten, eine HAL oder eine .tcl Datei zu verarbeiten und optional eine interaktive Befehlssitzung mit halcmd (hier beschrieben) oder haltcl(1) zu starten.