У цій документації описано модуль hal на Python, який надає API Python для створення та доступу до контактів і сигналів HAL.

1. Базове використання

#!/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. Функції

компонент

+
Сам компонент створюється за допомогою виклику конструктора hal.component. Аргументами є ім’я компонента HAL і (опціонально) префікс, що використовується для імен контактів і параметрів. Якщо префікс не вказано, використовується ім’я компонента.
.Приклад

h = hal.component("passthrough")
newpin

+
Створити новий контакт.
Аргументи: суфікс імені контакту, тип контакту та напрямок контакту. Для параметрів аргументами є: суфікс імені параметра, тип параметра та напрямок параметра.
Приклад:

h.newpin("in", hal.HAL_FLOAT, hal.HAL_IN)
готовий

Повідомляє системі HAL про ініціалізацію компонента. Блокує додавання контактів.

неготовий

Дозволяє компоненту додавати контакти після виклику ready(). Слід викликати ready() на компоненті після цього.

component_exists

Чи існує зазначений компонент на даний момент.

Приклад
hal.component_exists("testpanel")
component_is_ready

Чи готовий зазначений компонент на цей час.

Приклад
hal.component_is_ready("testpanel")
get_msg_level

Отримати поточний рівень повідомлень у реальному часі.

set_msg_level

Встановлює поточний рівень повідомлень у реальному часі, який використовується для налагоджувальної інформації.

connect

Підключіть контакт до сигналу.

Приклад
hal.connect("pinname","signal_name")
відключитися

Від’єднайте контакт від сигналу.

Приклад
hal.disconnect("pinname")
get_value

Зчитувати пін, параметр або сигнал безпосередньо.

Приклад
value = hal.get_value("iocontrol.0.emc-enable-in")
get_info_pins()

Повертає список словників усіх системних пінів.

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()

Повертає список словників усіх системних сигналів.

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

Повертає список словників усіх системних параметрів.

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

Створіть новий сигнал заданого типу.

Приклад
hal.new_sig("signalname",hal.HAL_BIT)
pin_has_writer

Чи підключений до вказаного контакту керуючий контакт?
Повертає значення True або False.

h.in.pin_has_writer()
get_name

Отримати назву об’єкта HAL.
Повернути рядок.

h.in.get_name()
get_type

Отримати тип об’єкта HAL.
Повертає ціле число.

h.in.get_type()
get_dir

Отримати тип напрямку об’єкта HAL.
Повертає ціле число.

h.in.get_dir()
get

Отримати значення об’єкта HAL.

h.in.get()
set

Встановіть значення об’єкта HAL.

h.out.set(10)
is_pin

Об’єкт є PIN-кодом чи параметром?
Повертає True або False.

h.in.is_pin()
sampler_base

TODO

stream_base

TODO

stream

TODO

set_p

Встановіть значення будь-якого виводу в системі HAL.

Приклад
hal.set_p("pinname","10")
set_s

Встановіть значення будь-якого непідключеного сигналу в системі HAL.

Приклад
hal.set_s("signalname","10")