PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение Nick »

emc2 pyVCP example.png (16984 просмотра) <a class='original' href='./download/file.php?id=765&sid=e0b7b68d8d34dfb02c7aeb3b63e7d29b&mode=view' target=_blank>Загрузить оригинал (20.82 КБ)</a>
Не секрет, что стандартных графических интерфейсов EMC2 не всегда достаточно для удобного решения многих задач. Но модульная компоновка EMC2 добавлять пользовательские элементы управления станком, в том числе из отдельного процесса. Одним из способов задания элементов управления является pyVCP.

К сожалению, документация по pyVCP не очень обширна, а на русском языке практически отсутствует. Поэтому посвятим эту тему работе с pyVCP.

Итак, что же такое pyVCP

PyVCP (Python Virtual Control Panel) программа написанная на python которая использует модули gtk и hal. Значительно упрощает создание графических интерфейсов для hal. Использование pyVCP отделяет создание интерфейса от непосредственного программирования.

Какими возможностями обладает pyVCP

С помощью pyVCP можно контролировать любой параметр HAL в любой момент времени.
PyVCP можкт запускаться как отдельно (standalone) так и интегрировано в другие графические интерфейсы EMC2 например Axis.
...Это не законченный раздел вы можете помочь в его оформлении...

Базовые элементы pyVCP

Label

Простое текстовое поле.

LED

LED это своего рода контрольный диод, служит для индикации состояния конкретного halpin. LED может быть круглым и квадратным.

Texe button

Текстовая кнопка контролирует состояние конкретного halpin. Значение halpin будет равно False до тех пор пака кнопка не будет нажата. После нажатия значение станет True. Текстовая кнопка может только включить halpin.

Checkbutton

Работает так же как и текстовая кнопка, но позволяет включать и выключать halpin. Если checkbutton нажат, то halpin равен True, если отжат, то False.

Radiobutton

Включает только один из набора halpin, остальные делает выключенными.

Number

Отображает число с плавающей запятой (float).

S32

Отображает целое число от −2 147 483 648 до 2 147 483 647. (S32 - signed 32bit int)

Bar

Отображает значение вещественного числа как графически, так и текстом.

Meter

Отображает значение вещественного в виде круговой шкалы.

Spinbox

Задает значение числа с двумя кнопками увеличения и уменьшения. Можно изменять число нажимая на кнопки или навести на Spinbox указатель мышки крутить колесико.

Scale

Задает цело или вещественное число при помощи слайдера. Можно менять перетаскиванием или при помощи колеса мышки.

Dial

Позволяет изменять действительное число с заданной точностью. Отображает число в текстовом виде и в виде "поворотной ручки".

Jogwheel

Позволяет изменять действительное число с заданной точностью. Отображает число в виде "поворотной ручки".

Image Bit

Изменяет картинку в зависимости от состояния конкретного halpin.

Image U32

Изменяет картинку в зависимости от значения целого числа.

Контейнеры

Контейнеры позволяют компоновать различные базовые элементы pyVCP в окне. Если формализовать, то контейнер может содержать только один элемент - либо управляющий элемент либо контейнер. Главное окно это тоже контейнер. Таким образом, чтобы создать три кнопки нам нужно создать горизонтальный контейнер с тремя местами и в каждое место вставить по кнопке. Такой метод компоновки взят напрямую из библиотеки gtk. На первый взгляд кажется не удобным, но поработав чуть-чуть с gtk я признаю ее очень удобной.

Hbox

Горизонтальный контейнер компонует элементы горизонтально.

Vbox

Вертикальный контейнер компонует элементы Вертикально.

Labelframe

Создает рамку с надписью.

Table

Компонует элементы в таблицу. При этом можно объединять ячейки.

Tabs

Cоздает панель со вкладками.

Пример использования pyVCP

Это не законченный раздел вы можете помочь в его оформлении.
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение Lexxa »

Все же я решил сделать имитацию пульта станка.
Дела с PyVCP никогда не имел. Прописать несколько контейнеров внутри одног, чтобы они там лжали в определенной последовательности? Как задать их размер или координаты вершин?
Контейнер внутри контейнера делать?
:bender:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение nkp »

http://www.linuxcnc.org/docview/2.5/html/hal/pyvcp.html
Расположение по порядку располож в XML в соответствии vbox и hbox
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение Lexxa »

Все элементы внутри vbox располагаются вертикально, а внутри hbox - горизонтально, правильно я понимаю?
:bender:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение nkp »

Точно
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение Lexxa »

а как в radiobutton сделать по умолчанию не первую галку?
:bender:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение Nick »

хммм... хороший вопрос...


Кстати, для компоновки виджетов также можно использовать table, если это будет удобнее.
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение Lexxa »

что за table?
:bender:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение Nick »

