GladeVCP и PyVCP для начинающих

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение Ворон226 »

Кстати! Если Вы исправили описание adjustment параметра value в файле <имя файла>.glade , то после очередного изменения визуальной панели в Glade Ваши исправления анулируются! Параметр value в adjustment опять встанет на первое место и перестанет корректно отображаться!

Глюк программы? Будет ли исправлен со временем?
Хочешь быть счастливым? Будь им!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение Serg »

Ворон226 писал(а):Будет ли исправлен со временем?
Нет. Эта версия glade давно не поддерживается.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение Ворон226 »

А другие версии не поддерживают LinuxCNC?
Хочешь быть счастливым? Будь им!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение Serg »

Точнее LinuxCNC не поддерживает другие версии.

Просто никто до сих пор не переделал виджеты для HAL под современные версии.
Это не очень сложно, но лично мне проще формы в рукопашную писать, чем в glade рисовать. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение Ворон226 »

Nick писал(а):Наверное да, проще всего будет компонент.
Берешь стандартную заготовку:
http://www.cnc-club.ru/wiki/index.php/P ... L_LinuxCNC
Обавляешь два пина float
В загрузку пишешь:

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

init = float(open("///файлик","r").read())
t = time.time()  
В основной цикл пишешь:

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

h["out"] = h["in"] + init
if (t<time.time()): 
 open("/файлик...","w").write(h["out"])
 t = time.time() + 100 #(100 - задержка в секундах)
В принципе - все.
Только "/файлик..." сделай с начальным значением.
Вот и дошли у меня руки до твоего совета...
Написал компонент:

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

#!/usr/bin/python
import hal
import time

h=hal.component("memoryform")
init = float(open("/home/sun/linuxcnc/configs/EXT13/st.txt","r").read())
t = time.time()
h.newpin("in", hal.HAL_FLOAT, hal.HAL_IN)
h.newpin("out", hal.HAL_FLOAT, hal.HAL_OUT)
h.ready()

try:
    while 1:
        time.sleep(1)
        h["out"] = h["in"] + init
        if (t<time.time()):
            open("/home/sun/linuxcnc/configs/EXT13/st.txt","w").write(h["out"])
            t = time.time() + 100
               
except KeyboardInterrupt:
     raise SystemExit
В папочку EXT3 положил файл st.txt со значением 123
В HAL прописал загрузку компонента:

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

loadusr -Wn skanform python memoryform.py
Прописал два пина компонента в теле HAL^

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

net    ct01            memoryform.in
net    ct01m           memoryform.out
При запуске конфигурации получаю вот такое ругательство:

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

Print file information:
RUN_IN_PLACE=no
LINUXCNC_DIR=
LINUXCNC_BIN_DIR=/usr/bin
LINUXCNC_TCL_DIR=/usr/lib/tcltk/linuxcnc
LINUXCNC_SCRIPT_DIR=
LINUXCNC_RTLIB_DIR=/usr/realtime-2.6.32-122-rtai/modules/linuxcnc
LINUXCNC_CONFIG_DIR=
LINUXCNC_LANG_DIR=/usr/share/linuxcnc/tcl/msgs
INIVAR=inivar
HALCMD=halcmd
LINUXCNC_EMCSH=/usr/bin/wish8.5
LINUXCNC - 2.6.4-22-g090bf29
Machine configuration directory is '/home/sun/linuxcnc/configs/EXT13'
Machine configuration file is 'MyGUI.ini'
INIFILE=/home/sun/linuxcnc/configs/EXT13/MyGUI.ini
PARAMETER_FILE=emc.var
TASK=milltask
HALUI=halui
DISPLAY=./mygui
Starting LinuxCNC...
Starting LinuxCNC server program: linuxcncsvr
Loading Real Time OS, RTAPI, and HAL_LIB modules
Starting LinuxCNC IO program: io
Starting HAL User Interface program: halui
Shutting down and cleaning up LinuxCNC...
Killing task linuxcncsvr, PID=2571
Removing HAL_LIB, RTAPI, and Real Time OS modules
Removing NML shared memory segments

