СИНТАКСИС
halcmd [OPTIONS] [COMMAND [ARG]]
ОПИС
Інструмент halcmd використовується для управління HAL (Hardware Abstraction Layer) з командного рядка. halcmd може опціонально читати команди з файлу, що дозволяє налаштовувати складні конфігурації HAL за допомогою однієї команди.
Якщо бібліотека readline доступна під час компіляції LinuxCNC, то halcmd пропонує редагування та автозавершення командного рядка під час інтерактивної роботи. Використовуйте стрілку вгору, щоб викликати попередні команди, та натисніть клавішу Tab, щоб завершити назви елементів, таких як контакти та сигнали.
ВАРІАНТИ
- -I
-
Перш ніж розбирати середовище реального часу, запустіть інтерактивну команду halcmd. Тільки halrun. Якщо використовується -I, він має передувати всім іншим аргументам командного рядка.
- -f [<file>]
-
Ігнорувати команди в командному рядку, натомість отримувати вхідні дані з file. Якщо file не вказано, отримувати вхідні дані з stdin.
- -i <INI file>
-
Використовуйте змінні з вказаного INI-файлу для підстановок. Див. ПІДСТАВКА нижче.
- -k
-
Продовжувати після невдалої команди (команд). За замовчуванням виконується зупинка та повернення повідомлення про невдачу, якщо будь-яка команда завершується невдачею.
- -q
-
відображати лише помилки (за замовчуванням)
- -Q
-
нічого не відображати, виконувати команди безшумно
- -s
-
Режим, зручний для скриптів. У цьому режимі show не виводитиме назви для показаних елементів. Також у списках pin, param та funct замість ідентифікаційних кодів будуть друкуватися назви модулів. Потоки друкуються в одному рядку, спочатку вказуючи період потоку, використання FP та назву, а потім усі функції в потоці в порядку виконання. Сигнали друкуються в одному рядку, спочатку вказуючи тип, значення та ім’я сигналу, а потім список контактів, підключених до сигналу, із зазначенням напрямку та імені контакту.
- -R
-
Звільнити м’ютекс HAL. Це корисно для відновлення після збою компонента HAL під час утримання м’ютексу HAL.
- -v
-
відображати результати кожної команди
- -V
-
відображати багато сміття для налагодження
- -h [command]
-
відобразити екран довідки та вийти, відображає розширену довідку для command, якщо вказано
КОМАНДИ
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 modname
-
(скорочення від "load realtime module") Завантажує HAL-модуль реального часу під назвою modname. halcmd шукає модуль у каталозі, вказаному під час компіляції.
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.
У системах з підтримкою реального часу на основі простору користувача (наприклад, Preempt-RT) та в системах без підтримки реального часу halcmd викликає rtapi_app, який створює середовище реального часу (імітоване реальне час, у системах без підтримки реального часу в просторі користувача), якщо воно ще не існувало, а потім завантажує запитуваний компонент за допомогою виклику dlopen(3).
- unloadrt modname
-
(Модуль unload realtime) Вивантажує модуль HAL реального часу з назвою modname. Якщо modname дорівнює «all», вивантажуються всі завантажені на даний момент модулі HAL реального часу. unloadrt також працює шляхом виконання linuxcnc_module_helper або rtapi_app, так само як і loadrt.
- loadusr [flags] UNIX-command
-
(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 для компонента Userspace) Чекає, поки компонент, що не працює в режимі реального часу, name від’єднається від HAL (зазвичай при виході). Компонент повинен бути вже завантажений. Корисно використовувати в кінці файлу HAL, щоб почекати, поки користувач закриє деякі компоненти інтерфейсу користувача, перш ніж приступити до очищення та виходу.
- unloadusr compname
-
(компонент Userspace) Вивантажує компонент, що не працює в реальному часі, під назвою compname. Якщо compname має значення "all", він вивантажить усі компоненти, що не працюють в реальному часі. unloadusr працює шляхом надсилання SIGTERM усім компонентам, що не працюють в реальному часі.
- unload compname
-
Вивантажує компонент або модуль реального часу, що не працюють у реальному часі. Якщо compname має значення "all", буде вивантажено всі компоненти та модулі реального часу, що не працюють у реальному часі.
- newsig signame type
-
(ЗАСТАРІЛЕ - замість цього використовуйте net) (new signal) Створює новий сигнал HAL під назвою signame, який згодом може бути використаний для з’єднання двох або більше контактів компонентів HAL. type - це тип даних нового сигналу, який повинен бути одним із таких: "bit", "s32", "u32" або "float". Не вдається, якщо сигнал з такою ж назвою вже існує.
- delsig signame
-
(delete signnal) Видаляє signame сигналу HAL. Будь-які контакти, що наразі підключені до сигналу, будуть від’єднані. Не вдається, якщо signame не існує.
- sets signame value
-
(set signal) Встановлює значення сигналу signame на value. Не вдається, якщо signame не існує, якщо він вже має записувач або якщо value не є допустимим значенням. Допустимі значення залежать від типу сигналу.
- stype name
-
(signal type) Отримує тип сигналу name. Не вдається, якщо name не існує як сигнал.
- gets signame
-
(get ssignal) Отримує значення сигналу signame. Не вдається, якщо signame не існує.
- linkps pinname [arrow] signame
-
(ЗАСТАРІЛЕ - замість цього використовуйте net) (link pin to signal) Встановлює зв’язок між контактом компонента HAL pinname та сигналом HAL signame. Будь-який попередній зв’язок з pinname буде розірвано. arrow може бути "
=>", "<=", "<=>" або опущено. halcmd ігнорує стрілки, але вони можуть бути корисними в командних файлах для документування напрямку потоку даних. Стрілки не слід використовувати в командному рядку, оскільки оболонка може спробувати їх інтерпретувати. Не вдається, якщо pinname або signame не існують або якщо вони не є одного типу. - linksp signame [arrow] pinname
-
(ЗАСТАРІЛО - використовуйте замість цього net) (link ssignal до pin) Працює як linkps, але змінює порядок аргументів на зворотний. halcmd обробляє обидві команди link однаково. Використовуйте ту, яка вам більше подобається.
- linkpp pinname1 [arrow] pinname2
-
(ЗАСТАРІЛЕ - використовуйте net замість цього) (link pin до pin) Скорочення для linkps, яке створює сигнал (названий як перший контакт), а потім пов’язує їх обох з цим сигналом. halcmd обробляє це так, ніби це було: halcmd newsig pinname1 halcmd linksp pinname1 pinname1 halcmd linksp pinname1 pinname2
- net signame pinname …
-
Створіть signname відповідно до типу pinname, якщо він ще не існує. Потім послідовно зв’яжіть signame з кожним pinname. Стрілки можна використовувати так само, як у linkps. При першому зв’язуванні контакту з сигналом значення сигналу успадковує значення контакту за замовчуванням.
- unlinkp pinname
-
(unlink pin) Розриває будь-яке попереднє посилання на pinname. Не вдається, якщо pinname не існує. Незв’язаний пін збереже останнє значення сигналу, з яким він був пов’язаний.
- setp name value
-
(set parameter або pin) Встановлює значення параметра або виводу name на value. Не працює, якщо name не існує як вивід або параметр, якщо це параметр, який не можна записувати, якщо це вивід, який є виходом, якщо це вивід, який вже приєднаний до сигналу, або якщо value не є допустимим значенням. Допустимі значення залежать від типу контакту або параметра. Якщо контакт і параметр існують з заданим іменем, виконується дія над параметром.
- paramname = value
- pinname = value
-
Ідентична до setp. Ця альтернативна форма команди може бути зручнішою та читабельнішою при використанні у файлі.
- ptype name
-
(parameter or pin type) Отримує тип параметра або pin name. Не вдається виконати дію, якщо name не існує як pin або параметр. Якщо pin та параметр існують із заданим ім’ям, виконується обробка параметра.
- getp name
-
(get parameter or pin) Отримує значення параметра або pin name. Не вдається, якщо name не існує як pin або параметр. Якщо pin та параметр існують із заданим ім’ям, виконується обробка параметра.
- addf назвафункції названитки
-
(add function) Додає функцію functname до потоку реального часу threadname. functname буде виконуватися після всіх функцій, які були раніше додані до потоку. Не вдається, якщо functname або threadname не існують або якщо вони несумісні.
- 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 назва функції назва потоку
-
(delete function) Вилучає функцію functname з потоку реального часу threadname. Не вдається, якщо functname або threadname не існує, або якщо functname наразі не є частиною threadname.
- початок
-
Запускає виконання потоків реального часу. Кожен потік періодично викликає всі функції, додані до нього командою addf, у порядку їх додавання.
- стій
-
Зупиняє виконання потоків реального часу. Потоки більше не викликатимуть свої функції.
- show [item]
-
Виводить елементи HAL у stdout у форматі, зрозумілому для людини. item може бути одним із таких: "comp" (компоненти), "pin", "sig" (сигнали), "param" (параметри), "funct" (функції), "thread" або "alias". Тип "all" можна використовувати для відображення відповідних елементів усіх попередніх типів. Якщо item опущено, show виведе все.
- save [item]
-
Виводить елементи HAL у stdout у вигляді команд HAL. Ці команди можна перенаправити у файл і згодом виконати за допомогою halcmd -f, щоб відновити збережену конфігурацію. item може бути одним із таких:
"comp" генерує команду loadrt для компонента реального часу.
"alias" генерує команду alias для кожного сполучення псевдонімів виводу або параметра
"sig" (або "signal") генерує команду newsig для кожного сигналу, а "sigu" генерує команду newsig для кожного незв’язаного сигналу (для використання з netl та netla).
Команди «link» та «linka» генерують команди linkps для кожного посилання. (linka містить стрілки, а link — ні.)
"net" та "neta" генерують одну команду newsig для кожного сигналу, а потім команди linksp для кожного виводу, підключеного до цього сигналу. (neta містить стрілки.)
"netl" генерує одну команду net для кожного пов’язаного сигналу, а "netla" (або "netal") генерує подібну команду за допомогою стрілок.
"param" (або "parameter) "генерує одну команду setp для кожного параметра.
"thread" генерує одну команду addf для кожної функції в кожному потоці реального часу.
"unconnectedinpins" генерує команду setp для кожного непідключеного вхідного виводу HAL.
Якщо item має значення allu, save виконує дії, еквівалентні comp, alias, sigu, netla, param, thread та unconnectedinpins.
Якщо item пропущено (або all), save виконує еквівалент comp, alias, sigu, netla, param та thread.
- source filename.hal
-
Виконує команди з файлу.hal.
- alias type name alias
-
Присвоює «alias» як друге ім’я для контакту або параметра «name». Для більшості операцій псевдонім надає друге ім’я, яке можна використовувати для посилання на контакт або параметр, при цьому будуть працювати як оригінальне ім’я, так і псевдонім. «type» має бути pin або param. «name» має бути існуючим ім’ям або alias зазначеного типу. Зверніть увагу, що команда «show» покаже тільки псевдонім, але оригінальне ім’я все ще дійсне для використання в HAL. Оригінальні імена все ще можна побачити за допомогою «show all» або «show alias». Існуючі мережі будуть збережені, коли ім’я контакту буде замінено псевдонімом.
- псевдонім тип псевдонім
-
Вилучає будь-який псевдонім з псевдоніма виводу або параметра. "type" має бути pin або param. "alias" має бути існуючою назвою або псевдонімом зазначеного типу.
- список тип [шаблон]
-
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]
-
Друкує ім’я файлу, номер рядка та необов’язкове повідомлення. За наявності пробілів бере повідомлення в лапки.
- lock [all|tune|none]
-
Блокує HAL певною мірою. none - блокування не виконано. tune - можливе деяке налаштування (setp тощо). all - HAL повністю заблоковано.
- unlock [all|tune]
-
Деякою мірою розблоковує HAL. tune - можливе деяке налаштування (setp тощо). all - HAL повністю розблоковано.
- status [type]
-
Prints status info about HAL. type is lock, mem, or all. If type is omitted, it assumes all.
- debug [level]
-
Встановлює рівень обміну повідомленнями rtapi (див. man3 rtapi_set_msg_level).
- help [command]
-
Надайте довідкову інформацію для команди. Якщо слово «команда» пропущено, перелічіть команду та її короткий опис.
ЗАМІНА
Після зчитування команди, але перед її виконанням, відбувається кілька типів підстановки змінних.
Змінні середовища
Змінні середовища мають такі формати:
-
$ENVVAR followed by end-of-line or whitespace
-
$(ENVVAR)
Змінні INI-файлу
Змінні INI-файлу доступні лише тоді, коли INI-файл було вказано з прапорцем halcmd -i. Вони мають такі формати:
-
[SECTION]VAR followed by end-of-line or whitespace
-
[SECTION](VAR)
ПРОДОВЖЕННЯ ЛІНІЇ
Символ зворотної скісної риски (\) може використовуватися для позначення продовження рядка до наступного. Символ зворотної скісної риски має бути останнім символом перед символом нового рядка.
ПОМИЛКИ
На цей час нічого не відомо.
АВТОР
Оригінальна версія, написана Джоном Касунічем у рамках проєкту LinuxCNC. Тепер включає значний внесок кількох учасників проєкту.
ПОВІДОМЛЕННЯ ПРО ПОМИЛКИ
Повідомляйте про помилки за адресою https://github.com/LinuxCNC/linuxcnc/issues.
АВТОРСЬКЕ ПРАВО
Авторське право © 2003 Джон Касуніч.
Це безкоштовне програмне забезпечення; дивіться вихідний код для умов копіювання. НЕМАЄ ЖОДНИХ гарантій; навіть щодо ТОВАРНОЇ ПРИДАТНОСТІ або ПРИДАТНОСТІ ДЛЯ ПЕВНОЇ МЕТИ.
ДИВІТЬСЯ ТАКОЖ
halrun(1) — зручний скрипт для запуску середовища реального часу, обробки HAL- або .tcl-файлу та, за бажанням, запуску інтерактивного сеансу команд за допомогою halcmd (описано тут) або haltcl(1).