For 5 years now I've been occasionally writing more features for Windows CE based barcode scanners. I wouldn't say that qualifies as "Windows Phone", so I didn't vote for that.
Thankfully by now we are more and more replacing these Windows CE things with iphones plus sleeves with barcode scanners which gives us a nicer API and the end user gets a much cooler device to work with.
The .NET Compact Framework is a beast: It's extremely slow and still it happens more often than not that you need something, you check the documentation, you find it, only to read that it's only supported on the desktop.
And don't get me started on the development/run/debug cycle: Both the emulator and the actual device are slow and after the 200st time that crappy assistant offered me to register my barcode scanner or even emulator(!) with Microsoft, I lost all the love that might still have been left.
Oh. And the SDKs for the scanners have this distinct feeling of being software written by hardware people when I look at how "convenient" they are to use. My personal favorite: The driver that hard-crashes the device whenever you terminate the application from the debugger. Yeah. Hit that stop-button you are used to and you'll have to wait through another 3 minute reboot cycle.
You iphone and android people have it so nice </cranky>
As part of my degree I had to work in a team developing on some ancient Dell PDA that ran a crippled version of Java 1.4 so I can feel your pain. My favourite bit was having to pull out the SD card from my machine, insert it into the device, run the code then plug it back into my machine to pull my logs so I could see what just happened!
http://www.koamtac.com/ has a bluetooth scanner that can be accessed via the ExternalAccessory framework (so no crappy HID implementation that hides the keyboard). The build-quality of the hardware is a bit flaky IMHO and the UI on that thing is horrendous. Pairing it with an iphone means visiting two menus with abbreviated texts and bad english.
The SDK is definitely done by hardware-people too.
http://ipclineapro.com/ is much better but also significantly more expensive. It's a sleeve you put your iphone in. It has a cool SDK and the build-quality is very convincing. As this uses the dock connector, there's no pairing issues either.
What ever you do: If you want to publish that app in the app store, be prepared for another hurdle, because if you are using any of these devices, you are not only dealing with apple approval, but also with approval by the device maker.
And you'll sign NDAs with both Apple and the device maker.
In that regards, WindowsCE is much nicer. You buy the device, you buy Visual Studio, you develop. No need to ask anyone for permission.
Thankfully by now we are more and more replacing these Windows CE things with iphones plus sleeves with barcode scanners which gives us a nicer API and the end user gets a much cooler device to work with.
The .NET Compact Framework is a beast: It's extremely slow and still it happens more often than not that you need something, you check the documentation, you find it, only to read that it's only supported on the desktop.
And don't get me started on the development/run/debug cycle: Both the emulator and the actual device are slow and after the 200st time that crappy assistant offered me to register my barcode scanner or even emulator(!) with Microsoft, I lost all the love that might still have been left.
Oh. And the SDKs for the scanners have this distinct feeling of being software written by hardware people when I look at how "convenient" they are to use. My personal favorite: The driver that hard-crashes the device whenever you terminate the application from the debugger. Yeah. Hit that stop-button you are used to and you'll have to wait through another 3 minute reboot cycle.
You iphone and android people have it so nice </cranky>