MyGUI

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Nick писал(а):хмм... а чем тебе не нравится подход ngcgui?
Может просто его доделать, например.......
так я ж как раз про это :)
только оргинал на тикле - а я пытаюсь на питоне и glade что то подобное сделать
Nick писал(а):Как ты вызываешь загрузку?
не понял - загрузку чего ...
открываем емс
нажимаем "Открыть" и загружаем наш скрипт,ну примерно такой:
(для просмотра содержимого нажмите на ссылку)

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

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys ,os
import re
import pygtk
import gtk
from gladevcp.gladebuilder import GladeBuilder
import gladevcp
import time
class Widgets:
	def __init__(self, xml):
		self._xml = xml
	def __getattr__(self, attr):
		r = self._xml.get_object(attr)
		if r is None: raise AttributeError, "No widget %r" % attr
		return r
	def __getitem__(self, attr):
		r = self._xml.get_object(attr)
		if r is None: raise IndexError, "No widget %r" % attr
class Test:
	def color (self, data=None):
		i=0
		while i<3:
			self.widgets.button14.modify_bg(gtk.STATE_NORMAL , gtk.gdk.Color('#FF0095'))
			time.sleep(2)
			self.widgets.button14.modify_bg(gtk.STATE_NORMAL , gtk.gdk.Color('#F000FF'))
			time.sleep(2)
			i+=1		
	def open(self, widget, text_filter=None, all_filter=None):
		
		filename=None
		dialog=gtk.FileChooserDialog(title="Open ngcgui_file", action=gtk.FILE_CHOOSER_ACTION_OPEN,
			buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK))		
		if (self.text_filter != None) and (self.all_filter != None):
			dialog.add_filter(self.text_filter)
			dialog.add_filter(self.all_filter)
		dialog.set_current_folder('~/emc2/nc_files')
		response = dialog.run()
#		if response == gtk.RESPONSE_OK:
		self.filename = dialog.get_filename()
#		elif response == gtk.RESPONSE_CANCEL:
#			print 'Cancel open'
		dialog.destroy()
		self.restart1 (self)
		(dirname, fname) = os.path.split(self.filename)
		(self.shortname, extension) = os.path.splitext(fname)
		n=[self.shortname,'.png']
		self.imj=''.join(n)
		if os.path.exists(str(self.imj)):
			self.widgets.image2.set_from_file(str(self.imj))
		else:
			self.widgets.image2.set_from_file('start.jpg')		
		self.update(self)
	def update(self, data=None):		
		f = open(self.filename, "r")
		lines = f.readlines()		
		x=0
		q=0
		while x < len(lines):
			if  re.search("#\d+ *[(*]", lines[x]):
				vel=re.findall('[(][=][-]?.?0?\d*[.]?\d*', lines[x])
#парсим комментарии				
				dat=re.findall('[(].+', lines[x])
				dat1=re.findall('\s+.+', dat[0])
				l=dat1[0]
				dat2=l[:-2]
				if len(dat2) != 0:  
					self.ent1[q].set_text(dat2)
				else:
					self.ent1[q].set_text('')				
				vel1=re.findall('[-]?\d+[.]?\d*', vel[0])
				if len(vel) != 0:  
					self.ent[q].set_text(vel1[0])
				else:
					 self.ent[q].set_text('')
				q+=1
			x+=1
#скрываем незанятые поля			
		t=0
		while t+q < 14 :	
			for r in self.ent :	
				w=self.ent[q+t]	
				w.hide()
			t+=1
		print q,'q'
		tt=0	
		while tt+q < 14 :	
			for k in self.ent1 :	
				wd=self.ent1[q+tt]	
				wd.hide()
			tt+=1		
		self.q=q
		f.close()				
	def make (self,widget, data=None):
		self.d = {
		1:self.widgets.entry1.get_text(),2:self.widgets.entry2.get_text(),
		3:self.widgets.entry3.get_text(),4:self.widgets.entry4.get_text(),
		5:self.widgets.entry5.get_text(),6:self.widgets.entry6.get_text(),
		7:self.widgets.entry7.get_text(),8:self.widgets.entry8.get_text(),
		9:self.widgets.entry9.get_text(),10:self.widgets.entry10.get_text(),
		11:self.widgets.entry11.get_text(),12:self.widgets.entry12.get_text(),
		13:self.widgets.entry13.get_text(),14:self.widgets.entry14.get_text()
		}
		for i  in  range(self.q):
			v=re.findall('[^0-9\-\.]', self.d.get(i+1))    
			if len(v) != 0  or  self.d.get(i+1)=='' or self.d.get(i+1)=='.':
				self.on_info(self)
				self.ent[i].set_text('')
				self.ebox[i].modify_bg(gtk.STATE_NORMAL , gtk.gdk.Color('#8E898D'))
				self.ent[i].grab_focus ()
			else :
				self.ebox[i].modify_bg(gtk.STATE_NORMAL , gtk.gdk.Color('#EDECEB'))
