For nearly the last two years I've been working on a new point-of-sale system, called Ontempo Store. Everything has been going relatively well, and the combination of Visual Studio and the .NET framework has made the development of the software much easier than it would have been in any other tool I know of.
Unfortunately there is one major feature we haven't yet implemented. One of our original design goals was to have both a Win32 and a Windows CE version of the software. Preferably built from a single, shared, source base. After all, no one wants to maintain multiple copies of their code.
Our initial problem was finding some CE compatible hardware and building a CE platform. My boss found some VIA hardware we liked, and a case of appropriate size. We ordered some units for use during development and started trying to build our CE platform. At this stage we'd hired a 'CE Expert', who quickly got CE starting on the device but that was about it.
Initially he had trouble getting the network devices to start correctly. That took a couple of months or so to sort out, and once that was solved we had issues deploying and debugging Visual Studio projects on it. Our expert eventually left our employ for various reasons, and so we tried to outsource the CE development. We didn't get too far down this track, with all the companies we spoke to either being too busy or too expensive for us to use.
At this stage the company decided to press on with development of the Win32 version of the software. Since we had no emulator or CE platform it didn't seem plausible to develop the application as a SmartDevice project, since we wouldn't be able to debug it. It was only a year or so later we realised our error, that we could start a SmartDevice application and attach Visual Studio to it for debugging after the fact.
In any case, we built our software as a Windows Application project with the intention of porting it to a compact framework application later. We did make an effort to ensure our data access layer and some other components are compact framework and SQL Mobile compatible, but the bulk of the code has been written without much thought to compatibility.
Perfoming the code port is, of course, easier said that done and we now have a big job ahead of us. Fortunately we think, barring unforeseen problems, we can probably get most of the job done in a couple of months if we work on the problem full time.
Our last remaining problem was we still didn't have a CE device. VIA have since stopped making the hardware we had planned to use, and their replacement gear is too expensive and not really suitable. An alternative set of hardware was found, based on a VIA chipset. My boss and a colleague of mine tried to build a CE platform themselves, but again had difficulty with getting all the devices to initialise properly. We also had huge problems getting a compatible wireless networking device to run, and this is a requirement for a second CE based project we're working on.
Recently our company partnered with HP, specifically with the intent of selling our POS with HP hardware. My boss mentioned our CE issues to some HP people and they asked why we didn't try the HP T5520 thin client. This device appears to come with Windows CE pre loaded, with a desktop and all the required terminal client software we want installed. It's also compatible with both 15" and 17" LCD screens which we need for our software. All of this is good stuff.
The HP T5520 is less powerful than the hardware we were looking at. For example, it has only an 800mhz processor as opposed to the 1.2 (fanless) or 1.6ghz CPU we were using. It also comes with only 128mb of RAM, compared with 256 or 512 in our old system. There is a bigger version of the unit available, with 1.5ghz processor and more RAM. The problem is we're not sure if it's available in NZ and it seems it only comes with Windows XP embedded, rather than CE.
The good news is this; we've previously run our software on a celeron 400 with 384mb of RAM, using Windows XP and SQL Express, and it ran fast enough to be 'usable'. Since the HP unit will be running Windows CE and SQL Mobile, there should be much less stress placed on the unit before our software starts, and so we're hoping the lower specification won't hurt us under the CE environment.
Before we spend the time porting our code, I'm going to build a SQL Mobile version of one of our SQL Express databases and a SmartDevice application to test our SQL statements against. If the database performs well enough, then we should be able to tidy up any performance issues in our own code, that appear under CE, without too much difficulty.
We've ordered one HP T5520 for testing, and it should arrive next week, so once I've got some results I'll make another post about what I've found.