C# – the best way to handle a weak wireless signal from a mobile app


I have a handheld scanning device running Windows 6.0. the handheld is responsible for scanning barcodes at a stationary position outdoors as people enter and leave a building. The primary concern for this application is to get people in and out as quickly as possible.

Now the handheld is communicating with a computer in another building that is behind thick concrete walls. All it does is connect to a socket, send the barcode information, and receive a small xml file in response.

What do you think would be the best way to handle the application not getting a strong signal? Should I let the OS handle the warnings and possible disconnection, or should I monitor the application and shut it down if the signal strength drops to 1 bar for a defined period of time?

The problem with letting the OS handle everything, is that I don't know if the user will have low signal strength warnings enabled. Plus if it is a weak signal, and the user continues to use the application, it will greatly slow down the queue.

If I shut it down myself, I at least ensure the user has to stop using the application and switch to a manual method, but the downside is if the weak signal was just an anomaly then I've disconnected the application and now I've stuck the user with the responsibility of trying to reconnect every few minutes and seeing if it works yet. (Once the connection is lost, it can't automatically be restored, it requires user input).

This is the first application I've made for a handheld device, so I'm not sure what the standard approach to an issue like this is. Any advice?

Best Solution

One thing to consider is a better antenna on the wireless router (google will turn up many options). Some devices can also accept an external antenna, either natively or via a hardware hack.

On the software side, perhaps consider displaying a warning in a status area indicating that the signal strength is weak and suggesting the manual method until a better signal strength is achieved. I would certainly leave it up to the user to decide how to proceed. Few things are more irritating to an end user than software trying to be more clever than the user.