У цій документації описано модуль 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")