LinuxQuestions.org
Welcome to the most active Linux Forum on the web.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Software
User Name
Password
Linux - Software This forum is for Software issues.
Having a problem installing a new program? Want to know which application is best for the job? Post your question in this forum.

Notices


Reply
  Search this Thread
Old 01-27-2013, 06:22 PM   #1
rplinuxdev
LQ Newbie
 
Registered: Nov 2010
Posts: 4

Rep: Reputation: 0
Advice needed for embedded ui


Long time reader, first time poster.

I have checked the "similar threads" functionality and although some are a little similar, this question is specific to an architecture.

The short version of the question / request is some advice on technology stack for the user interface, windowing system and graphical toolkit for an x86_64 based embedded device.

The longer version is:

- I have 3 x86_64 embedded units, connected by a network. 2 of the devices are custom hardware and do measurement and computation. The third - which I need advice for - is for the user experience, providing front end control of applications on the 2 other units.

- During the development, I have been controlling the apps on the compute nodes through rudimentary command line commands. So there are no X based apps for me to port.

- I want a modern look and feel for the user interface, similar to js + html 5 and CSS3.

- Widgets / toolkit to "standardize" things and speed up development of the graphical front ends would be fantastic

- The user interface will be single user.

- I want to boot straight into a splash screen, not into an X desktop

- I would prefer to do without the overheads of X unless there are no other technology stacks that will support a gui on one machine and the app proper on another machine.

- Most of my experience is in C++ but I have Javascript, CSS, HTML 5 and .net (both MS native and through MONO) also.

- The user experience needs to be responsive to display realtime data from the compute nodes.

- The operating system is built from a slackware 64 bit system with trimmed down kernel and I can add stuff as required.

- I already considered using web front end, but of those I've tested, they are not responsive enough.

- The display is a 19" touchscreen and the input devices are keyboard and trackball

I would really appreciate input / advice from people who have done this before and can give me some idea of good stack mixes. I have a list of technologies, but none of them come right out and say "I play well with x,y or z" or "I DONT play well with a,b or c" and given how many there are available, I am a bit overwhelmed!

Thanks for any / all help in advance.

Richard

Last edited by rplinuxdev; 01-27-2013 at 06:40 PM. Reason: including missing information
 
Old 01-27-2013, 06:33 PM   #2
frieza
Senior Member
 
Registered: Feb 2002
Location: harvard, il
Distribution: Ubuntu 11.4,DD-WRT micro plus ssh,lfs-6.6,Fedora 15,Fedora 16
Posts: 3,233

Rep: Reputation: 406Reputation: 406Reputation: 406Reputation: 406Reputation: 406
well there is the frame-buffer console if the display is a monitor directly attached to the unit, other than that there are many lightweight web servers that can be used to serve an Ajax based administration page (such as lighthttpd)

i would start by looking at various router firmwares like openwrt to see how they work, but it is definitely possible, either with PHP based Ajax or even C++ based cgi (common gateway interface) based Ajax)

not sure what you mean by boot into 'splash screen', splash screens provide unnecessary overhead and are for the most part eye candy, you would be better off booting to a text console.

Last edited by frieza; 01-27-2013 at 06:37 PM.
 
Old 01-28-2013, 04:23 AM   #3
rplinuxdev
LQ Newbie
 
Registered: Nov 2010
Posts: 4

Original Poster
Rep: Reputation: 0
By "boot into splash screen" I mean I want to hide the text console while it's booting and just show a boot screen. Not relevant to this question, but included for completeness: I am also investigating the various ways to speed up the boot process.

If web based ui is your suggestion, presumably I still need a windowing system or can lighthttpd render directly to directfb?

I guess web based would be easier than the alternatives in some ways, but I was hoping that someone would be able to suggest a non-web alternative.

I was looking at qtopia + directfb but the project doesnt seem to exist any more and the legacy code I found doesnt appear to lend itself to the "modern look and feel" I'm looking for.

In passing, Ive seen things like gtk+ suggested, but again, I can't determine what technology stack would be required for my scenario (cant determine if it works with directfb?).

I'm sure there is a sea of possibilities, but I'm getting bogged down!
 
Old 01-28-2013, 06:45 AM   #4
frieza
Senior Member
 
