Category: Qtvcp
It's a program that's intended to pause machine motion (halui.program.pause) anytime the wireless probe controller detects an error (hm2_5i25.0.7i84.0.2.input-24 == 1).
It creates a few HAL pins, one of them being: c.newpin("show-message",hal.HAL_BIT, hal.HAL_OUT) # -> qtdragon.probe-error
I added code to the probe_routines.py file which will set motion.digital-out-02 anytime the probe is in motion (through the MDI command 'M65 P02').
I've been working on the best way to implement error handling while a wireless probe is in motion. I initially tried setting HAL pins directly by patching the probe_routines.py file, but I couldn't get that to work. I then tried tying the same QTDragon dialog to motion.digital-out-00 and then sending a 'G64 P00' in the probe_routines.py before any probe movement. This didn't work as well - I got the same 'HAL: ERROR: signal 'probe-error-msg' already has output pin'. Also, since 'ACTION.CALL_MDI' pauses the UI, I don't think that this method would have worked anyways.
Currently, I have rudimentary error handling implemented by checking a digital input tied to the probe error output before the start of any probe motion (all within probe_routines.py). The subroutine will wait up to 5 seconds for the error to be handled, and will abort if there is no resolution. I tried adding a user interaction dialog box into this routine but I wasn't ever able to display a message to the user while the routine was active. Another issue with this approach is that the subroutine won't halt motion if the probe errors out after a MDI command has been sent, but before the probe has finished its motion.
The idea behind the newest implementation is that anytime the probe is in motion and an error is detected, machine motion will be paused, the user will be prompted for intervention and upon clearing the fault, the routine will resume.
Until fairly recently, I was using probe basic with .ngc files for all the subroutines. I updated and switch to QTDragon, at which point I tried (unsuccessfully) moving over my probe error handling to the python based probe routines.
If there is a different implementation you could think of, I'd love to hear it. I haven't been able to find a solution that's already been implemented.