Страница 43 из 53
Re: GladeVCP и PyVCP для начинающих
Добавлено: 15 фев 2016, 23:09
Ворон226
Кстати! Если Вы исправили описание adjustment параметра value в файле <имя файла>.glade , то после очередного изменения визуальной панели в Glade Ваши исправления анулируются! Параметр value в adjustment опять встанет на первое место и перестанет корректно отображаться!
Глюк программы? Будет ли исправлен со временем?
Re: GladeVCP и PyVCP для начинающих
Добавлено: 16 фев 2016, 00:32
Serg
Ворон226 писал(а):Будет ли исправлен со временем?
Нет. Эта версия glade давно не поддерживается.
Re: GladeVCP и PyVCP для начинающих
Добавлено: 17 фев 2016, 09:48
Ворон226
А другие версии не поддерживают LinuxCNC?
Re: GladeVCP и PyVCP для начинающих
Добавлено: 17 фев 2016, 10:38
Serg
Точнее LinuxCNC не поддерживает другие версии.
Просто никто до сих пор не переделал виджеты для HAL под современные версии.
Это не очень сложно, но лично мне проще формы в рукопашную писать, чем в glade рисовать.

Re: GladeVCP и PyVCP для начинающих
Добавлено: 15 апр 2016, 10:16
Ворон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 прописал загрузку компонента:
Прописал два пина компонента в теле 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
...
Посоветуйте - где не так?
Re: GladeVCP и PyVCP для начинающих
Добавлено: 15 апр 2016, 11:38
Ворон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"
Re: GladeVCP и PyVCP для начинающих
Добавлено: 15 апр 2016, 12:00
Ворон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) - тоже не хочет (эх, учить мне Питон...)
Re: GladeVCP и PyVCP для начинающих
Добавлено: 15 апр 2016, 12:09
nkp
Ворон226 писал(а):Ругается
первое ,что бросается в глаза - отступы после IF(их отсутствие)
Re: GladeVCP и PyVCP для начинающих
Добавлено: 15 апр 2016, 12:16
Ворон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
Re: GladeVCP и PyVCP для начинающих
Добавлено: 15 апр 2016, 12:24
nkp
в gedit можно "включить" показ отступов...
Geany показывает по умолчанию(хорошая программка вообще)
Re: GladeVCP и PyVCP для начинающих
Добавлено: 15 апр 2016, 12:44
Ворон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
Re: GladeVCP и PyVCP для начинающих
Добавлено: 15 апр 2016, 12:51
Serg
И правльно делает - ты ж сам сказал ему ждать появления компонента skanform.

Re: GladeVCP и PyVCP для начинающих
Добавлено: 15 апр 2016, 12:55
Ворон226
UAVpilot писал(а):И правльно делает - ты ж сам сказал ему ждать появления компонента skanform.

Это тут?
loadusr -Wn skanform python memoryform.py
Re: GladeVCP и PyVCP для начинающих
Добавлено: 15 апр 2016, 12:56
Serg
Да.
P.S. А просто попробовать изменить эту строчку не было-бы быстрее, чем тут спрашивать?..

Re: GladeVCP и PyVCP для начинающих
Добавлено: 15 апр 2016, 12:57
nkp
loadusr -Wn memoryform python memoryform.py
Re: GladeVCP и PyVCP для начинающих
Добавлено: 15 апр 2016, 13:12
Ворон226
Запустилось. Считывает значение из файла.
А вот при появлении сигнала memoryform.write на входе компонента - в файле исчезает число. Просто пустая строка.
Может дело в том, что формат записи не тот? Я пытался записать значение пина, которое в тот момент было равно 111.21
Re: GladeVCP и PyVCP для начинающих
Добавлено: 15 апр 2016, 13:20
nkp
open("/home/sun/linuxcnc/configs/EXT13/st.txt","w") так открывает файл на запись
(перепишет новым значением)
open("/home/sun/linuxcnc/configs/EXT13/st.txt","a") так открывает файл на запись,добавляя в него
может тебе именно добавлять в файл требуется
(пишу "может" ,потому как не представляю - что делает твой компонент

не вникал

)
Re: GladeVCP и PyVCP для начинающих
Добавлено: 15 апр 2016, 13:21
Serg
А число в строку перед записью кто будет преобразовывать?..
Число не исчезает! Файл открывается для записи (затирая содержимое), но записи не происходит т.к. возникает ошибка. Но ты её не видишь т.к. в твоей проге подобные ошибки не обрабатываются, а игнорятся.
P.S. Тяжко тебе будет без знания базовых основ питона...
Re: GladeVCP и PyVCP для начинающих
Добавлено: 15 апр 2016, 14:14
Ворон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 вместо старого значения.
Теперь можно в течение дня прописывать текущие значения счетчика в файл. А при перезагрузки значение из файла прописывается в счетчик общего метража

Всем спасибо!
Re: GladeVCP и PyVCP для начинающих
Добавлено: 04 июн 2016, 22:17
raddd
чего то я туплю навероное...
linuxcnc 2.5 из коробки.
немогу запустить панель gladevcp.
появляется пустая панель и все((
раньше все работало...
или я забыл чего...