Registered: Feb 2002
Location: harvard, il
Distribution: Ubuntu 11.4,DD-WRT micro plus ssh,lfs-6.6,Fedora 15,Fedora 16
Posts: 3,233

Rep: Reputation: 406Reputation: 406Reputation: 406Reputation: 406Reputation: 406
Quote:
Originally Posted by rplinuxdev View Post
By "boot into splash screen" I mean I want to hide the text console while it's booting and just show a boot screen. Not relevant to this question, but included for completeness: I am also investigating the various ways to speed up the boot process.
the quickest way to speed up boot would be to simply strip out serves that aren't needed

Quote:
Originally Posted by rplinuxdev View Post
If web based ui is your suggestion, presumably I still need a windowing system or can lighthttpd render directly to directfb?
web based ui would rely on the web browser and therefore on the machine running the web browser, not the server

Quote:
Originally Posted by rplinuxdev View Post
I guess web based would be easier than the alternatives in some ways, but I was hoping that someone would be able to suggest a non-web alternative.
gtk is an X11 interface, but with a webserver, irrelevant

Quote:
Originally Posted by rplinuxdev View Post
I was looking at qtopia + directfb but the project doesnt seem to exist any more and the legacy code I found doesnt appear to lend itself to the "modern look and feel" I'm looking for.
never heard of it, but a properly configured webserver with a script that is written properly should be able to make the necessary modifications to your config files and issue commands to the server

Quote:
Originally Posted by rplinuxdev View Post
In passing, Ive seen things like gtk+ suggested, but again, I can't determine what technology stack would be required for my scenario (cant determine if it works with directfb?).
you would need something like a php script, lighthttpd or similar
fb is irrelevant since the machine would be headless

Quote:
Originally Posted by rplinuxdev View Post
I'm sure there is a sea of possibilities, but I'm getting bogged down!
don't be discoraged, a little reading will help
 
Old 01-28-2013, 10:31 AM   #5
rplinuxdev
LQ Newbie
 
Registered: Nov 2010
Posts: 4

Original Poster
Rep: Reputation: 0
Quote:
Originally Posted by frieza View Post
the quickest way to speed up boot would be to simply strip out serves that aren't needed
As I said in my first post, the OS is custom and not an OOTB distribution. I built it up from scratch, building each program from a development slackware 64 system. There are no unnecessary servers and I am using this: http://elinux.org/Boot_Time to help make boot time even quicker.

Quote:
Originally Posted by frieza View Post
web based ui would rely on the web browser and therefore on the machine running the web browser, not the server
eh?! The machine that is set aside to host the UI would be both the machine that has the web browser AND the web server on...sorry I dont get your point?

Quote:
Originally Posted by frieza View Post
gtk is an X11 interface, but with a webserver, irrelevant
GTK+ is listed on the directfb site as a graphical toolkit. So presumably directfb and GTK+ can work together to provide the barebones infrastructure for a ui system. How is that not relevant?

Quote:
Originally Posted by frieza View Post
never heard of it, but a properly configured webserver with a script that is written properly should be able to make the necessary modifications to your config files and issue commands to the server
The ui storyboard so far is significantly more elaborate than merely changing some config files and sending start / stop messages. I have coded apps in asp.net and php before, but although I know they COULD be used for this, because of the realtime data display they are less ideal than native code. I think I really need to stick to C++ or even C for this.

Quote:
Originally Posted by frieza View Post
you would need something like a php script, lighthttpd or similar
fb is irrelevant since the machine would be headless
As said in my first post, it will NOT be headless. It has a 19 inch touchscreen. Not sure what made you think it was headless given that it is the user interface....

To recap:

3 machines.
2 are used for measuring aparatus and doing the real "work" (computation).
1 will be used to host the user interface which consists (or will consist - I only have prototypes and storyboards right now) of multiple graphical front end apps.
The 3 machines are networked together.
It is not appropriate to put user interface stuff on either of the 2 computation engines because of their hard real-time nature and the fact that they are custom hardware, specific to their tasks.


I could really use some advice from someone that has done this before.
 
Old 01-28-2013, 10:53 AM   #6
frieza
Senior Member
 
Registered: Feb 2002
Location: harvard, il
Distribution: Ubuntu 11.4,DD-WRT micro plus ssh,lfs-6.6,Fedora 15,Fedora 16
Posts: 3,233

