Search
Wednesday, March 10, 2010 ..:: Software ::.. Register  Login
Software for the car

When I started this project, all I wanted was to have a good MP3 player in my car. I discussed this with a few friends and then all of a sudden it became clear that I also needed HDD support, because I wanted to have all my CD collection in the car, not only a CD or two.

It is always good to discuss your ideas with friends. Not only can they tap you on the shoulder and congratulate you on your smarts, but also some of them have great ideas themselves and can be the source of sound advice and inspiration. In addition, during these discussions your idea becomes clearer and more refined to you too as well. That is how I came up with the decision to put a fully functional PC in my car and not only an MP3 player.

Once I decided to use a fully functional computer, it appeared only natural to add a navigation system. Subsequently I decided that having a DVD player wouldn’t hurt. With these on the list, why not add some programs to gather statistics about my car trips. Or some other utilities, like a calculator, business trip database, to-do list, phonebook, Internet connection, etc…

I did not want simply to install on my car PC whatever application I needed right off the shelf. It would be too easy. I wanted to build my own application that will provide all the functionality I needed in the car.

Yet another reason to build a new application from scratch was that none of the applications I wanted were designed for use in a car environment. They are developed with the assumption that the user has enough time to open menus, look for options, click here and there, have some coffee, look back again and so on.

In the car, you can only glance at the monitor, not stare at it. Given such a premise, I developed a list with ergonomic requirements that need to be fulfilled for a safe and easy to use application to be run in a touch-screen, car environment.

All functional buttons must be easy to locate at a glance;
All button icons must be clear and easy to comprehend;
No part of the UI should be dynamic. This means all controls must appear always at the same position;
Text must be as static as possible;
Text size should be big enough to allow the user to read without problems. (If you catch yourself “reading” the text, the font is too small.)
Using a scroll bar is out of question. Using easy accessible buttons must provide this functionality;

These are just a few of the problems that I encountered while developing my application and I am sure the list will be updated and will continue to grow up.

Operating system

I am a Windows developer and this ends the discussion about what operating system to use. It will be some flavour of Windows.

I know there are many Linux enthusiasts that will be disappointed by this, but I haven’t found any good reason to use Linux. “Let’s go Linux!” just for the sake not to be Windows doesn’t work for me. I need arguments. And good ones too.

Do not get me wrong. I am not a Microsoft evangelist. I just cannot wait for the time when Linux will be up to the battle with Windows. Until then, I do not seem to have much of a choice, when it comes to develop something fast, something that has a good UI and is easy to use.

Now the question is which Windows?

Right now it is Win98. Stop laughing! It is stripped down using Win98 Lite and will almost fit on a Compact Flash card. Still working on that.

Win98 is very easy to tweak. That is why I decided to use it. One can change the start-up logo, change the shell and change everything. I even can choose not to load the GUI at all. The result is very nice looking command prompt. Not as sophisticated as Linux thought.

I think now to move to XP, because I need Bluetooth support. Also, XP will give me some better GUI controls and overall better performance.

Navigation
Mode details >>

The Navigation System is based on Microsoft MapPoint control. I searched for applications that look on the screen as good as MapPoint and did not find anything. Well, I found a few other companies that offer SDKs (remember – I do not need an application, I need a tool to create my navigation system), but they were too expensive or they did not provide maps. I know that you might think that MapPoint is very expensive. Yes, it is. But not if you want to get a good map control with maps, support from the vendor, user groups, help with the development, and code examples.

To be honest, I decided to go with Win98 just because of MapPoint. I did not find anything that I liked on Linux, that will let me develop a navigation application, not just to install one and use it.

Microsoft says that MapPoint 2004 doesn’t use MS JVM. This could make it a bit faster than the previous versions. I’ll post here my experience - when I have something to post.

To communicate with the GPS unit I use CSerialPort, which I found on http://www.codeproject.com. I encountered a few problems with the way I use this class and I eventually will write my own version, but for now it works just perfect.

