Planned maintenance has been done but it did not solve the problem. So work will continue on this and a new time for trying updates will be announced asap.

Change values on Qt according to a serial port string



  • Hello everyone,

    I know that Qt has a great documentation, but it has been weeks that I'm reading everything on it and can't find a solution. I'll explain you my setup so you can figure it out.

    I have a microcontroller called "STM32 Nucleo" which is used to read several inputs and to deducts from these inputs, other electrical quantities.

    This STM32 is connected to a Bluetooth Module, which is used to send a string (and only this way, the other way (receiving data) is not wired. I've tested with HyperTerminal-like programs and it sends it really well.

    In the other hand, I have a Raspberry Pi which will have a Qt program running. This Qt program is used to receive the electrical quantities as a string and display them on a GUI.

    So here's my problem : I don't know how to read the data received on the serial port /dev/rfcomm0 of the raspberry with the Qt program, and then I need to parse the string and update the values of the GUI according to the data received.

    If I make a step-by-step list of my problem :

    • Read the /dev/rfcomm0 on my Qt program
    • Parse it to have my electrical quantities (I've already find it on the documentation)
    • Update some Labels and Values of CircularGauge QML Type

    So if anyone could give me a hint, i'll be glad and it will be a great step to finish my uni project.

    Thanks a lot,
    Max


  • Qt Champions 2018

    Hi @maxime.armand

    For part 1 have a look at the Serial Port Reader Example

    It's very simple and you will be able to re-use the class SerialPortReader in your project.

    I suggest that you first take the example as-is and see if you actually can receive data.

    Than integrate SerialPortReader in your project and check again.

    The last step is to change the QML elements from C++, but there are lots of examples also.

    Regards.



  • I've already read it, but I've difficulties to understand it.
    And doesn't it seem too much for what I'd like to do in my program ? Because I'll always connect to the same serial port, with the same BaudRate, etc...

    Although, in the example, I don't find where do I tell to the C++ to connect to /dev/rfcomm0 ? Did I miss something ?

    Thanks


  • Qt Champions 2018

    @maxime.armand

    Have you actually tried it? It does exactly what you demand in step 1.

    And if you look in http://doc.qt.io/qt-5/qtserialport-creaderasync-main-cpp.html you will see that the serial port and the baud rate are given as command line parameters.

    Just (cross-)compile the program for the Raspberry, and run it. It should work like your HypterTerminal test.