Страница 3 из 38
Re: [WIKI] Работа с центроискателем
Добавлено: 14 май 2015, 10:43
verser
nkp писал(а):verser писал(а):Исходники.
self.halcomp = hal.component("probe
_scr")
Упс. Баг. Спасибо. Исправил исходники.
Re: [WIKI] Работа с центроискателем
Добавлено: 14 май 2015, 21:40
nkp
добавление в axis.tcl (/usr/share/axis/tcl/axis.tcl)
Код: Выделить всё
bind . <q> {
${pane_top}.right raise preview
}
нажатие "q" переключает вкладки на предпросмотр ...
пробовал питоном (pyatspi) эмулировать нажатие - упирается

Re: [WIKI] Работа с центроискателем
Добавлено: 14 май 2015, 22:50
Nick
А через .axisrc это никак не сделать?
Re: [WIKI] Работа с центроискателем
Добавлено: 15 май 2015, 01:48
Serg
Можно, вот тут можно подглядеть идею:
Re: Плазморез со смарт-вентиляцией #35 
Re: [WIKI] Работа с центроискателем
Добавлено: 15 май 2015, 07:07
nkp
UAVpilot писал(а):Можно, вот тут можно подглядеть идею
да - вроде так работает (пином переключает вкладки)
сам пин еще куда то нужно прицепить ...
в ~.axisrc:
Код: Выделить всё
def user_enable_preview_tab(*args):
root_window.tk.eval(pane_top + ".right raise preview")
def user_live_update():
if comp["preview-enable"] == 1:
root_window.event_generate("<<enable-preview-tab>>")
root_window.bind("<<enable-preview-tab>>", user_enable_preview_tab)
if hal_present == 1 :
ucomp = hal.component("axisui.user")
ucomp.newpin("preview-enable",hal.HAL_BIT,hal.HAL_IN)
Re: [WIKI] Работа с центроискателем
Добавлено: 15 май 2015, 08:38
Serg
nkp писал(а):в axis:
(создаем новый пин)
Ну что за нафик! Ну для кого я такой красивый пример опубликовал?..

Re: [WIKI] Работа с центроискателем
Добавлено: 15 май 2015, 08:58
verser
UAVpilot писал(а):nkp писал(а):в axis:
(создаем новый пин)
Ну что за нафик! Ну для кого я такой красивый пример опубликовал?..

Я скачал. +1

Re: [WIKI] Работа с центроискателем
Добавлено: 15 май 2015, 09:12
nkp
UAVpilot писал(а):Ну что за нафик! Ну для кого я такой красивый пример опубликовал?.
дык быдлокодер я - не до красот - работало бы исправил
как лучше выключать его(пин) - в начале функции - активируем - в конце деакт. ?
так работает - но в случае ,если выйдем из функции по ошибке(return) - пин останется активным...
(для просмотра содержимого нажмите на ссылку)Код: Выделить всё
def on_ym_released(self, data = None):
# Start yminus.ngc
self.halcomp["ps_enable_tab_preview"] = 1
self.command.mode( linuxcnc.MODE_MDI )
self.command.wait_complete()
self.command.mdi( "O<yminus> call" )
self.stat.poll()
while self.stat.exec_state == 7 or self.stat.exec_state == 3 :
if self.error_poll() == -1:
return
self.command.wait_complete()
self.stat.poll()
print "wait"
print "next"
self.command.wait_complete()
if self.error_poll() == -1:
return
a=self.stat.probed_position
res=float(a[1])-0.5*self.spbtn1_probe_diam.get_value()
self.lb_probe_ym.set_text( "%.4f" % res )
self.lenght_y()
# self.command.mdi( "G0 Y%f" % res)
self.command.wait_complete()
self.command.mode( linuxcnc.MODE_MANUAL )
self.command.wait_complete()
self.halcomp["ps_enable_tab_preview"] = 0
Re: [WIKI] Работа с центроискателем
Добавлено: 15 май 2015, 09:22
verser
nkp писал(а):но в случае ,если выйдем из функции по ошибке(return) - пин останется активным...
отключать пин еще и внутри error_poll()
Re: [WIKI] Работа с центроискателем
Добавлено: 15 май 2015, 09:36
nkp
verser писал(а):отключать пин еще и внутри error_poll()
все случаи не учтешь - я уже несколько раз сталкивался с подобной задачей,когда пин нужно включать
и "тут же" деактивировать...
опять же - время "тут же" должно хватать для уверенного срабатывания...
===============
был бы отдельный вид пинов ,сигнальный :
как кнопка без фиксации

Re: [WIKI] Работа с центроискателем
Добавлено: 15 май 2015, 09:42
Nick
nkp писал(а):все случаи не учтешь - я уже несколько раз сталкивался с подобной задачей,когда пин нужно включать
и "тут же" деактивировать...
oneshot?
Re: [WIKI] Работа с центроискателем
Добавлено: 15 май 2015, 09:49
nkp
вопрос иного плана - непосредственно по работе программы:
пока вожусь с эмулятором(вместо датчика кнопка PYVCP)
заметил - несколько раз уже было :
в итоговом окне показывает результат поиска , а не результат уточнения...
на реальном щупе это трудно уловить ,так как разница между показаниями поиска и уточнения не велика ...
а на эмуляторе можно нажать кнопку когда угодно ...
==========
может конечно это я накуролесил тут , так как переделываю под себя

Re: [WIKI] Работа с центроискателем
Добавлено: 15 май 2015, 09:58
verser
Nick писал(а):все случаи не учтешь
В Gtk есть еще такая штука “leave-notify-event”
The ::leave-notify-event will be emitted when the pointer leaves the widget 's window.
Re: [WIKI] Работа с центроискателем
Добавлено: 15 май 2015, 10:02
Nick
А чего ты для вот этого всего не сделал функицю?
Код: Выделить всё
self.command.mdi( "G91" )
self.command.wait_complete()
self.command.mdi( "G0 X-%f Y-%f" % (self.spbtn1_xy_clearance.get_value(),self.spbtn1_edge_lenght.get_value()) )
self.command.wait_complete()
self.command.wait_complete()
self.command.mdi( "G90" )
self.command.wait_complete()
if self.error_poll() == -1:
return
что-то типо вот такого:
Код: Выделить всё
def gcode(s):
for l in s.split("\n"):
self.command.mdi( l )
self.command.wait_complete()
if self.error_poll() == -1:
return -1
return 0
и потом все это было бы
Код: Выделить всё
s="""G91
G0 X-%f Y-%f
G90"""" % (self.spbtn1_xy_clearance.get_value(),self.spbtn1_edge_lenght.get_value()) )
gcode(s)
Re: [WIKI] Работа с центроискателем
Добавлено: 15 май 2015, 10:08
verser
Nick писал(а):А чего ты для вот этого всего не сделал ... что-то типо вот такого:
Я так только щас научился

Вообще в планах уже стояло подчистить код.
Re: [WIKI] Работа с центроискателем
Добавлено: 15 май 2015, 10:21
Nick
можно в функцию добавить еще и
Код: Выделить всё
self.stat.poll()
while self.stat.exec_state == 7 or self.stat.exec_state == 3 :
if self.error_poll() == -1:
return
self.command.wait_complete()
self.stat.poll()
чтобы можно было использовать и O<xxx> CALL
Re: [WIKI] Работа с центроискателем
Добавлено: 15 май 2015, 10:22
Nick
И можно еще для токарки такой же экранчик сделать, хотя хрен знает нужен он там или нет...
Кстати, при пробе вниз, где остановится щуп? В точке касания по Z или наверх уйдет?
Re: [WIKI] Работа с центроискателем
Добавлено: 15 май 2015, 10:23
nkp
Nick писал(а):nkp писал(а):все случаи не учтешь - я уже несколько раз сталкивался с подобной задачей,когда пин нужно включать
и "тут же" деактивировать...
oneshot?
а как ним пользоваться??
в смысле - как ним изменить состояние пина BIT_OUT ??
Re: [WIKI] Работа с центроискателем
Добавлено: 15 май 2015, 10:31
Nick
хмм... тебе нужен пин в скрипте, который бы можно было бы выставить в 1 одноразово, с уверенностью, что его прочитает другой rt компонент?
тогда сделай любой пин, и просто в while компонента сразу после sleep(1000) (или сколько там обычно стоит?) обнуляй его.
Тогда пин гарантированно провисит этот sleep(1000), и любой rt компонент его схавает. Другое дело, что его может не увидеть другой userspace компонент...
Re: [WIKI] Работа с центроискателем
Добавлено: 15 май 2015, 11:23
verser
Nick писал(а):при пробе вниз, где остановится щуп? В точке касания по Z или наверх уйдет?
Вернется по Z вверх в исходную позицию.