#		self.widgets.button3.modify_bg(gtk.STATE_NORMAL , gtk.gdk.Color('#6F7269'))

	def finish (self, data=None):
		self.cwd = os.getcwd()
		t=[self.cwd,'/ngcgui.ngc']
		self.imj=''.join(t)
		f = open(str(self.imj), "w")
		fname0=re.findall('\w+\.', self.filename)
		fname1=re.findall('\w+', fname0[0])
		ser=' '
		n=['o','<', fname1[0], '>','call', '\n','M2']		
		h=1
		m=5
		while h <= self.q:
			n.insert(m, '[')
			m+=1
			n.insert(m, self.d.get(h))
			m+=1
			n.insert(m, ']') 
			h+=1
			m+=1		
		j=ser.join(n)
		f.write(j)
		sys.stdout.write(j)
		f.close()
		gtk.main_quit()
	def restart1 (self, data=None):
		for i in range(14) :
			w=self.ent[i]
			wd=self.ent1[i]
			wd.show()	
			w.show()	
	def restart (self, data=None):
		for i in range(14) :
			w=self.ent[i]
			wd=self.ent1[i]
			wd.show()	
			w.show()
	def on_info(self, widget):
        	md = gtk.MessageDialog(parent=None, flags=0,
        	  type=gtk.MESSAGE_INFO, buttons=gtk.BUTTONS_CLOSE,
        	  message_format="Ошибка ввода")
        	md.run()
        	md.destroy()
	def image1(self, widget):
		if os.path.exists(str(self.imj)):
			n=[self.shortname,'.png']
			self.imj=''.join(n)
			self.widgets.image2.set_from_file(str(self.imj))
		else:
			self.widgets.image2.set_from_file('start.jpg')
	def image2(self, widget):
		if os.path.exists(str(self.imj)):
			n=[self.shortname,'1.png']
			self.imj=''.join(n)
			self.widgets.image2.set_from_file(str(self.imj))
		else:
			self.widgets.image2.set_from_file('start.jpg')
	def image3(self, widget):
		if os.path.exists(str(self.imj)):
			n=[self.shortname,'2.png']
			self.imj=''.join(n)
			self.widgets.image2.set_from_file(str(self.imj))
		else:
			self.widgets.image2.set_from_file('start.jpg')
	def __init__(self ):		
		self.text_filter=gtk.FileFilter()
		self.text_filter.set_name(".ngc")
#		self.text_filter.add_mime_type("*.ngc")
		self.text_filter.add_pattern("*.ngc")
		
		self.all_filter=gtk.FileFilter()
		self.all_filter.set_name(".All_Files")
		self.all_filter.add_pattern("*")
		self.builder = gtk.Builder()
		self.builder.add_from_file("1.glade")
		self.builder.connect_signals(self)
		self.builder.get_object("window1").maximize()
		self.builder.get_object("window1").show()
		self.widgets = Widgets(self.builder)
		self.ebox=[
			self.widgets .eventbox1,self.widgets .eventbox2,
			self.widgets .eventbox3,self.widgets .eventbox4,
			self.widgets .eventbox5,self.widgets .eventbox6,
			self.widgets .eventbox7,self.widgets .eventbox8,
			self.widgets .eventbox9,self.widgets .eventbox10,
			self.widgets .eventbox11,self.widgets .eventbox12,
			self.widgets .eventbox13,self.widgets .eventbox14]
		self.ent = [
		self.widgets.entry1,self.widgets.entry2,
		self.widgets.entry3,self.widgets.entry4,
		self.widgets.entry5,self.widgets.entry6,
		self.widgets.entry7,self.widgets.entry8,
		self.widgets.entry9,self.widgets.entry10,
		self.widgets.entry11,self.widgets.entry12,
		self.widgets.entry13,self.widgets.entry14
		]
		self.ent1 = [
		self.widgets.entry15,self.widgets.entry16,
		self.widgets.entry17,self.widgets.entry18,
		self.widgets.entry19,self.widgets.entry20,
		self.widgets.entry21,self.widgets.entry22,
		self.widgets.entry23,self.widgets.entry24,
		self.widgets.entry25,self.widgets.entry26,
		self.widgets.entry27,self.widgets.entry28
		]
		self.widgets.image2.set_from_file('1.gif')
		self.widgets.image1.set_from_file('1.png')
		self.widgets.image3.set_from_file('1.png')
		self.widgets.window1.modify_bg(gtk.STATE_NORMAL , gtk.gdk.Color('#C3C8D2'))	
		self.widgets.entry23.modify_bg(gtk.STATE_NORMAL , gtk.gdk.Color('#C3C8D2'))
