Paneldue as Pendant behavior - opposite mirrored areas activate
-
@phaedrux
YES!At the end of my video, I switch it by the 'Panel' button and go into regular landscape mode and everything works like it should.
That is what is so confusing.
-
@sinned6915 if noone from diabase reads here, you will likely need to file an issue in their github https://github.com/diabase/H-Series-Pendant-Firmware
-
@oliof yes, that is probly best.
I wanted to try and make sure it was not operator error first.
thanks again -
The reason I am trying to make use of this is that I am trying to avoid making the PanelDue pass-through version of the pendant.
-
@sinned6915 I'd want to use it as well if I were in need of a pendant. In fact I gave it a try last year but the soldering job on my encoder knob was so bad that I built back before I printed a case and returned to stock PanelDue firmware. But not for lack of want (-:
-
@phaedrux here are some better videos of the behavior-
-
PanelDue with the firmware loaded. Ignore the portait/landscape difference at the start-I have it that way so you can see the lanscape mode of the normal Panel functoin. I am trying to use a stylus to push buttons so you can see the highlighed presses, and my hand movements are making the focus jumpy.
https://photos.app.goo.gl/8nYPxtsLjEH7yCuq7 -
Standar Paneldue firmware on the same machine with normal firmware to show normal function- https://photos.app.goo.gl/YUebXv5EmbUYDB296
-
-
Normal hardware and normal firmware are working correctly. Beyond that I wouldn't even know where to begin looking. The Diabase github would be my next step if I were you.
-
@sinned6915 did you re-run touch calibration after switching to pendant mode?
-
@dc42 yes, i believe I have. I will redo and double check and report back.
EDIT: After upload of the FW, the PanelDue is calibration mode to touch the 4 spots.
After calibration it is in Pendant mode, and after switching to Panel mode, rerunning the calibration does not seem to make any difference.Once I have gotten into a jog selection, say X at 1.0mm, the encoder works beautifully.
I have tried this on both a PanelDue 7.0 with V3 controller AND on a PanelDue 7i, both behave the same.
Is there anything in the config.g settings that might throw this off? I looked at the H5 firmware files, but did not see anything obvious.
I agree that the next step would be to create an issue ticket on Diabase github.
I have tried delving into the source code, but I am having a hard time telling what is OE code and what is user contributed code. My conclusions are that looking at the code are above my skills at this time.
-
@sinned6915 in the original PanelDue firmware code, there is a parameter of type DisplayOrientation to the constructor that determines the polarity of the touch response. There is also a function AdjustOrientation that can change it. AFAIR the touch calibration procedure calls AdjustOrientation.
-
@dc42 any suggestions on what to look for?
their firmware is supposed to work for 5i and 7i.
could something be 'wrapping' to behave like this? -
@sinned6915 I don't know why you are having this problem and Diabase isn't. However, I think a solution would be to make this function call when switching between portrait and landscape:
touch.adjustOrientation(ReverseX | ReverseY);
-
@dc42 where should I be looking for this function call?
I am looking at lines 815 - 837 of PanelDue.cpp -
void LandscapeDisplay(const bool withTouch) { lcd.fillScr(black); lcd.setOrientation(nvData.lcdOrientation, IS_ER, true); if (withTouch) { touch.init(DisplayX, DisplayY, nvData.touchOrientation); touch.calibrate(nvData.xmin, nvData.xmax, nvData.ymin, nvData.ymax, touchCalibMargin); } } void PortraitDisplay(const bool withTouch) { DisplayOrientation portrait = static_cast<DisplayOrientation>(nvData.lcdOrientation ^ (SwapXY | ReverseX)); lcd.fillScr(black); lcd.setOrientation(portrait, IS_ER, true); if (withTouch) { DisplayOrientation portraitTouch = static_cast<DisplayOrientation>(nvData.touchOrientation ^ (SwapXY | ReverseX)); touch.init(DisplayXP, DisplayYP, portraitTouch); touch.calibrate(nvData.ymin, nvData.ymax, nvData.xmin, nvData.xmax, touchCalibMargin); } }
the references to
(SwapXY | ReverseX)
are throwing me off.sinneD
-
@sinned6915 said in Paneldue as Pendant behavior - opposite mirrored areas activate:
DisplayOrientation portraitTouch = static_cast<DisplayOrientation>(nvData.touchOrientation ^ (SwapXY | ReverseX));
Since X and Y need to be reversed compared to what happens now, I suggest you change ReverseX in that line to ReverseY.
-
@dc42 that seems to have done it!
at least it compiled and now runs.
i need to reassemble it all and make all the connections to fully test.
i will report back. -
@sinned6915
Hello, I have the same issue on PanelDue7.0/V3 controller.
I can't recompile the firmware with the modified PanelDue.cpp file because I don't have the skills. Would it be possible to share the one you use? Thanks in advance