No announcement yet.

gen4-uLCD-24DTn Diablo16, C/C++ Project Feasibility

  • Filter
  • Time
  • Show
Clear All
new posts

  • gen4-uLCD-24DTn Diablo16, C/C++ Project Feasibility

    Hello all,

    I have recently acquired a gen4-uLCD-24DT display module. Previously I have purchased and considered using an IoD-09TH for a project.
    It turns out that the 24DT is more appropriate simply due to size and touch capabilities, and so far it seems to be great within the Workshop4 environment.

    The issue is that it is essential that I use a unit testing framework to write the software for the module, being CppUTest. This restricts my language options to just C and C++. I cannot use the 4DGL language referenced in the datasheet, as this is not compatible with the framework. With the IoD09TH, I had to use Arduino (not ideal as obviously Arduino has its own unique language). The unit tests are executed by using a makefile which compiles C++. This means that I had to create all of my production code external to the Arduino/Workshop4 IDE, and then call the modules in the .ino file when necessary. On top of this, the ESP8266 Core library was impossible to integrate into the makefile with CppUTest at the same time, meaning that I had to manually delete all function and class definitions within the required libraries (HardwareSerial.h, SD.h, etc..), and just keep the declarations so that the compiler wouldn't produce error.

    I have just discovered that within your sample projects folder for the gen4-uLCD-24DT, there is a "BIGDEMO.C" file. Does this mean that I can actually write C code to program this display module, with all of the functionality that is available in the reference manual (assuming 4DGL programming)? I have noticed that I cannot compile and upload ".c" files onto a device from within the WS4 IDE, and obviously cannot with Arduino either. Have you got an existing environment example that can compile and upload ".c/cpp" files onto a Diablo16 device? Presumably this would involve some makefile equivalent containing the external dependencies etc. Any suggestions would be greatly appreciated.


    Last edited by RRSmith; 21st January 2019, 08:36 PM.

  • #2
    Hello Rob,

    For the "BigDemo.C", are you referring to the file that could be found here? C:\Users\Public\Documents\4D Labs\Diablo Serial\C\Samples

    If so, then that program is made for a Host controller and it's not meant to be loaded directly into a 4D Display.

    If you want, you could use your gen4-uLCD-24DT and write a 4DGL code so you could do the display related testing via Serial comms instead.

    If you want to use a similar product to the IoD-09TH, we have the gen4-IoD Range, they have larger display sizes and can detect touch inputs.

    However, considering that you've had difficulties before, this might not be the best option.

    Also, even if you've successfully passed your previous hurdles, you may still not be able to do a full test with your testing framework as the GUI will still need to be tested manually.

    gen4-IoD Range:

    I hope this helps.

    Best regards,
    Last edited by michael_4D; 22nd January 2019, 01:47 PM.


    • #3
      Thanks for the fast reply Michael,

      I see! It may seem like I'm a bit stuck. I will work on a solution and perhaps post my findings.

      kind regards,



      • #4
        Hello again,

        I have thought of a solution (and another question!). If i use the gen4-IoD-24T, then I can program it using the Arduino environment/language. I have found an Arduino compatible unit testing framework called "arduinounit", which at a glance seems like it has enough functionality. This means that I will have one self contained environment; I am also comfortable in using the ESP8266 core now, perfect! My question is, I have just seen your more expensive model (4Dunio-24), and obviously this module has a dedicated GPU (Picasso), as well as 2 CPUs (ESP8266 and Atmel processor). Presumably this makes the module faster, and with greater functionality due to the GPU?
        So clearly the much cheaper gen4-IoD-24T is lacking this extra power, is this a problem at all? I can understand that the IoD-09TH can get away with this, as it's much smaller; but I can also imagine a 2.4" screen may not appear to be as smooth?




        • #5
          Hello Rob,

          I'm not really familiar with "arduinounit" so I can't guarantee that it would work smoothly.

          You're correct, the 4Duino-24 has a much more capable graphics processor than the gen4-IoD-24T. This results to noticeably faster and more appealing graphics.

          So clearly the much cheaper gen4-IoD-24T is lacking this extra power, is this a problem at all?
          This would depend entirely on your application. If your project relies on quick graphical transitions (e.g. a clock hand that would update once every second), then the 4duino might be a better choice. However, if that is not your priority, then a gen4-IoD-24T might be good enough for you.

          Since you mentioned that you already have a gen4-uLCD-24DT (and you haven't emphasized on needing the WiFi capabilities of the aforementioned modules), I would like to mention that you can manipulate this display with a host controller such as an arduino via Serial comms. The 4Duino-24 works in a similar manner; the picaso chip communicates with the atmega32u4 chip serially.

          This application note could provide additional information.

          Serial Connection to an Arduino Host

          Best regards,


          • #6

            Many thanks for your help Michael. I will look into both Arduino compatible display modules, and also consider the the serial protocol solution.

            Thanks again!