Debug file information:
Can not find -sec DISPLAY -var INTRO_GRAPHIC -num 1 
Can not find -sec DISPLAY -var INTRO_TIME -num 1 
Traceback (most recent call last):
  File "memoryform.py", line 6, in <module>
    init = float(open("/home/sun/linuxcnc/configs/EXT13/st.txt","r").read())
ValueError: empty string for float()
MyGUI.hal:76: python exited without becoming ready
...
Посоветуйте - где не так?
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение Ворон226 »

Оказывается я пропустил следующее:
При первом запуске LCNC ругнулся так:

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

Debug file information:
5815
  PID TTY      STAT   TIME COMMAND
Stopping realtime threads
Unloading hal components
Can not find -sec DISPLAY -var INTRO_GRAPHIC -num 1 
Can not find -sec DISPLAY -var INTRO_TIME -num 1 
Traceback (most recent call last):
  File "memoryform.py", line 17, in <module>
    open("/home/sun/linuxcnc/configs/EXT13/st.txt","w").write(h["out"])
TypeError: argument 1 must be string or read-only character buffer, not float
После чего в файле st.txt вместо записи 123 оказалась пустая строка... А уже потом вышло сообщение про пустую строку.
Почему же компонент прописывает пустую строку?
Попробую организовать запись и чтение не по таймеру, а по входным сигналам "read" и "write"
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение Ворон226 »

Переделал компонент в такой:

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

#!/usr/bin/python
import hal
import time

h=hal.component("memoryform")
h.newpin("in", hal.HAL_FLOAT, hal.HAL_IN)
h.newpin("out", hal.HAL_FLOAT, hal.HAL_OUT)
h.newpin("read", hal.HAL_BIT, hal.HAL_IN)
h.newpin("write", hal.HAL_BIT, hal.HAL_IN)
h.ready()

init = 0
try:
    while 1:
        if h['read']==1:
        init = float(open("/home/sun/linuxcnc/configs/EXT13/st.txt","r").read())
        h["out"] = h["in"] + init
            if h['write']==1:
                open("/home/sun/linuxcnc/configs/EXT13/st.txt","w").write(h["out"])
               
except KeyboardInterrupt:
     raise SystemExit
Ругается на строку: init = float(open("/home/sun/linuxcnc/configs/EXT13/st.txt","r").read())
Пробовал её переписать в float(open("/home/sun/linuxcnc/configs/EXT13/st.txt","r").read(init) - тоже не хочет (эх, учить мне Питон...)
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение nkp »

Ворон226 писал(а):Ругается
первое ,что бросается в глаза - отступы после IF(их отсутствие)
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение Ворон226 »

Исправил:

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

#!/usr/bin/python
import hal
import time

h=hal.component("memoryform")
h.newpin("in", hal.HAL_FLOAT, hal.HAL_IN)
h.newpin("out", hal.HAL_FLOAT, hal.HAL_OUT)
h.newpin("read", hal.HAL_BIT, hal.HAL_IN)
h.newpin("write", hal.HAL_BIT, hal.HAL_IN)
h.ready()

init = 0
try:
    while 1:
        if h['read']==1:
            init = float(open("/home/sun/linuxcnc/configs/EXT13/st.txt","r").read())
            h["out"] = h["in"] + init
                if h['write']==1:
                    open("/home/sun/linuxcnc/configs/EXT13/st.txt","w").write(h["out"])
               
except KeyboardInterrupt:
     raise SystemExit
Говорит:

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

Debug file information:
Can not find -sec DISPLAY -var INTRO_GRAPHIC -num 1 
Can not find -sec DISPLAY -var INTRO_TIME -num 1 
  File "memoryform.py", line 18
    if h['write']==1:
    ^
IndentationError: unexpected indent
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение nkp »

в gedit можно "включить" показ отступов...
Geany показывает по умолчанию(хорошая программка вообще)
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение Ворон226 »

При запуске конфигурации компонент зависает...

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

Debug file information:
Can not find -sec DISPLAY -var INTRO_GRAPHIC -num 1 
Can not find -sec DISPLAY -var INTRO_TIME -num 1 
Waiting for component 'skanform' to become ready.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
MyGUI.hal:76: python exited without becoming ready

Хочешь быть счастливым? Будь им!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение Serg »

И правльно делает - ты ж сам сказал ему ждать появления компонента skanform. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение Ворон226 »

UAVpilot писал(а):И правльно делает - ты ж сам сказал ему ждать появления компонента skanform. :)
Это тут?
loadusr -Wn skanform python memoryform.py
Хочешь быть счастливым? Будь им!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение Serg »