Music library
Mode details >>

When I started to develop the music library, my first choice was WinAmp. They have a SDK and it is easy to embed WinAmp in your application. Except that with WinAmp there is no way to embed the visualization into your dialog box. I tried many things, some of them really ugly (form C++ point of view), but nothing worked well. If you know how to embed WinAmp visualization in a dialog box, please let me know.

Then I found that MS Windows Media Player Control provides everything I needed. It provides an easy way to search in the music collection, has DVD support and I can embed the visualizations in my application! The only thing it doesn’t have is an equalizer. I wander if the guys from Microsoft and WinAmp can just get together and create something that is finished and easy to use? Please?

Now the WinAmp is out of my code, WMP 9.0 is in.

Well, it turned out, that I should probably remove the WMP visualization from the UI anyway. MapPoint utilizes the CPU 100% when centers the map and as a result WMP visualization ‘freezes’ for a moment. Very annoying.

Should I go back to WinAmp once I’ve decided I did not need visualizations anymore? The thing is that it is too late to go back to WinAmp. I have to re-do too many things in my code. WinAmp doesn’t have media library functionality and everything is up to the developer. This means I have to implement or use some sort of a database – a rational or a flat-file one. Do I hear people mentioning MySQL? I have used MySQL API for Windows and it might work. But it sounds like a lot of work to me for something that I already have by simply embedding WMP control.

I do not say that WMP is the perfect and only choice. It is heavy and slow sometimes. I continue to search for alternatives. If you know a good SDK that is out there, please enlighten me.

MonkeysAudio sounds promising, but I’ve never heard anything encoded in that format. I have to like the sound quality first, before I move to MonkeysAudio. It looks like I will have to use MonkeysAudio encoder/decoder and then use a WAV player to play the decoded file. We will see. When it comes to the sound quality, I’m a bit picky.

I do not know why, but for me WMA sounds better than MP3. I’ll stick with WMA until I find some other format that I like more.

Radio

Radio functionality is not included in the current single-DIN model and I’ve postponed the development of this module. There simply is no room in the case to put a radio/TV board inside.

With the radio/TV board I face the same problem I described before - it is almost impossible to find a SDK for any FM/TV card.

Anyway, I connect the PC to my car stereo using an FM modulator and I use my car radio as an amplifier. Until I decide to remove the car radio completely, there is no real benefit implementing radio functionality in my application.

DVD

Under development. Check later for updates.

TV

A TV is not included in the single-DIN project. As I said - I was going to use FM/TV combo card and that is why TV and Radio components will be developed later, probably as a bundle.

Tools
Mode details >>

I plan to make available different tools in my car application. Right now the only module that is developed is Calculator. It performs some very basic operations, as well as some conversions. It has an easy interface and is capable of converting back and forth Imperial System and SI units of temperature, speed, weight and distance.

What other tools do I plan to develop? I guess an address book would be nice to have. Then probably something that will keep track of business trips.

I think that the more I use my car PC the better ideas I have what are the appropriate tolls to iclude. I'll keep this page updated.

Car Data

Car data application is supposed to collect some information about the car and to help the driver. It will show statistical data, like average speed, average trip distance, average trip time, average gas usage. This information will be provided for the current trip as well as since the beginning of data collection (application installation).

Of course, there will be reminders about oil change, tire change/rotation, and engine check ups – all choirs that come with the car.

Next will be to connect to the car computer and download data from it, but that will be for the next versions of my car PC.

Settings

Settings are supposed to make the application customization easy. Here it will be possible to choose for example different skins, date and time formats colors and text size.

This part of the application will be changing constantly, until the last version is installed in my car PC. In other words, Settings will be the place to customize the application look and some of its functionalities.

 

Application GUI developed with help from

Copyright 2005 by Nick Kolev   Terms Of Use  Privacy Statement