GUI for embedded systems

Discussion in 'Embedded Systems and Microcontrollers' started by msr, May 12, 2010.

  1. msr

    Thread Starter Active Member

    Jul 8, 2008

    Could someone point me to something that could help me creating/understanding GUI for embedded systems in general? What's the "easier" (I know "easy" could be relative) to get GUI on a embedded system?

    The hardware I'm looking for is ARM-based microcontrollers (Cortex M3, ARM7 or ARM9).

    Thank you!
  2. davebee

    Well-Known Member

    Oct 22, 2008
    So you want a graphical user interface for an embedded system.

    The easiest way would be to use code that has already been written, meaning use hardware that other people have already connected to your controller/processor.

    Where you might want to start would be to define what the GUI might consist of -

    What input device(s) - keypad? full-sized keyboard? a few buttons? a mouse?

    What output device(s) - graphical display? (I guess that would be pretty much required for a "GUI"), but this could be an old CRT, or it could be a newer LCD display.

    Then for each device, and for the specific processor you have, try to find what's already been done in connecting them together.
  3. retched

    AAC Fanatic!

    Dec 5, 2009
  4. msr

    Thread Starter Active Member

    Jul 8, 2008
    Ok, so my inputs and outputs will be:

    Inputs: touchscreen or few buttons
    Outputs: LCD or OLED

    I would like to understand how GUIs are made in general (ie, depending on the requirements, from the most demanding to the less demandig). From a simple mp3 player GUI (monochromatic) to industrial displays controlling/monitoring machines (color, few buttons on the screen, dialogs, menus, etc).

    For the most demanding systems, maybe Qt+Linux+WinCE were some (which more?) of the keywords. But what about "smaller" systems?

    Say, I have a board (pcb) which controls a robotic arm and I want a small user-interface (a "specialized" LCD, not a desktop or laptop) to interact with that (move up, move down, etc). How can I acomplish that?

    What frameworks/libraries/toolsuites are there to create small embedded GUI?

    (note that Im looking at ARM, so 32 bit microcontrollers)

  5. BMorse

    Senior Member

    Sep 26, 2009
    When you say GUI, you are referring to a "Graphical User Interface", some embedded systems do not use Graphics to represent a Menu, sometimes a 2 line by 16 character Alpha numeric LCD is all you will need along with at most 4 buttons to interface to say a robot, the button functions can be changed on the fly depending on the system requirements from the user, so at a certain point of a menu 2 buttons could act a scroll up or down, and once a menu Item is selected, they can be used for incrementing or decrementing a count or value... There really is no "standard" way of creating a User interface with embedded systems....

    And Also with embedded systems, the more "Graphical" your GUI is, the more resources and overhead code you will have to use..... so sometimes less is more....

    My .02
  6. msr

    Thread Starter Active Member

    Jul 8, 2008
    Right. But suppose you want something more complex than an alpha numeric LCD+some buttons could do.

    Another example of what Im trying to explain: a train tickets machine (with a touchscreen LCD interface). With buttons, menus for ticket types, destinations names, etc That should be very easy to use and a touchscreen GUI would be very helpful. Some graphics would increase the "ease of use" of the machine, it would be at least more user-friendly.

    In that case a simple alpha numeric LCD+buttons are insufficient and I think Linux or WinCE are too heavy alternatives.

    I'm referring to something like this:
  7. retched

    AAC Fanatic!

    Dec 5, 2009
    Is this going to have to interface with the ticketing system? If so, you are going to require secure transfer, especially for credit card transactions. You will also need some sort of verifiability for the tickets.

    In most ticketing systems, it contacts a central database to retrieve a encoded number that will print as a barcode on the ticket. That information is relayed back to the central database so any other ticket reader on the system can scan the barcode or magnetic strip to see if the card is valid, the value left on the ticket, and give the ability to "refill" the ticket. The info is not kept on the ticket, it is kept on the central database.

    Dealing with all this, I would get the $45 credit card sized full PC and run linux to avoid paying microsoft, and you can do all the networking you need. Even wireless.