Hohe Systemlast - Touchpanel

  • Hallo,


    wir versuchen gerade unsere Applikation so zu optimieren, dass der Benutzer möglichst
    schnell eine visuelle Rückmeldung bekommt. Beim Betätigen eines Buttons auf der Oberfläche wird
    beispielsweise der restliche Bildinhalt ausgetauscht. Wenn man nun den Taster (Touchscreen) gedrückt hält
    wird das Bild wesentlich langsamer aufgebaut. Ich dachte zunächst an einen Fehler in der Implementation
    des Buttons, und konnte auch feststellen dass die Systemlast beim Gedrückhalten auf bis zu 100% ansteigt.


    Es scheinen unentwegt Nachrichten im Kontrollelment einzutreffen. Ich habe unsere Applikation dann aus dem
    Autostart entfernt und die Systemlast bei ruhendem Desktop beobachtet. Wenn ich einen beliebigen Punkt auf dem Desktop
    drücke, steigt die Systemlast tatsächlich auf 80-100% an, und geht wieder auf ca. 1% runter sobald ich den Finger
    vom Touchscreen nehme.


    Ist das Verhalten so gewünscht? Um welches Problem handelt es sich hierbei?


    Mit freundlichem Gruß

  • Hello,


    I added the value Priority256 (and set to 255) to the touch panel driver. This didn't change anything.
    If the touch panel causes an interrupt everytime something changes, changing the priority
    will not help, the ISR handler of WinCe will be called anyway.


    Has anybody else the same problem or is this a hardware depending problem?


    Thanks!



    -----------------------------------------------------------------------------------------------------------------------------------------------------------
    Hope dies last

  • As long as the touch is pressed the touch driver will continously check if the stylus is moving across the screen. To reduce the number of measurements you could try to adjust some timing values within registry:

    • First of all try to reduce the "TouchSamples" value in registry, if you touch screen will allow that. By default 7 measurements are arranged, but it might be possible that even values between 3-5 are sufficient for you touchscreen.
    • Additionatly there are two timing paramters the influence the number of samples been measured:
      "SamplePeriodLowHns" (default: 200 000 = 20ms) and "SamplePeriodHighHns" (default: 100 000 = 10ms). The unit for this value is "100*ns".
      Please try to increase these values (e.g. 500000 and 300000) and check if this helps to reduce system utilization.
      Increasing these values will cause that the cursor will follow your pressed movements as smooth as with the default configuration, but in most applications this will not have negative effects.

    Software developer, F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • I tested some values as mentioned.


    Chanigng the TouchSamples value to 3 reduced the sytem load about 20%.
    The value SamplePeriodLowHns reduced the system load about 10%.
    Changing SamplePeriodHighHns didn't change anything.


    If I change the SamplePeriodLowHns to a very high value e.g. 1 500 000 the system
    load declines but the response time rises (150ms * TouchSamples -> action).
    Is there a parameter which tells the driver only to send messages if the stylus moves more than
    e.g. 5px in any direction?


    Thx

  • Quote from "menuthaur"

    s there a parameter which tells the driver only to send messages if the stylus moves more than
    e.g. 5px in any direction?


    Yes, I think the parameters MinMove and MaxMove are used for this purpose. Please refere to the Device Driver documentation for more details.

    Software developer, F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Thx, I found the MinMove parameter in the documentation.
    The touch panel doesn't work if i set the parameter to a value of 20.
    Setting the parameter to 1 doesn't work too.
    This seemed to be a little bit serious so I decided to check the default value 5.
    Saving the registry an reeboting, same effect, touch panel doesn't work.


    Any ideas?

  • I found the following parameters in another thread in this forum.
    After appyling the value the touch panel is now very sensitiv!!
    I don't know why? I tried to make the touch more sensitive some weeks ago without any result.
    Now the pointer is jumping around when pressing a button, so I decided to increase the
    MinMove value. I set it from 0 to 1. But with a value other than 0 the touch panel doesn't work.


    To tell you the truth, I don't believe that any value has to do with any reaction of the touch panel.



    Thx Holger

  • Hello,


    in touch driver V1.4 we implement a new feature which may be able to prevent the effect you described above. We will implement new driver into next kernel release. But you can also add the driver to you an existing kernel by put DLL into ffsdisk and fit registry under HKLM\Hardware\Devicemap\"DriverName"="\ffsdisk\n9_touchpoll.dll".


    For save calculation power you may test following settings:

    Code
    1. reg open \hardware\devicemap\touch
    2. REM set sample periode to 100ms default was 20 so we save 20% calc. power
    3. reg set value SamplePeriodLowHns dword 1000000
    4. REM sample as less a possible
    5. reg set value TouchSamples dword 3
    6. REM SamplePeriodLowHns*PollUpTimeMultiplier = max. time until a pen down is detected
    7. REM default value for PollUpTimeMultiplier = 10, this may be to slow while using large SamplePeriodXXXHns values
    8. reg set value PollUpTimeMultiplier dword 1
    9. reg save
    10. reboot hardware

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.