Hi all,
This has been a subject I've been researching for a while now and I am still unsure on how best to meet the requirements I have.
We have a need to design a mobile application that can run on PDA's or Smartphones or both. This application needs to be able to interface with the device built in camera (if one) and needs to be able to interface with some kind of GPS device. This GPS device needs to be accessed externally via bluetooth or internally or both. We need to store the images persistantly on the device(s) so some kind of persistant storage API is a must. This application needs to talk to a SOAP web service so it needs to use any available HTTP and HTTPS API's. Finally can the framework support server to device comm requests Is this only acheivable through device polling Does the outlook implementation offer a workable API or solution to this
Can the .NET compact framework handle these requirements Is it something that can only be achieved in the .NET compact framework 2.0 and WM 5 Are the devices that this would work on limited (in terms of API support not hardware)
I'm after the simpilest implementation, I wish to avoid programming around several vendor specific API's, if I can. I don't care if I can achieve all of this on only a couple of Windows Mobile devices as long as I can achieve it. I've been racking my head on this for a while, if anyone can enlighten me on this and/or can show/direct me to some code examples of each of the features I require I would be very grateful.
TIA
Richard

Can the .NET compact framework meet my application requirements?
ASHegazy
Yes, that sounds like a rather simple NETCF application.
As to server to device communications, framework can do it easily – just listen for connections on the port. Your network have to support proper protocols to allow for that, of course, and most cellular network do not. So it’s up to the network, not the framework.
If you willing to go through e-mail, you can use Outlook push e-mail as a transport.
gregorylambert
There are hundreds of samples available all over the web, please use your favorite search engine to find them. For example:
http://search.msdn.microsoft.com/search/default.aspx __VIEWSTATE=&query=Compact+Framework+GPS+sample&siteid=0&tab=0
Also, MSDN has samples on pretty much every class available. As soon as you figured out which one to use for particular task, simply look it up on MSDN and you've got yourself a sample.
Here's how outlook push e-mail works:
http://www.microsoft.com/windowsmobile/articles/directpush.mspx
Found with this query:
http://www.google.com/search hl=en&q=how+outlook+push+e-mail+works&btnG=Google+Search
A little more sophisticated search would reveal more technical details, e.g.:
http://blogs.msdn.com/jasonlan/archive/2005/12/03/499714.aspx
jds1982
Hi Lloyd,
I know I'm not the expert in this (yet). This subject is been a huge headache, but I think i'm getting somewhere now ;)
What I've been hearing from people is that the new .NETCF2.0 features have to be implemented by the hardware vendors. For example, I have a device with a camera and I upgraded somehow to the .NETCF2.0, I'll be very luckly (if not miracle) if this API worked with the devices built in camera. I think this stuff is only gonna work with devices that were specifically built to run WM 5.0.
Hey I maybe wrong, but thats the gist of what I've found out so far from others on this topic.
HTH
Richard
John_NSI
Hi Ilya,
Thanks again. I needed someone who has had experience with this to confirm it. I've not any .NETCF background, I've not used it, and I've looked at all the different options the market has to offer.
Our organisation is primarily MS based but when I started searching the web I discovered that I could only really achieve this with WM 5.0 and .NETCF2.0. Now I know thats no longer an issue but at the time it put me off that path.
I began to look into the Jave Mobile offerings and found all the API's I required. When I started asking some Java proffesionals about the stability and support of these API's they told me that its not quite up to it yet. I was advised to look at MS again as the API's would be better supported. This is what I was looking to confirm. Its great that MS has all the API's I need in the framework but will they run reliably on any WM 5.0 deivce
I'm just trying to minimise the risks involved with investing in such a vastly expanding and changing set of technologies. I thought asking for advise from experts (yourself) with experience is a good starting point. I wanted to do this before spending several hours trauling the web for all of vast number of examples and help to be found on .NETCF2.0.
I think I'm confident enough now to back MS and try and build my application on the foundation of the .NETCF2.0. Hopefully it wont be too much of a bumpy ride, but knowing MS they like to keep us on our toes.
Thanks Again.
StevePO
I've done all of the above, mostly in concert, on several different WM5.0 devices running CF2.0. No third party APIs, no OpenNETCF. Server-->device was handled through SMS.
Carlos Marín
Hi Andrew,
Thanks again.
The devices will be used over large distances off site so wifi is out of the question. This is not a problem as long as I'm able to recieve and parse SMS reliably. I've had some inital thoughts on this, let me know what you think.
The devices will contact the server each time a "single" data transaction occurs (this means that a complete data capture session is completed on the device). The device will send the ID of the device, a timestamp and another ID according to location (Basically the bare minimum of data). The operators on site will periodically (on request) search through these transactions. If they identify one they are interested in they will make a request for the full data held on the mobile device. Ok, lets say this is done via SMS. The SMS is sent to the device in question and the onsite operator will wait a specified timeout period for the data. If the data cannot be recieved within the timeout, the operator will be alerted and given the option to recieve an email notification when the data is recieved by the server.
The full data on the device is important but not critical for the onsite application. As long as the operators know a transaction exists it should be enough in the immediate. We want to use this system because we want to save on network costs. The data held on the devices will not always be needed by the onsite operators and will go stale very quickly. In order to save on cost we thought we would only make the device send the minimal data across the network unless otherwise requested. I suppose a polling mechanism could acheive the same effect. This all comes down to the reliability of the different communications methods and the costs involved. I guess I need to do some thorough testing to make this choice.
So far this is what I come up with. In order to save time on this kind of research I thought we could build the application in a paramatised way in order to allow our customers to choose the communications model themselves. Basically as these costs are direct costs to them they should have the choice. So we would give them several options, for example:
1) All data to be sent to server at time of data capture.
2) Requested data to be sent to server once an SMS notification recieved by device.
3) Requested data to be sent to server once a Polling operation identifies the request.
4) Combination of any of the above.
Ok so this does make coding slightly more difficult but we could build a cost calculator on the side of this application in order to analyse the model they choose. This can help them identify the most cost effective options and give them the choice to change the model if they wanted to.
What do you think
In terms of reading SMS messages, can this be programmatically done without user intervention If so can examples of this be found on MSDN
Thanks
Richard
Tron Eivin
Hi Ilya,
Thanks for your reply.
Thats all good to hear. So the GPS/Bluetooth/Camera stuff is easily achievable then Could you point me to any examples
How does the Outlook push email work We've looked at SMS solutions but it seems rather expensive. Does the Outlook push email use a polling mechanism Is this cheaper I would want to avoid using email if possible as MAPI programming has given us all sorts of headaches in the past.
Thanks
MikD454
Hi All,
I have something of a simiular nature, I have to use the new Framwork 2 but my PPC said it does not support it. I use Windows CE 3.0 for a Jornada 540. I have racked my brains to no avial. Is there a way around this or am I stuck. Can I upgrade the Win CE software or Do I take the ultimate tool to it (The Hammer)
Any help would be greatly appreciated
Thanks
Lloyd
AntoineF
Hi Andrew,
Thanks for your post.
Thats great news. As I've said to Ilya, I'm gonna put my eggs in the MS basket and look into building my application using the .NETCF2.0.
My application needs the server to be able to request data from a particular device very quickly. Is this possible I'm trying to minimise transaction costs for my customers. In order to do this I was going to cache collected data on the devices until the data was requested by another user on the customers LAN.
Ok lets put the scenario into perspective. I have an application which allows mobile workers to collect data on a mobile device that may or may not be required by an onsite operator. The data collected will be fairly large so data costs to move this data via GPRS will be high. I don't want the workers to have the complication of docking devices to upload the data across their LAN. When the mobile worker captures data it will send the minimal data at the time to allow an onsite operator identify the transaction. When an operator identifies the transaction the server would somehow contact the device in question in order to collect the full data required.
I was not sure whether I could use a push mechanism or SMS I think because of the requirements i.e. fast device response; push may not be the best option. On the flip side is SMS any quicker Can I use a tcp/ip listener that keeps the GPRS connection alive without sending data Is there another mechanism more suitable for this application
I was going to think about paramatising this system to allow the individule customers to decide whether they want to send all data at the time, use a notification service or a combination of both. What would be the best thing to do here I suppose this application would benefit greatly with the use of some form of compression technology i.e. LZW alogrithm
Thanks
Richard
MARCEL MEDINA
I haven't really used any newer "push" tech under WM5.0 yet.
Not sure about keeping the GPRS connection alive, either. I've had varying experiences on my WM5.0 PPC and WM5.0 Smartphone devices, and I know others have reported varying efforts, experiments and outcomes as far as keeping-alive. You can up the device's timeouts, but I'm not certain how long you can keep GPRS connected without some form of activity. My last project had an FTP action every minute, so it was easy to keep alive.
Are you forced to look at GPRS Are the devices operating outside of WiFi coverage If you could go WiFi, I'd just have each device maintain a socket with the server, and poll for the data you're looking to collect, or poll for the state, then initiate your data transfer. If the potential number of devices is too high for this scenario, I'd have to wonder what you're trying to do, and if it maybe doesn't require more than one app server.
However, SMS is pretty quick and reliable, in my experience. Monitor the SMS inbox, receive and parse your message, respond. 999 times out of 1000 I noticed very little latency while the message travelled over the cell network.