Thank you for the answer:)
In the meanttime I got the Raspebrry Pi 7" Display (800x480) and the Widgest's performance on eglfs seems a lot better. - it looks like the display size ( or the display interface ??) plays a major role.
Basically I have an QT4 QWidgets app that I want to migrate to Qt5 / Declarative . As a first step , I want to replace the frontend navigation UI with some QML based component.
The only way to achieve this is on the actual test device is eglfs but it needs to support the QWidgets well enough .
The app contains some data aquisition&visualization (QWT) part, that is very performance sensitive, and I actually hoped that eglfs would increase performance ....and this is why I was pretty dissapointed with the first tests restults.
So I am really interesed about the limitations and the bigger overview.
Is it possible on EGLFS to embbed a QML scene in a QWidget?
Is a better Wayland better platform ( for rpi2 that is) for what I want to achieve?
Getting back to document conclusions of my research on best practice of using RaspiComm RS-485 under Qt for anybody, who finds this thread useful (I expect many of it is valid for RS-232 on same board as well, did not test myself):
Do not try to implement communication with MAX3140 UART chip yourself (maybe except of asm based implementation, what is however most probably unnecessary exertion). I succeeded to implement it based on kernel /dev/spidev0.0 only to find out that even this partially system driver supported solution is too slow for even 19 200 Bd speed (loosing about 5 characters on one received).
I myself feared about RaspiComm RS-485 driver /dev/ttyRPC0 based on some forums complaints and not clear versioning, however found out, that the forum thread was heavy outdated. These official installation instructions worked like a charm and the resulting driver worked out-of-box for my latest Raspbian Wheezy (4.1.7+ #817). So I strongly recommend to take this approach.
QSerialPort class has constructor with signature QSerialPort(const QString &, QObject *), where QString may contain even device which is not included in the QList that QSerialPortInfo::availablePorts() returns. This works with no surprise. If one does not set anything than (eventually) baud speed, one gets standard 8 bit, 1 stop bit, no parity without any character translations, good old plain raw binary. So QSerialPort may be used with /dev/ttyRPC0 directly and easily.
rpc0.write("Binary request\0even\xffcontaining weird\x03characters", length_of_binary);
if(rpc0.waitForReadyRead(100)) // Enough long time in miliseconds
QByteArray data = rpc0.readAll(); // You may have to wait/read repetitively in loop
// and merge data on higher link speeds
Hardware of RaspiComm uses RTS pin to select in/out direction of data. CTS is kept active permanently by wiring, so using default use RTS/CTS mode works properly with no inappropriate blocking.
That's all you should need, so enjoy your communication.
I have been starting development using QT a few weeks ago and encountered a similar problem. Everything was fine, compiling the apps and deploying to the PI using QT Creator without issues. But as soon as I started the app (or wanted to debug) the app died with a Segfault.
After some hours, I noticed that libts on Jessie has been quite old. I re-installed Jessie-Lite and compiled libts on my own, directly from the GitHub repository here: lbts GitHub Repo .
Afterwards I simply followed the tutorial to cross-compile QT5 like documented in this tutorial: RaspberryPi2EGLFS
Basically I followed each step within the tutorial and the only thing I did not do, was to install any libts related packages (just check the apt-get install commands in the tutorial and don't install the libts related packages).
I know, the thread is quite old, but maybe someone will look it up.
@FlorianB I'm trying to install qtcreator on a system that I don't have admin rights on. so:
Install qt from source as I need the latest
Works fine, but as mentioned in your posts I manually did make install in qt5/qttools/src/designer/src/ lib, components, designer folder. Is there something else that I'm missing. I install qt to a prefix and set it as path.
Installing qtcreator, qmake step works fine. I get the error (This is with current master Oct 7 2015):
In file included from ../../../../qt-creator/src/libs/utils/shellcommand.cpp:31:0:
../../../../qt-creator/src/libs/utils/shellcommand.h:118:19: error: expected ‘;’ at end of member declaration
../../../../qt-creator/src/libs/utils/shellcommand.h:118:21: error: ‘override’ does not name a type
../../../../qt-creator/src/libs/utils/shellcommand.cpp:90:84: sorry, unimplemented: non-static data member initializers
../../../../qt-creator/src/libs/utils/shellcommand.cpp:90:84: error: in-class initialization of static data member ‘m_proxyFactory’ of non-literal type
../../../../qt-creator/src/libs/utils/shellcommand.cpp: In member function ‘virtual Utils::SynchronousProcessResponse Utils::ShellCommand::runCommand(const Utils::FileName&, const QStringList&, int, const QString&, Utils::ExitCodeInterpreter*)’:
../../../../qt-creator/src/libs/utils/shellcommand.cpp:338:42: error: ‘class Utils::Internal::ShellCommandPrivate’ has no member named ‘m_proxyFactory’
../../../../qt-creator/src/libs/utils/shellcommand.cpp: In member function ‘Utils::SynchronousProcessResponse Utils::ShellCommand::runSynchronous(const Utils::FileName&, const QStringList&, int, const QString&, Utils::ExitCodeInterpreter*)’:
../../../../qt-creator/src/libs/utils/shellcommand.cpp:419:42: error: ‘class Utils::Internal::ShellCommandPrivate’ has no member named ‘m_proxyFactory’
../../../../qt-creator/src/libs/utils/shellcommand.cpp: In member function ‘virtual bool Utils::ShellCommand::runFullySynchronous(const Utils::FileName&, const QStringList&, int, QByteArray*, QByteArray*, const QString&)’:
../../../../qt-creator/src/libs/utils/shellcommand.cpp:482:42: error: ‘class Utils::Internal::ShellCommandPrivate’ has no member named ‘m_proxyFactory’
../../../../qt-creator/src/libs/utils/shellcommand.cpp: In member function ‘void Utils::ShellCommand::setOutputProxyFactory(const std::functionUtils::OutputProxy*()&)’:
../../../../qt-creator/src/libs/utils/shellcommand.cpp:547:8: error: ‘class Utils::Internal::ShellCommandPrivate’ has no member named ‘m_proxyFactory’
make: *** [.obj/debug-shared/shellcommand.o] Error 1
make: Leaving directory /nfs2/jain/qt-creator-build/src/libs/utils' make: *** [sub-utils-make_first] Error 2 make: Leaving directory/nfs2/jain/qt-creator-build/src/libs'
make: *** [sub-libs-make_first-ordered] Error 2
make: Leaving directory `/nfs2/jain/qt-creator-build/src'
make: *** [sub-src-make_first-ordered] Error 2
You can put the name of mkspec you are used for the given platform. I think for Raspberry it's something like linux-rasp-pi-g++. Open the mkspecs/devices folder in your Qt installation and check it out or open the Kits propertties page in Qt Creator and see which mkspec your kits are using.
This problem has been resolved. Apparently, the libraries available in the distribution are not compatible with each other, or with installation of "sip" or "PyQt5". After installing the .deb file found at http://tinyurl.com/kza5uob and remaking the current stable versions of "sip" and "PyQt5" I was able to load and execute an application originally run on Fedora 19.