GladeVCP и PyVCP для начинающих
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Кстати! Если Вы исправили описание adjustment параметра value в файле <имя файла>.glade , то после очередного изменения визуальной панели в Glade Ваши исправления анулируются! Параметр value в adjustment опять встанет на первое место и перестанет корректно отображаться!
Глюк программы? Будет ли исправлен со временем?
Глюк программы? Будет ли исправлен со временем?
Хочешь быть счастливым? Будь им!
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Нет. Эта версия glade давно не поддерживается.Ворон226 писал(а):Будет ли исправлен со временем?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
А другие версии не поддерживают LinuxCNC?
Хочешь быть счастливым? Будь им!
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Точнее LinuxCNC не поддерживает другие версии.
Просто никто до сих пор не переделал виджеты для HAL под современные версии.
Это не очень сложно, но лично мне проще формы в рукопашную писать, чем в glade рисовать.
Просто никто до сих пор не переделал виджеты для HAL под современные версии.
Это не очень сложно, но лично мне проще формы в рукопашную писать, чем в glade рисовать.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Вот и дошли у меня руки до твоего совета...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В HAL прописал загрузку компонента:
Код: Выделить всё
loadusr -Wn skanform python memoryform.py
Код: Выделить всё
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 для начинающих
Оказывается я пропустил следующее:
При первом запуске LCNC ругнулся так:
После чего в файле st.txt вместо записи 123 оказалась пустая строка... А уже потом вышло сообщение про пустую строку.
Почему же компонент прописывает пустую строку?
Попробую организовать запись и чтение не по таймеру, а по входным сигналам "read" и "write"
При первом запуске 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Почему же компонент прописывает пустую строку?
Попробую организовать запись и чтение не по таймеру, а по входным сигналам "read" и "write"
Хочешь быть счастливым? Будь им!
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Переделал компонент в такой:
Ругается на строку: init = float(open("/home/sun/linuxcnc/configs/EXT13/st.txt","r").read())
Пробовал её переписать в float(open("/home/sun/linuxcnc/configs/EXT13/st.txt","r").read(init) - тоже не хочет (эх, учить мне Питон...)
Код: Выделить всё
#!/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
Пробовал её переписать в float(open("/home/sun/linuxcnc/configs/EXT13/st.txt","r").read(init) - тоже не хочет (эх, учить мне Питон...)
Хочешь быть счастливым? Будь им!
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
первое ,что бросается в глаза - отступы после IF(их отсутствие)Ворон226 писал(а):Ругается
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Исправил:
Говорит:
Код: Выделить всё
#!/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 для начинающих
в gedit можно "включить" показ отступов...
Geany показывает по умолчанию(хорошая программка вообще)
Geany показывает по умолчанию(хорошая программка вообще)
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
При запуске конфигурации компонент зависает...
Код: Выделить всё
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 для начинающих
И правльно делает - ты ж сам сказал ему ждать появления компонента skanform. 
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Это тут?UAVpilot писал(а):И правльно делает - ты ж сам сказал ему ждать появления компонента skanform.
loadusr -Wn skanform python memoryform.py
Хочешь быть счастливым? Будь им!
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Да.
P.S. А просто попробовать изменить эту строчку не было-бы быстрее, чем тут спрашивать?..
P.S. А просто попробовать изменить эту строчку не было-бы быстрее, чем тут спрашивать?..
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
loadusr -Wn memoryform python memoryform.py
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Запустилось. Считывает значение из файла.
А вот при появлении сигнала memoryform.write на входе компонента - в файле исчезает число. Просто пустая строка.
Может дело в том, что формат записи не тот? Я пытался записать значение пина, которое в тот момент было равно 111.21
А вот при появлении сигнала memoryform.write на входе компонента - в файле исчезает число. Просто пустая строка.
Может дело в том, что формат записи не тот? Я пытался записать значение пина, которое в тот момент было равно 111.21
Хочешь быть счастливым? Будь им!
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
open("/home/sun/linuxcnc/configs/EXT13/st.txt","w") так открывает файл на запись
(перепишет новым значением)
open("/home/sun/linuxcnc/configs/EXT13/st.txt","a") так открывает файл на запись,добавляя в него
может тебе именно добавлять в файл требуется
(пишу "может" ,потому как не представляю - что делает твой компонент
не вникал
)
(перепишет новым значением)
open("/home/sun/linuxcnc/configs/EXT13/st.txt","a") так открывает файл на запись,добавляя в него
может тебе именно добавлять в файл требуется
(пишу "может" ,потому как не представляю - что делает твой компонент
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
А число в строку перед записью кто будет преобразовывать?..
Число не исчезает! Файл открывается для записи (затирая содержимое), но записи не происходит т.к. возникает ошибка. Но ты её не видишь т.к. в твоей проге подобные ошибки не обрабатываются, а игнорятся.
P.S. Тяжко тебе будет без знания базовых основ питона...
Число не исчезает! Файл открывается для записи (затирая содержимое), но записи не происходит т.к. возникает ошибка. Но ты её не видишь т.к. в твоей проге подобные ошибки не обрабатываются, а игнорятся.
P.S. Тяжко тебе будет без знания базовых основ питона...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Всё заработало:
При включении конфигурации переменной init присваивается значение из файла st.txt
При появлении на пине memoryform.write сигнала 1, происходит запись значения h["out"] в файл st.txt вместо старого значения.
Теперь можно в течение дня прописывать текущие значения счетчика в файл. А при перезагрузки значение из файла прописывается в счетчик общего метража
Всем спасибо!
Код: Выделить всё
#!/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
При появлении на пине memoryform.write сигнала 1, происходит запись значения h["out"] в файл st.txt вместо старого значения.
Теперь можно в течение дня прописывать текущие значения счетчика в файл. А при перезагрузки значение из файла прописывается в счетчик общего метража
Всем спасибо!
Хочешь быть счастливым? Будь им!
- raddd
- Почётный участник

- Сообщения: 1564
- Зарегистрирован: 10 фев 2015, 08:50
- Репутация: 540
- Настоящее имя: Alexey Rodionov
- Откуда: Беларусь Минский р-н
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
чего то я туплю навероное...
linuxcnc 2.5 из коробки.
немогу запустить панель gladevcp.
появляется пустая панель и все((
раньше все работало...
или я забыл чего...
linuxcnc 2.5 из коробки.
немогу запустить панель gladevcp.
появляется пустая панель и все((
раньше все работало...
или я забыл чего...
- Вложения
-
- compensz1.zip
- (14 КБ) 265 скачиваний
||||||||||||
||||||||||||
||||||||||||