Ну это как бы hbox умножить на vbox :). Т.е. таблица из виджетов, вот пример (отсюда http://linuxcnc.org/docs/html/hal_pyvcp.html#r1_6_7_5):

Код: Выделить всё

<table flexible_rows="[2]" flexible_columns="[1,4]">
<tablesticky sticky="new"/>
<tablerow/>
    <label>
        <text>" A (cell 1,1) "</text>
        <relief>RIDGE</relief>
        <bd>3</bd>
    </label>
    <label text="B (cell 1,2)"/>
        <tablespan columns="2"/>
    <label text="C, D (cells 1,3 and 1,4)"/> 
<tablerow/>
    <label text="E (cell 2,1)"/>
    <tablesticky sticky="nsew"/>
    <tablespan rows="2"/>
    <label text="'spans\n2 rows'"/>
    <tablesticky sticky="new"/>
    <label text="G (cell 2,3)"/>
    <label text="H (cell 2,4)"/>
<tablerow/> 
    <label text="J (cell 3,1)"/>
    <label text="K (cell 3,2)"/>
    <u32 halpin="test"/>
</table> 
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение Lexxa »

а, понял
:bender:
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение aftaev »

Nick, а где с чего начинать и куды все писать :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
tooshka
Почётный участник
Почётный участник
Сообщения: 1803
Зарегистрирован: 24 окт 2012, 14:26
Репутация: 209
Настоящее имя: Андрей
Откуда: Нижний Новгород
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение tooshka »

aftaev писал(а):Nick, а где с чего начинать и куды все писать
Вот тут почитай
fоrumсnс....../showthread.php?7207-GladeVCP-%E8-PyVCP-%E4%EB%FF-%ED%E0%F7%E8%ED%E0%FE%F9%E8%F5/page2&s=b9451dc936e80e479923aa9b10e3fd47
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение Serg »

tooshka писал(а):Вот тут почитай
http://forumcnc...../showthread.php?7207- ... 9b10e3fd47
Ага! Вот кто у нас продвигает сайты-клоны! Изображение
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
tooshka
Почётный участник
Почётный участник
Сообщения: 1803
Зарегистрирован: 24 окт 2012, 14:26
Репутация: 209
Настоящее имя: Андрей
Откуда: Нижний Новгород
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение tooshka »

UAVpilot писал(а):Ага! Вот кто у нас продвигает сайты-клоны!
Та нет ))) я просто помочь хотел. Набрал в поиске оно и вылезло.
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение Serg »

И решил помочь ему вылезать впереди всех? :)
Лучше вот этому помогай: http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=1875
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
tooshka
Почётный участник
Почётный участник
Сообщения: 1803
Зарегистрирован: 24 окт 2012, 14:26
Репутация: 209
Настоящее имя: Андрей
Откуда: Нижний Новгород
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение tooshka »

Да залет конкретный. Ну что пойду затылок зеленкой мазать))).
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
Аватара пользователя
antoxa-kylibin
Мастер
Сообщения: 786
Зарегистрирован: 22 июн 2017, 13:18
Репутация: 107
Настоящее имя: Антон
Откуда: г. Воронеж
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение antoxa-kylibin »

Народ, такой вопрос. Связи пинов интерфейса pyvcp и hal нужно прописывать в postgui_hal файле? Или можно и в custom.hal например прописать связь нужных пинов hal с пинами pyvcp интерфейса?
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение Сергей Саныч »

antoxa-kylibin писал(а):Связи пинов интерфейса pyvcp и hal нужно прописывать в postgui_hal файле?
Да. Иначе будет ошибка, что пины не существуют.
Кроме того, hal-файлов HALFILE может быть несколько (что удобно), а вот POSTGUI_HALFILE - только один.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
antoxa-kylibin
Мастер
Сообщения: 786
Зарегистрирован: 22 июн 2017, 13:18
Репутация: 107
Настоящее имя: Антон
Откуда: г. Воронеж
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение antoxa-kylibin »

Ага, понял. В доках недавно прочитал что postgui_hal грузится после загрузки пользовательских панелей. Какой из интерфейсов более легковесный pyvcp или gladevcp?
Аватара пользователя
antoxa-kylibin
Мастер
Сообщения: 786
Зарегистрирован: 22 июн 2017, 13:18
Репутация: 107
Настоящее имя: Антон
Откуда: г. Воронеж
Контактная информация:

Re: PyVCP дополнительный интерфейс для EMC2 LinuxCNC

Сообщение antoxa-kylibin »

В pyvcp возможно реализовать такой принцип построения интерфейса: делаются базовые кнопки, при нажатии на которые открываются доп функции в заданной области, сама базовая кнопка при этом зажата. Если на неё ещё раз нажать, то она отжимается и панель пропадает. Ну по типу кнопок jog, auto, mdi в gmoccapy???
Ответить

Вернуться в «LinuxCNC»