During touch calibration, each point is measured multiple times. If the individual measurements differ too much, the calibration is not accepted. This is usually a sign that the analog filtering of the touch signals is not as good as it should be, or the measurement is happening too fast, so there’s not enough time for the signals to settle.
Large touch screens with long cables are more critical in this regard compared to small screens.
I recommend you connect an oscilloscope to the touch signals to get an idea about the signal quality when the touch is pressed. You don’t need to understand the exact waveform you will see. Just press the screen and look out for
- Vertical jitter even if you keep the touch position and pressure unchanged
- Capacitor charging curves which are not settled before the next signal edge starts
It is worth checking the signals because it does not only affect the calibration, but also the precision of your touch screen during regular operation.
Regarding your own application:
It should be sufficient to execute the following code in order to make the touch driver re-read the calibration settings:
hEvent=CreateEvent(NULL, FALSE, FALSE, L"TouchSettingsChanged");
Please refer to our developer article for more details: