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ć.
-
-
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.