Rep: Reputation: 406Reputation: 406Reputation: 406Reputation: 406Reputation: 406
Quote:
Originally Posted by rplinuxdev View Post
As I said in my first post, the OS is custom and not an OOTB distribution. I built it up from scratch, building each program from a development Slackware 64 system. There are no unnecessary servers and I am using this: http://elinux.org/Boot_Time to help make boot time even quicker.
other than compiling out unnecessary options and only installing what is necessary, not sure if there is much more you can do.

Quote:
Originally Posted by rplinuxdev View Post
eh?! The machine that is set aside to host the UI would be both the machine that has the web browser AND the web server on...sorry I dont get your point?
no the 'servers' would be on the other 2 machines, not the machine hosting the UI, there has to be a service of some sort running on the work machines that interacts with whatever parameters you need them to interact with, and then hand them off to the machine running your interface, then accept input from the machine running the interface and pass them back to the software on the work machines. This could be a web interface, or a custom c++ program listening on a tcp socket for a connection from the remote interface, either way the server would not be on the same machine as the UI, it would be running on the work machine.

Quote:
Originally Posted by rplinuxdev View Post
GTK+ is listed on the directfb site as a graphical toolkit. So presumably directfb and GTK+ can work together to provide the barebones infrastructure for a ui system. How is that not relevant?
according to This website, it can be done, but then again the work machines are probably headless, so they would not be hosting the interface, the third machine would, which could easily have an X11 interface and probably should unless you want to code your own window manager.

Quote:
Originally Posted by rplinuxdev View Post
The ui storyboard so far is significantly more elaborate than merely changing some config files and sending start / stop messages. I have coded apps in asp.net and php before, but although I know they COULD be used for this, because of the realtime data display they are less ideal than native code. I think I really need to stick to C++ or even C for this.
that is true, in your case c or c++ would probably be better


Quote:
Originally Posted by rplinuxdev View Post
As said in my first post, it will NOT be headless. It has a 19 inch touchscreen. Not sure what made you think it was headless given that it is the user interface....

To recap:

3 machines.
2 are used for measuring apparatus and doing the real "work" (computation).
1 will be used to host the user interface which consists (or will consist - I only have prototypes and storyboards right now) of multiple graphical front end apps.
The 3 machines are networked together.
It is not appropriate to put user interface stuff on either of the 2 computation engines because of their hard real-time nature and the fact that they are custom hardware, specific to their tasks.

I could really use some advice from someone that has done this before.
there are 3 machines listed in your setup, only one monitor

Code:
     {monitor}
         |
   [ui machine]-(work machine 2)
    |        
(Work mach 1)
the work machines would be headless, naturally the UI machine isn't since you need a monitor of some nature to interact with the UI, i was only referring to the WORK machines being headless.

perhaps you need to do some more flow-charting of your operations as it seems by how you post that you still haven't quite gotten a full understanding of what it is you are trying to do.

Last edited by frieza; 01-28-2013 at 10:57 AM.
 
Old 01-28-2013, 01:17 PM   #7
rplinuxdev
LQ Newbie
 
Registered: Nov 2010
Posts: 4

Original Poster
Rep: Reputation: 0
Quote:
Originally Posted by frieza View Post
other than compiling out unnecessary options and only installing what is necessary, not sure if there is much more you can do
There are quite a few options to speed up the boot process depending on the hardware and storage devices etc. The link is a good resource for that. I have a fair amount of embedded linux experience, but all of the devices I have worked on have either been headless or command line controlled. GUI stuff has - until now - been out of my work sphere.

Quote:
Originally Posted by frieza View Post
no the 'servers' would be on the other 2 machines, not the machine hosting the UI, there has to be a service of some sort running on the work machines... <snip>
Yes, I know how client-server apps work
I thought you were talking about the lighthttpd webserver. I wouldnt host that on either of the work machines, only the user interface machine.

Quote:
Originally Posted by frieza View Post
according to This website, it can be done, but then again the work machines are probably headless, so they would not be hosting the interface, the third machine would, which could easily have an X11 interface and probably should unless you want to code your own window manager.
This is more in-line with the question I was asking. But I dont want the overheads of a full x11 system. I can see from the directfb site that whole user interfaces have been built from various technologies on top of directfb, but my question was really if anyone had experience of this or similar setups and can recommend any of the toolkits listed on the directfb site OR others not listed there. OR if in fact they have experience of toolkits on top of something OTHER than directfb.


