Hiden spindle control buttons in AXIS

More
08 Nov 2024 15:45 #314079 by COFHAL
Why are the spindle control buttons not visible in AXIS?

Please Log in or Create an account to join the conversation.

More
More
08 Nov 2024 16:34 #314082 by COFHAL
I already tried that but it didn't work, even though that pin (spindle.0.on) is connected in my configuration in the .HAL file.

Please Log in or Create an account to join the conversation.

More
08 Nov 2024 17:24 #314085 by tommylight
There are a lot of entries for the spindle in the hal and ini file.
Make another config with spidnle, copy the relevant stuff from spindle sections in both files.

Please Log in or Create an account to join the conversation.

More
08 Nov 2024 18:18 #314088 by Aciera
looking at, what I believe to be, the relevant code in '/home/dave/linuxcnc-dev/src/emc/usr_intf/axis/scripts/axis.py'
def forget(widget, *pins):
    if "AXIS_NO_AUTOCONFIGURE" in os.environ: return
    if hal_present == 1:
        for p in pins:
            if hal.pin_has_writer(p): return
    m = widget.winfo_manager()
    if m in ("grid", "pack"):
        widget.tk.call(m, "forget", widget._w)

forget(widgets.brake, "spindle.0.brake")
forget(widgets.spindle_cw, "spindle.0.forward", "spindle.0.on",
       "spindle.0.speed-out", "spindle.0.speed-out-abs", "spindle.0.speed-out-rps", "spindle.0.speed-out-rps-abs")
forget(widgets.spindle_ccw, "spindle.0.reverse",
       "spindle.0.speed-out", "spindle.0.speed-out-abs", "spindle.0.speed-out-rps", "spindle.0.speed-out-rps-abs")
forget(widgets.spindle_stop, "spindle.0.forward", "spindle.0.reverse", "spindle.0.on",
       "spindle.0.speed-out", "spindle.0.speed-out-abs", "spindle.0.speed-out-rps", "spindle.0.speed-out-rps-abs")

forget(widgets.spindle_plus,
       "spindle.0.speed-out", "spindle.0.speed-out-abs", "spindle.0.speed-out-rps", "spindle.0.speed-out-rps-abs")
forget(widgets.spindle_minus,
       "spindle.0.speed-out", "spindle.0.speed-out-abs", "spindle.0.speed-out-rps", "spindle.0.speed-out-rps-abs")

forget(widgets.spindlef,  "spindle.0.forward", "spindle.0.reverse", "spindle.0.on", "spindle.0.brake",
       "spindle.0.speed-out", "spindle.0.speed-out-abs", "spindle.0.speed-out-rps", "spindle.0.speed-out-rps-abs")
forget(widgets.spindlel,  "spindle.0.forward", "spindle.0.reverse", "spindle.0.on", "spindle.0.brake",
       "spindle.0.speed-out", "spindle.0.speed-out-abs", "spindle.0.speed-out-rps", "spindle.0.speed-out-rps-abs")

forget(widgets.spinoverridef,
       "spindle.0.speed-out", "spindle.0.speed-out-abs", "spindle.0.speed-out-rps", "spindle.0.speed-out-rps-abs")

for hal.pin_has_writer():
	".pin_has_writer('pin_name'): Return a FALSE value if a pin has no writers and TRUE if it does"},

Not sure but since the code is checking OUT halpins for 'writers' it might not be enough to assign the pin to a signal but it may actually need to connected to another pin.

Please Log in or Create an account to join the conversation.

More
08 Nov 2024 18:26 #314089 by Aciera
Looking at 'pin_has_writer':
PyObject *pin_has_writer(PyObject *self, PyObject *args) {
    char *name;
    if(!PyArg_ParseTuple(args, "s", &name)) return NULL;
    if(!hal_shmem_base) {
	PyErr_Format(PyExc_RuntimeError,
		"Cannot call before creating component");
	return NULL;
    }

    hal_pin_t *pin = halpr_find_pin_by_name(name);
    if(!pin) {
	PyErr_Format(PyExc_NameError, "Pin `%s' does not exist", name);
	return NULL;
    }

    if(pin->signal) {
	hal_sig_t *signal = (hal_sig_t*)SHMPTR(pin->signal);
	return PyBool_FromLong(signal->writers > 0);
    }
    Py_INCREF(Py_False);
    return Py_False;
}

I would expect that this would give the signal 'spindle-on' the writer 'spindle.0.on':
net spindle-on <= spindle.0.on 

But I'm really just guessing here.

Please Log in or Create an account to join the conversation.

Time to create page: 0.108 seconds
Powered by Kunena Forum