if __name__ == "__main__":
	main = Test()
	gtk.main()
	
он делает там все свои дела и выдает в sys.stdout О-код примерно такого вида:

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

o < 1sfer > call [ 30 ] [ 20 ] [ 10 ] [ 1 ] [ 0 ] [ 8 ] [ 400 ] 
 M2
вот этот код емс и загружает себе в работу(для этого в ини еще фильтр подправляем при надобности)
так у меня проблема - что емс этот код вроде бы не загружает по вышеописанной последовательности
но если жмем "перегрузить" - то все пучком...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: MyGUI

Сообщение Nick »

А попробуй сразу за открыть вызвать reload
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Lexxa,а ты пробовал вживую feed-override на аналоге 7и77 ???
4 резистора поставил на делители : feed-override,spindle-override,скорость перемещений, ручная смена инструмента.
(последний работает не в режиме регулятора - а в режиме выбора)
а вот для подачи попробовал как ты писал:
(для просмотра содержимого нажмите на ссылку)

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

loadrt limit1
addf limit1.0 servo-thread
setp limit1.0.min 0
setp limit1.0.max 12
net feed-override-in hm2_5i25.0.7i77.0.0.analogin0 => limit1.0.in
#feed override percentage = counts X scale
setp halui.feed-override.counts 10
net feed-override-lim limit1.0.out => halui.feed-override.scale
но на выходе (halui.spindle-override.value ) - 0
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

nkp, еще нет пока, не до этого

Но вообще-то странно, поскольку уж как минимум 10 то должно быть.
А меняется ли выход с lim?
:bender:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

пробовал по разному
и с лимит и без...
Снимок.png (2240 просмотров) <a class='original' href='./download/file.php?id=10556&mode=view' target=_blank>Загрузить оригинал (31.97 КБ)</a>
может НГ помехой тому был...)))))
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: MyGUI

Сообщение Nick »

Мне вот это не нравится:
halui.feed-override.decrease bit in
pin for decreasing the FO (-=scale)

halui.feed-override.increase bit in
pin for increasing the FO (+=scale)

halui.feed-override.scale float in
pin for setting the scale on changing the FO

Не значит ли это, что scale используется для increase/decrease? Может добавить простой sum2 и сделать все через него?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Nick писал(а):Может добавить простой sum2 и сделать все через него?
а что в итоге нам это даст??
чем это выгодней чем conv-float-s32 ???
------------------------------
чтоб "растянуть" шкалу мне нужно установить один из множителей в 0.0571
опять та же засада - halui.feed-override.counts только s32
зы при feed-override.counts равным 0
value равен 1:
Снимок-2.png (2219 просмотров) <a class='original' href='./download/file.php?id=10568&mode=view' target=_blank>Загрузить оригинал (22.96 КБ)</a>
???????
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

Короче вот так вот работает:
hal (для просмотра содержимого нажмите на ссылку)

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

loadrt limit1
loadrt conv_float_s32

addf conv-float-s32.0 servo-thread
addf limit1.0 servo-thread

setp limit1.0.min 0
setp limit1.0.max 120
net feed-override-in pyvcp.anaout => limit1.0.in
#feed override percentage = counts X scale
setp halui.feed-override.count-enable true
setp    halui.feed-override.direct-value true
setp halui.feed-override.scale 0.01

net feed-override-lim limit1.0.out => conv-float-s32.0.in
net feed-override-lim-s32 conv-float-s32.0.out => halui.feed-override.counts
net feed-override-lim => pyvcp.fo-bar.in
net feed-ovveride-val halui.feed-override.value => pyvcp.fo-bar.val
проверял на pyvcp: (для просмотра содержимого нажмите на ссылку)
<pyvcp>
<vbox>
<bar>
<halpin>"fo-bar.in"</halpin>
<min_>0</min_>
<max_>120</max_>
<bgcolor>"grey"</bgcolor>
<fillcolor>"red"</fillcolor>
</bar>
<bar>
<halpin>"fo-bar.val"</halpin>
<min_>0</min_>
<max_>1.20</max_>
<bgcolor>"grey"</bgcolor>
<fillcolor>"green"</fillcolor>
</bar>
<dial>
<size>180</size>
<cpr>100</cpr>
<min_>0</min_>
<max_>120</max_>
<text>"feed override"</text>
<initval>0</initval>
<resolution>1</resolution>
<halpin>"anaout"</halpin>
<dialcolor>"yellow"</dialcolor>
<edgecolor>"green"</edgecolor>
<dotcolor>"black"</dotcolor>
</dial>
</vbox>
</pyvcp>
Вопрос, как сделать, чтоб при включении емс сразу ставила такую подачу (в независимости от интерфейса)?
Вложения
Снимок-axis.ngc - AXIS 2.5.1-176-gb42f8ca on LinuxCNC-DEMO-SIM-CL.png (2215 просмотров) <a class='original' href='./download/file.php?id=10574&mode=view' target=_blank>Загрузить оригинал (87.25 КБ)</a>
:bender:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: MyGUI

Сообщение Nick »

Lexxa писал(а):Вопрос, как сделать, чтоб при включении емс сразу ставила такую подачу (в независимости от интерфейса)?
Какую "такую"? В смысле чтобы при включении feedoverride всегда был на определенном значении?
И что значит вне зависимости от интерфейса?
Если к пину подключен пин pyvcp или gladevcp, то надо ставить их средствами, если ничего не подключено - то setp halui.feed-override.counts 28
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

да) такую какая установлена на halui.feed-override.value.
При запуске ЕМС ставит подачу 100% и стоит чуть шевельнуть FO, как она ставится ноль, 10 итд, но скачко со 100%.
Незаисимость от интерфейса - значит, чтоб хоть в keystrick хоть в touchy хоть в axis хоть в MyGUI
:bender:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: MyGUI

Сообщение Nick »

попробуй запихать setp halui.feed-override.counts 28 в postgui.hal.
Правда не уверен, что его будут все интерфейсы запускать именно так...
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

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

Re: MyGUI

Сообщение Nick »

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

Re: MyGUI

Сообщение Lexxa »

да. цепочка вообще такая
pyvcp.dial(float) -> lim1(float) -> conv_float_s32(s32) -> halui.feed-override.count(s32)
:bender:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: MyGUI

Сообщение Nick »

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

Re: MyGUI

Сообщение Lexxa »

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

Re: MyGUI

Сообщение Nick »

А какие значения при этом на пинах? Посмотри в hal show, так можно будет определить, кто именно не поменял значение.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Lexxa писал(а):Незаисимость от интерфейса - значит, чтоб хоть в ........ хоть в MyGUI
в mygui все работает как ты сказал
и ничего особого там не надо
сейчас еще раз проверил - да - на выключенном пульте установил процентов на 30 - включил - запустил программу - так и есть
(для просмотра содержимого нажмите на ссылку)

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

loadrt hal_parport cfg="0x0378 in b400 in  9c00 in "
addf parport.0.read base-thread 1
addf parport.0.write base-thread -1 
addf parport.1.read base-thread 1
addf parport.1.write base-thread -1
addf parport.2.read base-thread 1
addf parport.2.write base-thread -1
net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in
net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
####################################################################################################################################
net migz parport.0.pin-01-out  classicladder.0.out-03   #мигаем z
net migx parport.1.pin-17-out  classicladder.0.out-07 
net migz1 parport.1.pin-16-out  classicladder.0.out-13 
net migx1 parport.1.pin-14-out  classicladder.0.out-12
net zm parport.0.pin-11-in-not  classicladder.0.in-08
net xm parport.1.pin-13-in-not  classicladder.0.in-10
net zp parport.1.pin-09-in-not  classicladder.0.in-12
net xp parport.1.pin-08-in-not  classicladder.0.in-13
net z_home  halui.joint.0.home  classicladder.0.out-00
net x_home  halui.joint.2.home  classicladder.0.out-04
net is_z_home  halui.joint.0.is-homed  classicladder.0.in-09
net is_x_home  halui.joint.2.is-homed  classicladder.0.in-11
loadrt encoder num_chan=2
loadrt mult2 count=2
addf mult2.0 servo-thread
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
setp encoder.0.position-scale 1
loadrt mux2 count=1
addf mux2.0  servo-thread

setp mux2.0.in0 100
setp mux2.0.in1 500
net out   mux2.0.out halui.jog-speed 
net sel  mux2.0.sel   classicladder.0.out-14 parport.1.pin-01-out  #кнопка ускор ход
setp mult2.0.in0  100
setp halui.feed-override.scale 0.0571
net enc.0-a => encoder.0.phase-A =>  parport.1.pin-04-in
net enc.0-b => encoder.0.phase-B =>  parport.1.pin-12-in
net mult halui.feed-override.value  mult2.0.in1 


#8888888888888888888888888888888888888888888888888888888888888888888888888888888
#net feed-override-in hm2_5i25.0.7i77.0.0.analogin0 => halui.feed-override.scale
#setp halui.feed-override.counts 0

#88888888888888888888888888888888888888888888888888888888888888888888
loadrt conv_float_s32  count=2
addf conv-float-s32.0 servo-thread
addf conv-float-s32.1 servo-thread
net conv conv-float-s32.0.in hm2_5i25.0.7i77.0.0.analogin0
net feed_an halui.feed-override.counts   conv-float-s32.0.out  

net jog_x_plus halui.jog.0.plus classicladder.0.out-05
net jog_z_plus halui.jog.2.minus classicladder.0.out-01
net jog_x_minus halui.jog.0.minus classicladder.0.out-09 
net jog_z_minus halui.jog.2.plus classicladder.0.out-11
#================================================================================ max_vel
setp halui.max-velocity.scale 0.0571
net conv1 conv-float-s32.1.in   hm2_5i25.0.7i77.0.0.analogin1
net feed_an1  halui.max-velocity.counts   conv-float-s32.1.out 

######################
loadrt mux4 count=1
addf mux4.0  servo-thread
setp mux4.0.in0 1
setp mux4.0.in1 0.1
setp mux4.0.in2 0.01
setp axis.0.jog-enable 1
setp axis.2.jog-enable 1
net max_out  mux4.0.out   halui.jog.0.increment  halui.jog.2.increment  
net sel0  mux4.0.sel0   parport.1.pin-03-in-not 
net sel1  mux4.0.sel1   parport.1.pin-02-in-not 
net inc_jog_x_plus      halui.jog.0.increment-plus    classicladder.0.out-06 
net inc_jog_z_plus      halui.jog.2.increment-plus    classicladder.0.out-10
net inc_jog_x_minus     halui.jog.0.increment-minus   classicladder.0.out-08 
net inc_jog_z_minus     halui.jog.2.increment-minus   classicladder.0.out-02
net no_inc_jog_x    axis.0.kb-jog-active  classicladder.0.in-14  classicladder.0.in-17 #блокоровка повторн нажатия стрелки при ijog
net no_inc_jog_z    axis.2.kb-jog-active  classicladder.0.in-15  classicladder.0.in-16
net no_rapid_butt   parport.0.pin-03-in-not  classicladder.0.in-18 #блокир кн быстр хода
#----------------------------------------mpg
addf mult2.1 servo-thread
setp   encoder.1.position-scale 1
net enc.1-a =>  parport.0.pin-13-in =>   encoder.1.phase-A 
net enc.1-b => parport.0.pin-08-in =>    encoder.1.phase-B
setp axis.0.jog-vel-mode 0
setp axis.2.jog-vel-mode 0
net pend-counts  encoder.1.counts axis.0.jog-counts axis.2.jog-counts
net mpg-x-in    parport.1.pin-11-in-not  classicladder.0.in-19   
net mpg-z-in    parport.1.pin-15-in-not  classicladder.0.in-20  
net mpg-x-out  classicladder.0.out-15   axis.0.jog-enable
net mpg-z-out  classicladder.0.out-16   axis.2.jog-enable
setp mult2.1.in0 0.25
net  max_out  mult2.1.in1 
net  jog-scal   mult2.1.out   axis.0.jog-scale   axis.2.jog-scale
###################################################################################################################################




#net analog axis.0.joint-vel-cmd  hm2_5i25.0.7i77.0.1.analogout0
#setp hm2_5i25.0.7i77.0.1.analogena 1
standard_pinout.hal
(4.75 КБ) 1025 скачиваний
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

добавляю режим Step
создал пин ,к нему прицепил функцию :

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

	def step(self,widget):
		self.c.auto(linuxcnc.AUTO_STEP)	
но так как

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

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

Re: MyGUI

Сообщение Nick »

nkp писал(а):connect("value-changed"
А к кому цепляешь, к кнопке?
Ответить

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