Could not read evdevtouch dla klasy QT w QML



  • Witam
    Pisze prosty programik na raspberry 3.
    Jako system używam YOCTO.
    Jato sterownik pieca CO. Mam dotykowy wyświetlacz 7'', jako systemu dla aplikacji QML używam EGLFS.
    I tu jest problem. Podczas uruchomienia programu wszystko działa ok. Jednak regularnie w konsoli widzę komunikat:

    evdevtouch: Could not read from input device (No such device)
    

    czasami:

    evdevtouch: Cannot open input device /dev/input/event0 (No such file or directory)
    

    W momencie gdy wyskakuje ten komunika wyświetlacz nie odpowiada.
    Wyświetlacz to: Waveshare LCD IPS 7'' 1024x600px HDMI + USB botland.com.pl.

    Czym bardziej komplikuję program tym dotyk gorzej działa.
    Czy ktoś ma jakiś pomysł tak to poprawić/usunąć problem?

    Fragment QML:

    import QtQuick 2.7
    import QtQuick.Controls 2.0
    import QtQuick.Layouts 1.0
    import Message 1.0
    
    import QtQuick.Window 2.0
    import QtQuick.Extras 1.4
    
    
    ApplicationWindow {
        visible: true
        width: 600
        height: 1024
        title: qsTr("Hello World")
    
        Message {
            id:piec
            stan:"STOP"
            //stanChanged: console.log("zmianiono stan")
            onStanChanged: updatePrzyciskiFunkcji()
            onZmianaZegara: updateZegar()
        }
    
         function updatePrzyciskiFunkcji() {
         //console.log("zmianiono stan")
             bt_stop.checked= piec.prz_STOP
             bt_recznie.checked = piec.prz_Recznie
             bt_rozpalanie.checked = piec.prz_rozp
             bt_automatycznie.checked = piec.prz_auto
             pole_info.text = piec.stan
    
             status_1.active = piec.led_wentylator
             status_2.active = piec.led_pompa_cwu
             status_3.active = piec.led_pompa_co
             status_4.active = piec.led_pompa_objegowa
    
         }
    

    Fragment main:

    int main(int argc, char *argv[])
    {
        QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
        QGuiApplication app(argc, argv);
    
        qmlRegisterType<Message>("Message", 1, 0, "Message");
    
        //wiringPiSetupSys();
    //////////    wiringPiSetup () ;
    
        QQmlApplicationEngine engine;
        engine.load(QUrl(QLatin1String("qrc:/main.qml")));
    
    
        return app.exec();
    }
    

    head:

    class Message : public QObject
    {
        Q_OBJECT
        Q_PROPERTY(QString stan READ stan WRITE setStan NOTIFY stanChanged)
        Q_PROPERTY(QString adresIP READ adresIP CONSTANT)
        Q_PROPERTY(bool prz_STOP READ prz_STOP)
        Q_PROPERTY(bool prz_Recznie READ prz_Recznie)
        Q_PROPERTY(bool prz_rozp READ prz_rozp)
        Q_PROPERTY(bool prz_auto READ prz_auto)
        Q_PROPERTY(QString zegar READ zegar NOTIFY zmianaZegara)
        Q_PROPERTY(bool led_wentylator READ led_wentylator)
        Q_PROPERTY(bool led_pompa_cwu READ led_pompa_cwu)
        Q_PROPERTY(bool led_pompa_co READ led_pompa_co)
        Q_PROPERTY(bool led_pompa_objegowa READ led_pompa_objegowa)
    
    public:
        explicit Message(QObject *parent = 0);
        Q_INVOKABLE void setStan(const QString &a);
        QString stan() const;
        QString adresIP() const;
        bool prz_STOP() const;
        bool prz_Recznie() const;
        bool prz_rozp() const;
        bool prz_auto() const;
        bool led_wentylator() const;
        bool led_pompa_cwu() const;
        bool led_pompa_co() const;
        bool led_pompa_objegowa() const;
        QString zegar() const;
    
    
    signals:
        void stanChanged();
        void zmianaZegara();
    
    private:
        QString m_stan;
        bool B_STOP;
        bool B_Recznie;
        bool B_rozp;
        bool B_auto;
        qint16 state;
    
        //QRpiGpio::Pin p;
    
    
    public slots:
        void update(void);
    
    };
    


  • A jak się zachowuje dotyk na standardowym raspbianie z X pobranym ze strony projektu? Być może problem leży gdzieś indziej, niekoniecznie w samej aplikacji. Przeglądnij może dmesg, lub ewentualnie syslog jak masz czy nie ma czegoś podejrzanego. BTW korzystałeś z jakiegoś tutoriala odnośnie YOCTO dla raspberry pi? Tak się składa, że wpadł mi w ręce ten sam dotyk to mógłbym też coś sprawdzić. Z tym, że w moim przypadku, raczej corsscompilowałem Qt na raspbiana, a chętnie spróbowałbym zbudować system na raspberry z YOCTO.



  • System budowałem na tym:
    Building Raspberry Pi Systems with Yocto
    Jest tutaj pełne Qt5.7 wraz z takimi dodatkami jak "Virtual Keyboard". Mam tylko problem z Cross-compilation. Nie wiem jak poprawnie to skonfigurować. Na razie przesyłam kody rsyncem i kompiluję bezpośrednio na malinie.

    Ciekawostka: Po odpaleniu powyższego programu polecenie "free -m" pokazuje 22 mebibytes zajętosci pamieci RAM.



  • W tym tutorialu chyba tylko jest jak zbudować sam rootfs na malinę, a nie ma już dodane jak dodatkowo zbudować sdk, albo nie zauważyłem, standardowo zazwyczaj buduje się je przez:

    bitbake  meta-toolchain-qt5
    

    Oczywiście wcześniej musisz mieć zaincjalizowane repo. Zapodaj tego dmesg może coś ciekawgo powie. W najbliższym czasie sam postaram się zbudować system z yocto (będę próbował na tym samym wyświetlaczu), więc w razie czego będzie z czym skonfrontować.



  • Prawdopodobnie już rozwiązałem problem.
    Jak narazie wszystko wskazuje na to że problem był w zasilaniu.
    Miałem Raspberry podłączone do PC oraz jednocześnie do dodatkowego modułu.
    Gdy podłączyłem ładowarkę 2000mA to problem dotychczas się nie powtórzył.



  • Być może właśnie, że malina miała za mało prądu, i dlatego tak wariowała. Grunt, że naprawione. BTW wspomniałeś, że malina będzie sterowała piecem CO, mógłbyś się pochwalić jak rozwiązałeś sterowanie prędkością nadmuchu? O ile w ogóle nią sterujesz.
    Pozdrawiam



  • Obrotami wentylatora chcę sterować za pomocą arduino nano lub STM32F103C8T6 w którym będę stosował transoptor oraz triaka. Jako potwierdzenie obrotów zastosuję czujnik fotoelektryczny a do jednej z łopatek planuję przymocować płytkę. W ten sposób dostanę sprzężenie zwrotne.
    Stosując powyższe moduły mogę porostu kabelkiem USB połączyć z Raspberry i za pomocą klasy QTSERIAL tobie odczytywać.
    Mam inny problem. Skompilowałem toolchain i skonfigurowałem qtcreatora.
    Jednak podczas kompilacji mi wyskakuje:

    18:56:41: Uruchamianie "/usr/bin/make" 
    g++ -c -pipe -O2 -g -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_NO_DEBUG -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I../QML_sygnaly_i_sloty -I. -I../QML_sygnaly_i_sloty/qrpigpio -I/opt/poky/2.1.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/usr/include -I/opt/poky/2.1.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/usr/include/qt5 -I/opt/poky/2.1.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/usr/include/qt5/QtQuick -I/opt/poky/2.1.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/usr/include/qt5/QtGui -I/opt/poky/2.1.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/usr/include/qt5/QtQml -I/opt/poky/2.1.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/usr/include/qt5/QtNetwork -I/opt/poky/2.1.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/usr/include/qt5/QtCore -I. -I/opt/poky/2.1.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-g++ -o main.o ../QML_sygnaly_i_sloty/main.cpp
    In file included from /opt/poky/2.1.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/usr/include/features.h:392:0,
                     from /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:39,
                     from /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:482,
                     from /usr/include/c++/5/cstddef:44,
                     from /opt/poky/2.1.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/usr/include/qt5/QtCore/qglobal.h:45,
                     from /opt/poky/2.1.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/usr/include/qt5/QtCore/qcoreapplication.h:43,
                     from /opt/poky/2.1.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/usr/include/qt5/QtGui/qguiapplication.h:43,
                     from /opt/poky/2.1.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/usr/include/qt5/QtGui/QGuiApplication:1,
                     from ../QML_sygnaly_i_sloty/main.cpp:1:
    /opt/poky/2.1.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/usr/include/gnu/stubs.h:7:29: fatal error: gnu/stubs-soft.h: Nie ma takiego pliku ani katalogu
    compilation terminated.
    Makefile:1253: polecenia dla obiektu 'main.o' nie powiodły się
    make: *** [main.o] Błąd 1
    18:56:42: Proces "/usr/bin/make" zakończył się kodem wyjściowym 2.
    Błąd budowania / instalowania projektu QML_sygnaly_i_sloty (zestaw narzędzi: raspberry)
    Podczas wykonywania kroku "Make"
    18:56:42: Czas trwania: 00:00.
    

    Niestety pliku stubs-soft.h faktycznie tam nie ma :-(

    Co do wyświetlacza to narazie dobrze się spisuje. Jednak do uruchomienia na malinie trzeba było poprawić plik config bo malina sama z siebie go nie rozpoznała.



  • Wygląda na to, że chyba masz zły kompilator ustawiony.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.