Да.

P.S. А просто попробовать изменить эту строчку не было-бы быстрее, чем тут спрашивать?.. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение nkp »

loadusr -Wn memoryform python memoryform.py
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение Ворон226 »

Запустилось. Считывает значение из файла.
А вот при появлении сигнала memoryform.write на входе компонента - в файле исчезает число. Просто пустая строка.
Может дело в том, что формат записи не тот? Я пытался записать значение пина, которое в тот момент было равно 111.21
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение nkp »

open("/home/sun/linuxcnc/configs/EXT13/st.txt","w") так открывает файл на запись
(перепишет новым значением)
open("/home/sun/linuxcnc/configs/EXT13/st.txt","a") так открывает файл на запись,добавляя в него
может тебе именно добавлять в файл требуется
(пишу "может" ,потому как не представляю - что делает твой компонент :) не вникал :thinking: )
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение Serg »

А число в строку перед записью кто будет преобразовывать?..

Число не исчезает! Файл открывается для записи (затирая содержимое), но записи не происходит т.к. возникает ошибка. Но ты её не видишь т.к. в твоей проге подобные ошибки не обрабатываются, а игнорятся.

P.S. Тяжко тебе будет без знания базовых основ питона...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение Ворон226 »

Всё заработало:

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

#!/usr/bin/python
import hal
import time

h=hal.component("memoryform")
h.newpin("in", hal.HAL_FLOAT, hal.HAL_IN)
h.newpin("out", hal.HAL_FLOAT, hal.HAL_OUT)
h.newpin("write", hal.HAL_BIT, hal.HAL_IN)
h.ready()

init = float(open("/home/sun/linuxcnc/configs/EXT13/st.txt","r").read())

try:
    while 1:
        h["out"] = h["in"] + init
        if h['write']==1:
            f = str(h["out"])
            open("/home/sun/linuxcnc/configs/EXT13/st.txt","w").write(f)

except KeyboardInterrupt:
     raise SystemExit
При включении конфигурации переменной init присваивается значение из файла st.txt
При появлении на пине memoryform.write сигнала 1, происходит запись значения h["out"] в файл st.txt вместо старого значения.
Теперь можно в течение дня прописывать текущие значения счетчика в файл. А при перезагрузки значение из файла прописывается в счетчик общего метража ;)
Всем спасибо!
Хочешь быть счастливым? Будь им!
Аватара пользователя
raddd
Почётный участник
Почётный участник
Сообщения: 1564
Зарегистрирован: 10 фев 2015, 08:50
Репутация: 540
Настоящее имя: Alexey Rodionov
Откуда: Беларусь Минский р-н
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение raddd »

чего то я туплю навероное...
linuxcnc 2.5 из коробки.
немогу запустить панель gladevcp.
появляется пустая панель и все((
раньше все работало...
или я забыл чего...
Вложения
compensz1.zip
(14 КБ) 265 скачиваний
||||||||||||
||||||||||||
Ответить

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