Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. Qt 4.8.6 Embedded Touchscreen not calibratable
Forum Updated to NodeBB v4.3 + New Features

Qt 4.8.6 Embedded Touchscreen not calibratable

Scheduled Pinned Locked Moved Mobile and Embedded
tslib touch emb
8 Posts 2 Posters 4.2k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • BenHeroB Offline
    BenHeroB Offline
    BenHero
    wrote on last edited by
    #1

    Hi I'm having trouble getting my touchscreen working.

    I have an beaglebone black running debian. I want to use the touch interface of my faytech monitor.
    The Monitor works correctly without any driver installation. The mouse cursor is displayed on the screen if I touch it, but the location is wrong. It always has an offset to the real "touched" position.
    When I plug in a standard mouse into the monitro ( it has an integrated hub) the position is correct.
    So I need to calibrate the touch interface.
    I found out that /dev/interface/event5 is the correct location for the variable TSLIB_TSDEVICE.

    I've setup all the needed TSLIB environment variables. (Cannot post them now because I do not have them here at the moment)

    I build the calibratemouse example from qt, but it is not working with my touch. I can click with the finger as much as I want, the click/touch is not recognized. If I plug in the mouse I can click with it. The calibration process seems to work. But this is of course not what I want. Seems like it uses the wrong event.

    I even tried with the tslib tool ts_test and ts_calibrate.
    If I run ts_calibarate no errors are displayed, the screen resolution is outputted correctly but my clicking/touching is not recognized at all. The same is with the mouse. The cursor is not shown, nothing happens.
    If I run ts_test I can touch the screen and in the console I see output of the positions. They seem to be correct, because the values change from around 30 to 3900 for x and y. The only thing which is wrong is that the position on screen for the crosshair displayed has an offset.
    I inspected the code from tslib tools and found out the the difference is that ts_test uses ts_read() and ts_calibrate uses ts_read_raw().

    What can I do to get my touch working? I'm somehow clueless at the moment.

    I have no file /etc/pointercal because no calibration did take place.
    I'm able to click buttons in Qt if I manage it to move the cursor over an button (with the finger on an offset location).

    What could be the problem?

    Please help me.
    Greetings,
    Ben

    1 Reply Last reply
    0
    • BenHeroB Offline
      BenHeroB Offline
      BenHero
      wrote on last edited by
      #2

      I played around now for some time and found out that it seems onmy the touch event is not proceeded.

      The relevant code of the calibration method looks like this:

      int Calibration::exec()
      {
         if (QFile::exists("/etc/pointercal"))
         {
            backup = new QWSPointerCalibrationData;
            QWSServer::mouseHandler()->getCalibration(backup);
         }
      
         QWSServer::mouseHandler()->clearCalibration();
         grabMouse();
         activateWindow();
         int ret = QDialog::exec();
         releaseMouse();
         return ret;
      }
      
      void Calibration::mouseReleaseEvent(QMouseEvent *event)
      {
          // Map from device coordinates in case the screen is transformed
          QSize screenSize(qt_screen->width(), qt_screen->height());
          QPoint p = qt_screen->mapToDevice(event->pos(), screenSize);
      
          data.devPoints[pressCount] = p;
      
          if (++pressCount < 5)
              repaint();
          else
              accept();
      }
      

      If I make an breakpoint in mouseReleaseEvent I will never come into this function by a finger "click" on the touch. I I use mouse button it works.
      In the ts_test application I can see the positions if I move around, but it seems like the preassure is always 255.

      Here is a code snippet from ts_test.c:

      ret = ts_read(ts, &samp, 1);
      ...
      printf("%ld.%06ld: %6d %6d %6d\n", samp.tv.tv_sec, samp.tv.tv_usec, samp.x, samp.y, samp.pressure);
      

      example output is:
      ~#./ts_test
      1438012555.111557: 714 1068 255 1438012555.123489: 714 1069 255 1438012555.135494: 714 1070 255 1438012555.141526: 714 1071 255 ... 1438012555.282507: 733 1140 255 1438012555.291506: 735 1150 255 1438012555.297502: 737 1160 255 1438012555.303508: 739 1170 255

      I cannot explain myself why this does not work.

      These are my relevant environment variables:
      TSLIB_CALIBFILE=/etc/pointercal TSLIB_CONFFILE=/etc/ts.conf TSLIB_CONSOLEDEVICE=/dev/tty TSLIB_FBDEVICE=/dev/fb0 TSLIB_PLUGINDIR=/dpconfig/lib/ts TSLIB_TSDEVICE=/dev/input/event4 TSLIB_TSEVENTTYPE=INPUT
      Qt-relevant variables:
      POINTERCAL_FILE=/etc/pointercal QWS_MOUSE_PROTO='tslib:/dev/event4 IntelliMouse:/dev/mouse1'

      ts_calibrate outputs on command line only this:
      ~# ./ts_calibrate xres = 1280, yres = 720
      and then nothing happens; I have to cancel it by Ctrl+C;
      "clicking"/moving around by finger or even mouse click/move does simply nothing.
      While the screen output of ts_calibrate looks correct for me.

      I even compiled a sample code which was inside the driver ZIP-File provided by faytech, but this does not help me as well.
      (http://www.faytech.com/fileadmin/driver/eGTouch_v2.4.1820.L-x.tar.gz)

      I uploaded the code of the example to pastebin to prevent loosing the readability of this post: http://pastebin.com/i9iB1Jcs

      The output of this can be found on pastebin as well:
      I "clicked" one in left upper corner and then once in the right bottom corner.
      http://pastebin.com/k8R7LY96

      The only thing I can see is that I do not get ABS_PREASSURE messages.

      I'm very confused. I am very new to touchscreens.
      PLEASE can someone help me!!?!

      Regards, Ben

      1 Reply Last reply
      0
      • BenHeroB Offline
        BenHeroB Offline
        BenHero
        wrote on last edited by
        #3

        Hi, bacdk again, still having the same problem. I managed to get the evtest program to work: This is the output of it:

        root@arm:/config/bin# evtest
        No device specified, trying to scan all of /dev/input/event*
        Available devices:
        /dev/input/event0:      tps65217_pwr_but
        /dev/input/event1:      Logitech USB-PS/2 Optical Mouse
        /dev/input/event2:      eGalax Inc. USB TouchController
        /dev/input/event3:      eGalax Inc. USB TouchController
        /dev/input/event4:      eGalax Inc. USB TouchController
        /dev/input/event5:      eGalax Inc. USB TouchController
        /dev/input/event6:      eGalax Inc. USB TouchController
        Select the device event number [0-6]: 5
        Input driver version is 1.0.1
        Input device ID: bus 0x3 vendor 0xeef product 0x1 version 0x210
        Input device name: "eGalax Inc. USB TouchController"
        Supported events:
          Event type 0 (EV_SYN)
          Event type 1 (EV_KEY)
            Event code 330 (BTN_TOUCH)
          Event type 3 (EV_ABS)
            Event code 0 (ABS_X)
              Value   1118
              Min        0
              Max     4095
            Event code 1 (ABS_Y)
              Value   1232
              Min        0
              Max     4095
            Event code 47 (ABS_MT_SLOT)
              Value      0
              Min        0
              Max        7
            Event code 53 (ABS_MT_POSITION_X)
              Value      0
              Min        0
              Max     4095
            Event code 54 (ABS_MT_POSITION_Y)
              Value      0
              Min        0
              Max     4095
            Event code 57 (ABS_MT_TRACKING_ID)
              Value      0
              Min        0
              Max    65535
            Event code 59 (ABS_MT_DISTANCE)
              Value      0
              Min        0
              Max        1
        Properties:
          Property type 1 (INPUT_PROP_DIRECT)
        Testing ... (interrupt to exit)
        Event: time 1438185636.225816, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 548
        Event: time 1438185636.225816, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 684
        Event: time 1438185636.225816, type 3 (EV_ABS), code 59 (ABS_MT_DISTANCE), value 0
        Event: time 1438185636.225816, type 3 (EV_ABS), code 0 (ABS_X), value 548
        Event: time 1438185636.225816, type 3 (EV_ABS), code 1 (ABS_Y), value 684
        Event: time 1438185636.225816, -------------- EV_SYN ------------
        Event: time 1438185636.231792, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 546
        Event: time 1438185636.231792, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 682
        Event: time 1438185636.231792, type 3 (EV_ABS), code 0 (ABS_X), value 546
        Event: time 1438185636.231792, type 3 (EV_ABS), code 1 (ABS_Y), value 682
        Event: time 1438185636.231792, -------------- EV_SYN ------------
        Event: time 1438185636.240796, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 544
        Event: time 1438185636.240796, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 680
        Event: time 1438185636.240796, type 3 (EV_ABS), code 0 (ABS_X), value 544
        Event: time 1438185636.240796, type 3 (EV_ABS), code 1 (ABS_Y), value 680
        Event: time 1438185636.240796, -------------- EV_SYN ------------
        Event: time 1438185636.246830, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 542
        Event: time 1438185636.246830, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 676
        Event: time 1438185636.246830, type 3 (EV_ABS), code 0 (ABS_X), value 542
        Event: time 1438185636.246830, type 3 (EV_ABS), code 1 (ABS_Y), value 676
        Event: time 1438185636.246830, -------------- EV_SYN ------------
        Event: time 1438185636.252805, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 540
        Event: time 1438185636.252805, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 674
        Event: time 1438185636.252805, type 3 (EV_ABS), code 0 (ABS_X), value 540
        Event: time 1438185636.252805, type 3 (EV_ABS), code 1 (ABS_Y), value 674
        Event: time 1438185636.252805, -------------- EV_SYN ------------
        Event: time 1438185636.270767, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 676
        Event: time 1438185636.270767, type 3 (EV_ABS), code 1 (ABS_Y), value 676
        Event: time 1438185636.270767, -------------- EV_SYN ------------
        Event: time 1438185636.285793, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 678
        Event: time 1438185636.285793, type 3 (EV_ABS), code 1 (ABS_Y), value 678
        Event: time 1438185636.285793, -------------- EV_SYN ------------
        Event: time 1438185636.342748, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 680
        Event: time 1438185636.342748, type 3 (EV_ABS), code 1 (ABS_Y), value 680
        Event: time 1438185636.342748, -------------- EV_SYN ------------
        Event: time 1438185636.393777, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 538
        Event: time 1438185636.393777, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 678
        Event: time 1438185636.393777, type 3 (EV_ABS), code 0 (ABS_X), value 538
        Event: time 1438185636.393777, type 3 (EV_ABS), code 1 (ABS_Y), value 678
        Event: time 1438185636.393777, -------------- EV_SYN ------------
        Event: time 1438185636.399844, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 536
        Event: time 1438185636.399844, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 676
        Event: time 1438185636.399844, type 3 (EV_ABS), code 0 (ABS_X), value 536
        Event: time 1438185636.399844, type 3 (EV_ABS), code 1 (ABS_Y), value 676
        Event: time 1438185636.399844, -------------- EV_SYN ------------
        Event: time 1438185636.408797, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 532
        Event: time 1438185636.408797, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 674
        Event: time 1438185636.408797, type 3 (EV_ABS), code 0 (ABS_X), value 532
        Event: time 1438185636.408797, type 3 (EV_ABS), code 1 (ABS_Y), value 674
        Event: time 1438185636.408797, -------------- EV_SYN ------------
        Event: time 1438185636.414826, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 528
        Event: time 1438185636.414826, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 670
        Event: time 1438185636.414826, type 3 (EV_ABS), code 0 (ABS_X), value 528
        Event: time 1438185636.414826, type 3 (EV_ABS), code 1 (ABS_Y), value 670
        Event: time 1438185636.414826, -------------- EV_SYN ------------
        Event: time 1438185636.420844, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 526
        Event: time 1438185636.420844, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 666
        Event: time 1438185636.420844, type 3 (EV_ABS), code 0 (ABS_X), value 526
        Event: time 1438185636.420844, type 3 (EV_ABS), code 1 (ABS_Y), value 666
        Event: time 1438185636.420844, -------------- EV_SYN ------------
        Event: time 1438185636.426786, type 3 (EV_ABS), code 59 (ABS_MT_DISTANCE), value 1
        Event: time 1438185636.426786, -------------- EV_SYN ------------
        Event: time 1438185638.424816, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 1700
        Event: time 1438185638.424816, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 2578
        Event: time 1438185638.424816, type 3 (EV_ABS), code 59 (ABS_MT_DISTANCE), value 0
        Event: time 1438185638.424816, type 3 (EV_ABS), code 0 (ABS_X), value 1700
        Event: time 1438185638.424816, type 3 (EV_ABS), code 1 (ABS_Y), value 2578
        Event: time 1438185638.424816, -------------- EV_SYN ------------
        

        I still have no clue what's wrong with the touch, Is there nobody who can help? Anybody?

        Regards, Ben

        1 Reply Last reply
        0
        • SGaistS Offline
          SGaistS Offline
          SGaist
          Lifetime Qt Champion
          wrote on last edited by
          #4

          Hi,

          Do you mean that even ts_calibrate doesn't see your device ?

          Interested in AI ? www.idiap.ch
          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

          BenHeroB 1 Reply Last reply
          0
          • SGaistS SGaist

            Hi,

            Do you mean that even ts_calibrate doesn't see your device ?

            BenHeroB Offline
            BenHeroB Offline
            BenHero
            wrote on last edited by
            #5

            @SGaist
            Hi, ts_calibrate does not print an error message, but "clicking" is not detected.
            It did print error messages before I corrected the environment variables.

            I have debian with kernel 3.8 running which should have built in support for the eGalax Touch screen.
            I'm still clueless.
            Regards, Ben

            1 Reply Last reply
            0
            • SGaistS Offline
              SGaistS Offline
              SGaist
              Lifetime Qt Champion
              wrote on last edited by
              #6

              I'd double check that support. Is the touch screen really acting as one or is it seen like a mouse ?

              Interested in AI ? www.idiap.ch
              Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

              BenHeroB 1 Reply Last reply
              0
              • SGaistS SGaist

                I'd double check that support. Is the touch screen really acting as one or is it seen like a mouse ?

                BenHeroB Offline
                BenHeroB Offline
                BenHero
                wrote on last edited by
                #7

                @SGaist I don't know. How to check this?
                Reagrds, Ben

                1 Reply Last reply
                0
                • SGaistS Offline
                  SGaistS Offline
                  SGaist
                  Lifetime Qt Champion
                  wrote on last edited by
                  #8

                  I've stumbled upon that repository That might help you

                  Interested in AI ? www.idiap.ch
                  Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                  1 Reply Last reply
                  0

                  • Login

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Categories
                  • Recent
                  • Tags
                  • Popular
                  • Users
                  • Groups
                  • Search
                  • Get Qt Extensions
                  • Unsolved