Skip to content

Commit 6efcfb2

Browse files
committed
halui -add mpg_select0 pin
Some GUIs use the MPG for other things then jogging. Qtdragon uses MPG for scrolling and needs a selected pin.
1 parent c618589 commit 6efcfb2

2 files changed

Lines changed: 46 additions & 5 deletions

File tree

lib/python/bridgeui/bridge.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def __init__(self, readAddress = "tcp://127.0.0.1:5690",
4545

4646
self.currentSelectedAxis = 'None'
4747
self.axesSelected = {'X':0,'Y':0,'Z':0,'A':0,'B':0,'C':0,
48-
'U':0,'V':0,'W':0}
48+
'U':0,'V':0,'W':0,'MPG0':0}
4949
self.readAddress = readAddress
5050
self.writeAddress = writeAddress
5151
LOG.debug('read port: {}'.format(readAddress))
@@ -108,7 +108,7 @@ def readMsg(self):
108108

109109
# set our variables from messages from hal_glib
110110
def action(self, msg, data):
111-
LOG.debug('{} {}'.format(msg, data))
111+
LOG.debug('{} -> {} -> {}'.format(msg, data, data[0]))
112112
if msg == 'jograte-changed':
113113
self.jogRate = float(data[0])
114114
elif msg == 'jograte-angular-changed':
@@ -120,7 +120,14 @@ def action(self, msg, data):
120120
elif msg == 'joint-selection-changed':
121121
self.activeJoint = int(data[0])
122122
elif msg == 'axis-selection-changed':
123+
print ('pre axis state', self.axesSelected,self.currentSelectedAxis)
123124
flag = 1
125+
if data[0] == 'MPG0':
126+
self.currentSelectedAxis = data[0]
127+
flag = 0
128+
self.axesSelected['MPG0'] = True
129+
else:
130+
self.axesSelected['MPG0'] = False
124131
for i in(self.INFO.AVAILABLE_AXES):
125132
if data[0] == i:
126133
state = True
@@ -129,9 +136,10 @@ def action(self, msg, data):
129136
else:
130137
state = False
131138
self.axesSelected[i] = int(state)
139+
132140
if flag:
133141
self.currentSelectedAxis = 'None'
134-
#print ('axis state', self.axesSelected)
142+
print ('axis state', self.axesSelected,self.currentSelectedAxis)
135143

136144
# send msg to hal_glib
137145
def writeMsg(self, msg, data):
@@ -198,18 +206,25 @@ def getSelectedAxis(self):
198206
name = self.currentSelectedAxis
199207
if name == 'None':
200208
index = -1
209+
elif name =='MPG0':
210+
index = 100
201211
else:
202212
index = 'XYZABCUVW'.index(name)
203213
return index
204214
def setSelectedAxis(self, value):
205215
if value < 0:
206216
letter = 'None'
217+
elif value == 100:
218+
letter = 'MPG0'
207219
else:
208220
letter ='XYZABCUVW'[value]
209221
self.writeMsg('set_selected_axis', letter)
210222

211223
def isAxisSelected(self, index):
212-
letter = 'XYZABCUVW'[index]
224+
if index == 100:
225+
letter = 'MPG0'
226+
else:
227+
letter = 'XYZABCUVW'[index]
213228
return int(self.axesSelected[letter])
214229

215230
def __getitem__(self, item):

src/emc/usr_intf/halui.cc

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ static int axis_mask = 0;
140140
\
141141
ARRAY(hal_bit_t,joint_nr_select,EMCMOT_MAX_JOINTS) /* nr. of pins to select a joint */ \
142142
ARRAY(hal_bit_t,axis_nr_select,EMCMOT_MAX_AXIS) /* nr. of pins to select a axis */ \
143+
FIELD(hal_bit_t,mpg_select0)\
143144
\
144145
ARRAY(hal_bit_t,joint_is_selected,EMCMOT_MAX_JOINTS) /* nr. of status pins for joint selected */ \
145146
ARRAY(hal_bit_t,axis_is_selected,EMCMOT_MAX_AXIS) /* nr. of status pins for axis selected */ \
@@ -1032,6 +1033,9 @@ int halui_hal_init(void)
10321033
if (retval < 0) return retval;
10331034
}
10341035

1036+
retval = halui_export_pin_IN_bit(&(halui_data->mpg_select0), "halui.mpg-select.0");
1037+
if (retval < 0) return retval;
1038+
10351039
retval = hal_pin_bit_newf(HAL_IN, &(halui_data->joint_home[num_joints]), comp_id, "halui.joint.selected.home");
10361040
if (retval < 0) return retval;
10371041
retval = hal_pin_bit_newf(HAL_IN, &(halui_data->joint_unhome[num_joints]), comp_id, "halui.joint.selected.unhome");
@@ -1759,6 +1763,7 @@ static void hal_init_pins()
17591763
for (axis_num = 0; axis_num < EMCMOT_MAX_AXIS; axis_num++) {
17601764
if ( !(axis_mask & (1 << axis_num)) ) { continue; }
17611765
*(halui_data->axis_nr_select[axis_num]) = old_halui_data.axis_nr_select[axis_num] = 0;
1766+
*(halui_data->mpg_select0) = old_halui_data.mpg_select0 = 0;
17621767
*(halui_data->ajog_minus[axis_num]) = old_halui_data.ajog_minus[axis_num] = 0;
17631768
*(halui_data->ajog_plus[axis_num]) = old_halui_data.ajog_plus[axis_num] = 0;
17641769
*(halui_data->ajog_analog[axis_num]) = old_halui_data.ajog_analog[axis_num] = 0;
@@ -2002,6 +2007,11 @@ static void check_hal_changes()
20022007
*(halui_data->axis_nr_select[axis_num]) = 0;
20032008
}
20042009
}
2010+
if (value == 100) {
2011+
*(halui_data->mpg_select0) = 1;
2012+
}else{
2013+
*(halui_data->mpg_select0) = 0;
2014+
}
20052015
lastaxis = value;
20062016
}
20072017

@@ -2334,6 +2344,7 @@ static void check_hal_changes()
23342344
is_any_axis_selected = 0;
23352345
deselected = 0;
23362346
for (axis_num = 0; axis_num < EMCMOT_MAX_AXIS; axis_num++) {
2347+
23372348
if ( !(axis_mask & (1 << axis_num)) ) { continue; }
23382349

23392350
// axis jog -
@@ -2397,7 +2408,22 @@ static void check_hal_changes()
23972408
old_halui_data.axis_nr_select[axis_num] = bit;
23982409
}
23992410
}
2400-
// last axis has been deselected - no axis is selected now
2411+
2412+
// is MPG0 selected?
2413+
bit = new_halui_data.mpg_select0;
2414+
if (bit != old_halui_data.mpg_select0) {
2415+
if (bit != 0) {
2416+
is_any_axis_selected = 1;
2417+
py_call_axis_changed(100);
2418+
*halui_data->axis_selected = 100;
2419+
}else{
2420+
deselected = 1;
2421+
}
2422+
old_halui_data.mpg_select0 = bit;
2423+
}
2424+
2425+
2426+
// last axis has been deselected - no axis is selected now
24012427
if (is_any_axis_selected == 0 and deselected == 1) {
24022428
py_call_axis_changed(-1);
24032429
*halui_data->axis_selected = -1;

0 commit comments

Comments
 (0)