Quote:
Originally Posted by frieza View Post
there are 3 machines listed in your setup, only one monitor
Correct.

Quote:
Originally Posted by frieza View Post
perhaps you need to <snip>
That would be funny if it were true. However, as a systems architect, Im more than happy with my design, especially as it is a very common architecture. The only difference in this case from other work I have done is the requirement for a gui; All other times, it has been commandline / console control. And as the original question was ABOUT the gui technologies I assumed that this would be reasonably straightforward for you to understand; apparently not.

As you haven't suggested any other technologies besides the ones I have mentioned, havent heard of one of the ones I listed (which is - Im assured - quite well known in embedded circles) and have only really told me something that I already know, I presume that you haven't done this type of work yourself and that this is more than likely not the best place for me to be asking for this advice.

I didn't see an embedded software section in the forums. Can you at least recommend a linux embedded site more suited to my research?

By the way I don't mean to be rude, but if you have no experience of the subject in question then rather than just "shooting the breeze" (not all of us have the time to sit and waffle on for the sake of making ourselves seem more impaortant than we are) it would have been easier - and quicker - if you had just said "best place to ask that is....x,y or z". No offence intended.

Regards

Richard
 
Old 01-28-2013, 02:57 PM   #8
rtmistler
Moderator
 
Registered: Mar 2011
Location: USA
Distribution: MINT Debian, Angstrom, SUSE, Ubuntu, Debian
Posts: 9,882
Blog Entries: 13

Rep: Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930
Qt, originally by Nokia, now owned by Digia.

There's free which means you have to search and read up on all the examples. There's paid which gives you support and when you cannot get anywhere, you can ask direct and involved questions of the support team where once they understand what you're asking, they mostly write an example application to show you what you want. They'll also look at your code clips to help you figure out what your problem is, within the scope of their support that is; if you're just programming horribly, they will only take you so far.

I've used Qt for touch screen programming. It has the concept of a splash screen, I've used that. I've done kiosk programming with it. You can create a widget and specify an image file to be the picture for the widget; thereby having custom buttons via the picture instead of doing all the styling of the button using their settings and style sheets; however you can design widgets using their style sheets and properties.

All C++ I think, or rather I've always programmed in C++ for it, all their examples are in C++ and typically when I exchange code concepts with them it's via C++.

On the kiosk concept, someone had us create their application for a touch screen using graphics that they had a graphical artist invent. It was pretty much world class because the graphical artist created multi-layer drawings which I could grab each sub-portion using either Gimp or Photoshop and then declare that image to be the widget image or icon. Further the artist also created hover, clicked, and unavailable views of the widgets so that if one was deactivated, or when one was pressed, it would look correctly and I could; of course specify the view of all those widget states.

Besides doing all the preparation to organize source definitions, per screen, specify all the widgets, create my application framework and do the logic to act upon widget activations, all the looks and underlying graphical controls were either the graphic artists efforts, or supplied by Qt.

Runs on Windows and Linux and sorry to say but we had to move to Windows because when we originally did it, Linux didn't have very good drivers for touch screens. That has changed over the years, but I still support that application under Windows where it has been deployed.

As far as responsiveness goes, widget activation is event driven. If you need timers, Qt supplies them.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Newbie advice on embedded systems Dani1973 Linux - Embedded & Single-board computer 8 02-22-2011 03:52 AM
Embedded system with geode, advice with software.. webquinty Linux - Embedded & Single-board computer 2 06-19-2009 10:50 AM
Buying advice: embedded or netbook? TwinReverb Linux - Hardware 1 06-05-2009 12:34 PM
Which Handeld PC (with embedded Keyboard) of ~150g would you advice ? (forLinux) frenchn00b General 2 05-23-2008 01:32 PM
PDA + wifi + embedded mech. keyboard , advice ? frenchn00b General 1 10-15-2007 06:10 PM

LinuxQuestions.org > Forums > Linux Forums > Linux - Software

All times are GMT -5. The time now is 08:24 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration