.NET Compact Framework and Smart Device Programming

Posted March 18, 2003

Chat Date: February 26, 2003

Please note: Portions of this transcript have been edited for clarity

Chat Participants:

  • Chris Tacke, CE Product Manager at Applied Data Systems
  • Ginny Caughey, President of Carolina Software
  • Neil Cowburn, Technologist with UK-based Content Master Ltd.
  • Tim Wilson, Software Development Consultant
  • Mark Gilbert, Program Manager for device support in Visual Studio at Microsoft
  • Alex Feinman, Senior Software Engineer at Corrigo Inc.
  • Kevin Boske, Software Test Engineer for SQL for CE at Microsoft

Moderator: Mike Fos (Microsoft)
Welcome to today's Chat. Our topic is the .NET Compact Framework and the Smart Device Programming features of VS.NET. Questions, comments, and suggestions are welcome.

Let’s introduce our hosts for today.

Host: Chris Tackle (MVP)
Hello, I'm Chris Tacke, CE Product Manager at Applied Data Systems.

Host: Ginny (MVP)
Hi, I'm Ginny Caughey. My company develops vertical market apps, and some of our products run on CE-based devices.

Host: NeilC (MVP)
Hi, I'm Neil Cowburn. I'm a Technologist with UK-based Content Master Ltd.

Host: Tim Wilson

Hey chatters, I'm Tim Wilson a software development consultant focusing my energy and time on the embedded world and (of course) the CF. Happy to be here chattin' with you, please hold the applause until the end... :)

Host: Mark (Microsoft)
Hi, my name is Mark Gilbert, Program Manager for device support in Visual Studio.

Host: Alex Feinman (MVP)
Hello, I'm Alex Feinman, Senior Software Engineer at Corrigo Inc

Moderator: Mike Fos (Microsoft)
Welcome everyone, let’s get started!

Participant: Rob C

Comment: I noticed a lot of the hosts are the same people that answer the Microsoft Newsgroups. I wanted to say thank you to you folks. You have made my learning curve much less stressful.

Host: NeilC (MVP)
Q: When will be .NetCF available for Smartphones?

A: There has been no announcement from Microsoft as to when this will be available.

Host: Mark (Microsoft)
Q: When will be. NetCF available for Smartphones?

A: We don't have finalized dates yet, but we are targeting mid-year for the runtime and Visual Studio support.

Host: Chris Tackle (MVP)
Q: Is .NetCF fully supported on the pocketpc2002 platform?

A: Yes.

Host: Tim Wilson
Q: Does PocketPC 2000 support .NetCF or only PPC2002?

A: Yes. Both platforms support .NetCF.

Host: Chris Tackle (MVP)
Q: Does PocketPC 2000 support .NetCF or only PPC2002?

A: The .NetCF is supported on Pocket PC, Pocket PC 2002 and all CE 4.1 devices.

Host: NeilC (MVP)
Q: Is .NetCF still available for download?

A: Yes, if you have download access to the MSDN Subscribers web site you can download VS .NET 2003 RC1 which contains the bits for .NetCF

Host: Alex Feinman (MVP)
Q: Are there any plans to add .Abort() to threads like in the full framework?

A: It is being considered for future version

Host: Ginny (MVP)
Q: Any plans on providing remoting support?

A: There are no plans presently, but please post details of your scenario on the newsgroup.

Host: Mark (Microsoft)
Q: Why wasn't XSL included in the .NetCF? What options do .NetCF developers have for using XSL?

A: It was left out for size and available time. The best solution is to do the xsl on the server and pass the results down through a web service. We don't know if we'll support it in upcoming versions.

Host: Chris Tackle (MVP)
Q: Will threads be extended with priorities?

A: Version 1 of the .NetCF has very limited threading capabilities. Many features, including priority, quantum and abort are being considered for the next release.

Host: Alex Feinman (MVP)
Q: Is .NetCF supported on CE4.0 platforms? If not, why not please?

A: It is supported on CE.NET 4.1 and up

Host: NeilC (MVP)
Q: Can you recommend some good publications (either than the .NetCF reference guide) for development?

A: Larry Roof will have a book coming out in the near future

Host: NeilC (MVP)
Q: Is .NetCF built into the upcoming platforms? ie: A separate installation of the runtime is not required?

A: This is up to the OEMs to decide whether they include the .NET Compact Framework in ROM or not.

Host: Chris Tackle (MVP)
Q: Is .NetCF built into the upcoming platforms? ie: A separate installation of the runtime is not required?

A: Inclusion of the .NetCF is typically a decision made by the OEM but will be likely be part of the PPC 03 platform. For CE 4.x devices ask the manufacturer.

Host: Mark (Microsoft)
Q: Is it possible for a third party to extend PocketPC2002 within Visual Studio .NET so that a user can start a Smart Device App. and pick up the 3rd party assemblies automatically?

A: Custom controls and custom components are the easiest ways of doing this, when the user drags a control/component on the form, VS will automatically add a reference to the project. You can also add your reference to the CompactFrameworkSDK directory and have it come up in the list of available references. To create new project templates, you need to use VSIP.

Host: Alex Feinman (MVP)
Q: How can I make pictures and folders in my project (VS.NET) to be deployed to my PocketPC when I am debugging?

A: All images that are marked as "Content" in the Properties/Build Action will be deployed to the device during debug session.

Host: Mark (Microsoft)
Q: How is it possible to respond Paint event on a Panel? There is no Paint event for Panels only for Forms.

A: The panel doesn't have a paint event. The easiest way is to use a control class and trap its paint event, you can parent other controls in it also.

Host: NeilC (MVP)
Q: Does MS plan to eat its own dogfood and build apps with the compact framework?

A: Yes, I believe they already are. :)

Host: Mark (Microsoft)
Q: Does MS plan to eat its own dogfood and build apps with the compact framework?

A: Definitely, we already have some games being worked on internally with it. We're looking at new productivity applications that could use it as well.

Host: Chris Tackle (MVP)
Q: Are there any plans for the future to support real-time programming in C# with the .NetCF?

A: What exactly do you mean by real-time programming? It is nearly impossible to get real time performance from any system using a garbage collector.

Host: Tim Wilson
Q: Do you expect most mainstream application development to be .NetCF, or do you still see a place for embedded visual c++?

A: eVC++ will most likely always have a place, it is a developer choice.

Host: NeilC (MVP)
Q: Any chance of a browser control in the near future?

A: A third party already has a HTML control available. You might search the newsgroups for more information.

Moderator Note: IntelProg offers such a control at: https://www.intelprog.com/NetCF/index.html

Host: NeilC (MVP)
Q: Is there any way to get the Smart Device Extensions without installing the VS.Net 2003 beta?

Host: NeilC (MVP)
A: No.

Host: Chris Tackle (MVP)
Q: Is there any way to get the Smart Device Extensions without installing the VS.Net 2003 beta?

A: FYI, They are no longer called the SDE. It is now termed "Smart Device Programmability".

The .NetCF was RTM’ed, so if you have Platform Builder 4.1, you can get it. As for development tools, you must have the Everett Final Beta.

Host: Alex Feinman (MVP)
Q: Is there a way using P/Invoke to determine if an app is installed on a device. Specifically, I need to determine if .NetCF is installed, as well as my app

A: How are you going to use P/Invoke. P/Invoke is a part of .NetCF and you are trying to check if .NetCF is installed...

Host: NeilC (MVP)
Q: I will be using a desktop app that checks the device for installed apps

A: Your best bet is to P/Invoke the RAPI APIs.

Host: Ginny (MVP)
Q: Is it advisable to use VB.net CF to control COM ports

A: Sure, but you need to use P/Invoke.

Host: Ginny (MVP)
Q: How efficient is VB.NET via P/Invoke of COM ports?

 

A: When you P/Invoke, you're running native code at that point so performance shouldn't be an issue.

Host: Mark (Microsoft)
Q: Is there any documentation on supported IL instruction set and base types for .NetCF implementations?

A: .NetCF is CLI compliant, the best thing to do is look at the documents describing the IL instructions required for CLI.

Host: Mark (Microsoft)
Q: Does that mean that the complete CLI instruction set will be supported by all embedded implementations?

A: We don't support everything that the desktop supports, but we do support the full CLI set on all embedded implementations

Host: Tim Wilson
Q: Is there any documentation on supported IL instruction set and base types for .NetCF implementations?

A: There are books out that detail IL, and these would still be relevant for .NetCF developers.

Host: Mark (Microsoft)
Q: Are there any restrictions on redistribution of the .NetCF cab files such as netcf.all.wce4.armv4t.cab

A: There are no licensing fees for redistribution, until VS 2003 ships you need to notify your customers that it's being built with beta tools, we have a program that gives you the info you need.

Host: Tim Wilson
Q: if I spent 10 minutes researching this question, I would know. I'm too lazy so I'll just ask... Is GAPI supported in the .NetCF?

A: No, You need to P/Invoke it.

Host: Alex Feinman (MVP)
Q: If I spent 10 minutes researching this question, I would know. I'm too lazy so I'll just ask... Is GAPI supported in the .NetCF?

A: There are parts to calling GAPI that are not possible even with P/Invoke - you will need an eVC DLL.

Host: Ginny (MVP)
Q: I mean will it be possible to do real-time programming in C# like with unmanaged C++ on Windows CE .NET using the .NetCF?

A: No you need eVC++ for real-time.

Host: Mark (Microsoft)
Q: Is it possible to add a platform to the Smart Device Extensions in VS.NET so that not just WinCE and PocketPC2002 are the choices, specifically a platform that is PocketPC2002 + some third party stuff.

A: It is possible, but there are a number of options and if you're extending the PPC platform then you probably don't want to make your own. Turn on your whisper and I'll follow up with you.

Host: NeilC (MVP)
Q: Since GAPI is not supported "out of the box", would .NetCF not be an ideal choice for game development? Is the performance of the .NetCF paint/gdi operations fast enough for gaming?

A: As Mark_MS has already said, MS are working on a few games (internally) so I take that as meaning "Yes" .NetCF _is_ good enough for gaming.

Host: Mark (Microsoft)
Q: Since GAPI is not supported "out of the box", would .NetCF not be an ideal choice for game development? Is the performance of the .NetCF paint/gdi operations fast enough for gaming?

A: Painting from NetCF is very similar in performance to native code, it really depends on what game you're writing. If it's a 3D action game that requires a lot of rendering then I'd probably go native. If it's more of a puzzle game or one thing moving on the screen (Tetris or PacMan like) then you'll have no problems with .NetCF.

Host: Mark (Microsoft)
Q: Are there plans for creating managed GAPI in the future?

A: There are plans for gaming support in the future, it may be based on GAPI or a DirectX technology (unsure right now).

Host: Ginny (MVP)
Q: Are there any plans to add .Abort() to threads like in the full framework?

A: This is being considered for a future version.

Moderator: Mike Fos (Microsoft)
Q: How do you password protect databases in SQL CE to stop people from browsing using SQLCE Query?

A: You set the password and or encryption at the time you create the database. You can do this using the different methods described in the help topic: “Creating Password-protected Databases”

Host: Chris Tackle (MVP)
Q: How is it possible to detect if a CompactFlash card inserted/removed?

A: Card insertion can be detected on the Pocket PC through an AutoRun application. There should be no limitation on what it was written in.

Host: Chris Tackle (MVP)
Q: Do you have to access the object store via P/Invoke or is this handled opaquely by the framework

A: There are no managed classes for accessing the object store, so you'll either have to use P/Invoke of C++.

Host: Alex Feinman (MVP)
Q: I intend to use one of ADS boards to control 3 RS232 ports at 10 times per sec rate via VB.net and P/Invoke. Is this possible?

A: It is possible to use Serial IO from CF. Dick Grier has a very good sample at: https://www.hardandsoftware.com. You may be able to handle 3 boards but it depends on you hardware performance

Host: Chris Tackle (MVP)
Q: Do you guys have the specs for these upcoming smart devices?

A: "Smart devices" covers a broad range of devices, so the specs will vary greatly. Your best bet is to contact the manufacturer of the device you're interested in.

Host: Mark (Microsoft)
Q: Will xml performance get better?

A: Yes

Host: Mark (Microsoft)
Q: What is the roadmap for device updates for Smart Devices in VS 2003?

A: What are you specifically looking for, different device support, or new functionality? If you can be more specific we can probably help out.

Host: Mark (Microsoft)
Q: How about support for Embedded devices when creating a Setup Project - e.g. deploy via activesync etc...

A: Yes, it's coming in the next version of VS (not 2003)

Host: Alex Feinman (MVP)
Q: Is the "final beta" the version I want to download of .NetCF

A: You want the VS.NET 2003 Final beta or RC1 - Available from MSDN Downloads to subscribers

Host: Mark (Microsoft)
Q: Was there a tool that can help write the P/Invoke prototypes and convert C++ structs to C#?

A: Look at Paul Yao (www.paulyao.com). He has a tool that helps out.

Host: Chris Tackle (MVP)
Q: How can I get my hands on one of these devices and start testing?

A: Again, this depends on which device you're looking for. The currently available Pocket PCs can use the .NetCF. Some manufacturers, like Applied Data Systems also are shipping CE 4.1 devices.

Host: Alex Feinman (MVP)
Q: how about a setup-project like in the desktop??

A: It is being considered for the future version

Moderator: Mike Fos (Microsoft)
Q: Is there an easy way to query a SQL CE database from the desktop similar to using RAPI for Object Store?

A: Not at this time.

Host: NeilC (MVP)
Q: Is there any integration between ActiveSync and .NetCF? Is there any practical way to plug into ActiveSync's sync providers?

A: Currently, no.

Host: Chris Tackle (MVP)
Q: Is there any integration between ActiveSync and .NetCF? Is there any practical way to plug into ActiveSync's sync providers?

A: ActiveSync providers require COM, which is not supported in this release of the .NetCF.

Host: Alex Feinman (MVP)
Q: How can I make my PPC to have IP address without any modem or Network card (connected to my PC via ActiveSync and USB cable)?

A: It already has IP address that can be retrieved via System.Net methods

Host: Mark (Microsoft)
Q: I'm looking for a way to request device updates and understand what device support will be released in upcoming updates.

A: We're supporting Pocket PC 2000 and above, Windows CE .NET 4.1 and above (any device using CE .NET can use .NetCF if they have the required pieces), we don’t support Smartphone 2002 but we will support future versions. If you have a device that you're specifically worried about, let me know.

Host: Ginny (MVP)
Q: .....just need a device is supported by Sprint

A: You should talk to Sprint about this - they have PocketPC devices now, I think, and others coming out.

Host: Chris Tackle (MVP)
Q: Since you wrote ? “com is not supported in this release” - WILL there be COM support???

A: Not in this release. Odyssey software will be releasing COM support classes as a 3rd party solution.

Host: Mark (Microsoft)
Q: Emulation of COM ports, COM2 works OK on POCKET PC but not on CE.NET device???

A: That sounds like a bug, did you configure the emulator in Tools->Options to use the COM ports?

Host: Tim Wilson
Q: Is the only way then to get data from the SQL CE database to the desktop is to use RDA or replication? What if the desktop app is using a DB like Access2000?

A: Web services

Host: NeilC (MVP)
Q: What kind of functionality will .NetCF have that can take advantage of Location Based services?

A: Location-based services usually require specific APIs and hardware, so this is a platform issue.

Moderator: Mike Fos (Microsoft)
Q: What kind of functionality will .NetCF have that can take advantage of Location Based services?

A: You might want to take a peek at Zoran Galovic's site as an example: https://gldemo.webs.innerhost.com/Globallocator/Gl.aspx

Host Guest_Kevin says:
Q: Is the only way then to get data from the SQL CE database to the desktop is to use RDA or replication? What if the desktop app is using a DB like Access2000?

A: Yes, this is the only method. But we do hear and acknowledge this request and are thinking about this for future versions. (no guarantees)

Host: Mark (Microsoft)
Q: Is there something (like a Top 100 list) you use to determine what devices are going to be supported in Smart Devices in VS 2003?

A: Once everybody is on Windows CE 4.1 or above, they will all be supported. We prioritize customization for specific devices (designer customization etc) by volume and importance to the development community. We'd much rather have a common platform to develop to, then have custom pieces for each device type.

Host: Chris Tackle (MVP)
Q: Is Platform Builder 4.1 (which contains the final .NetCF) available for download on the subscriber downloads; and if it is, it easy to integrate into vs2003 final beta?

A: PB is not part of the MSDN subscription but you can download the emulation edition for free from https://www.microsoft.com/windows/embedded/ce.net/default.asp. It does not integrate with Studio 2003 at all, it is its own product.

Host: Chris Tackle (MVP)
Q: Are the any Pocket-PC devices already using Windows CE .NET 4.x?

A: No.

Host: Mark (Microsoft)
Q: Are the any Pocket-PC devices already using Windows CE .NET 4.x?

A: (adding to Chris's answer) Not right now, Pocket PC 2003 will be based on 4.2. The Pocket PC 2000 and 2002 are supported by .NetCF though.

Host: Alex Feinman (MVP)
Q: Is there any document that shows a mapping of MFC functions to .Net functions. Like CString becomes StringBuilder in .Net.

A: There is no direct mapping from MFC to .Net BCL. These are very different libraries

Host Guest_Kevin says:
Q: I'm doing some time-test on a select-n-read from a SQLCE table, and it seems that DataSets give more consentient times, and DataReaders populating an ArrayList ((usually) faster) gives more fluctuating results... any ideas?

A: Sorry, no ideA: DataReader is definitely faster but I would need to know more about the scenario and data.

Host: Tim Wilson
Q: Can you use RDA to connect to a desktop running MSDE vs full SQL Server?

A: yes

Host Guest_Kevin says:
Q: Can you use RDA to connect to a desktop running MSDE vs full SQL Server?

A: Yes, certainly, you can even do Merge Replication.

Host: Mark (Microsoft)
Q: What guarantee do we have as developers that the Smartphone platform is going to be viable in the future? We are trying to determine whether our solutions should be .NET-based, or if we should develop them in C.

A: It sounds like there are two questions here. For the SmartPhone, Microsoft is putting a lot of resources behind it and we are dedicated to the market for the very long term (basically do you want to bet on us). Separately, whether you should use native or managed code, this depends on the type of application you're writing.

Host: Mark (Microsoft)
Q: We are considering deploying on multiple cell phone platforms, because we don't really know if the Smartphone is going to take off. Is there any reason to believe that .Net-based solutions run on other platforms.

A: For now the best cross platform solution is native code on both phones. Long term we don't know our plans for supporting other mobile phone platforms.

Host: Mark (Microsoft)
Q: Any documentation on setting up a wireless connection to desktop development environment from PocketPC for debugging?

A: You can use ActiveSync to connect over a wireless network and then VS will communicate and debug with it. We're also shipping an addon pack to enable straight Ethernet debugging, but there are some manual steps.

Host: NeilC (MVP)
Q: Any documentation on setting up a wireless connection to desktop development environment from PocketPC for debugging?

A: Chris De Herrera's website has a good FAQ on 802.11: https://www.cewindows.net/wce/wirelesslan.htm

Host: Ginny (MVP)
Q: Does the Toshiba 2032 offered by Sprint support .NetCF?

A: If the Toshiba 2032 is a PocketPC, then the answer would be yes.

Host: Mark (Microsoft)
Q: Followup: How do you access the Addon Pak for Ethernet debugging?

A: It's not available yet but will be soon on MSDN, we'll post information on www.gotdotnet.com as well.

Host: NeilC (MVP)
Q: Will Pocket PC 2003 with CE .NET 4.2 be released this year?

A: Yes, you can expect to see it later this year.

Host: Alex Feinman (MVP)
Q: How do you build assemblies for the .NetCF without using the IDE? Can you use the same tools?

A: Yes, you can use command-line compiler. There are samples in public newsgroups.

Host: Mark (Microsoft)
Q: Is inheriting from String going to be supported at some point?

A: The string is sealed on the device and the desktop. This is done because we can special case these in the execution engine and increase performance and decrease memory usage. It's unlikely to change.

Host: NeilC (MVP)
Q: Is it possible using .NetCF to override device softkeys and effectively take over the device?

A: You can P/Invoke to the Win32 API (can't recall them right now) and reassign the hardware keys, yes.

Host: Alex Feinman (MVP)
Q: Is it possible using .NetCF to override device softkeys and effectively take over the device?

A: You can use RegisterHotKey via P/Invoke

Host: Mark (Microsoft)
Q: Do you know when we will be able to dl the final release of .NetCF?

A: .NETCF is released now,

Host Guest_Kevin says:
Q: I've heard that there is something going on with MS and INTEL for the support of XScale - will there be (in the near future) a SQLCE version with XScale optimization?

A: We're working closely with Intel on the XScale issues.

Host: Mark (Microsoft)
Q: Will there be any significant overall speed improvements in the near future?

A: Not in the near future.

Host: Chris Tackle (MVP)
Q: What is the best way to get a PPC's ip address? I am trying to write a sample app and can't find it out?

A: The current IP address is stored in the registry under \HKLM\Comm\{my NIC}\Parms\Tcpip

Host: Mark (Microsoft)
Q: .NetCF is released now - yes but I can't dl it?

A: Visual Studio 2003 is targeting to launch in April, at that point you can freely distribute. For now you have to add a piece to the application EULA describing that it was developed with beta tools. Let me know if you need more info.

Host: Tim Wilson
Q: How do you access the Windows registry from .NET?

A: P/Invoke

Host: NeilC (MVP)
Q: How do you access the Windows registry from .NET?

A: Check the forums at https://www.innovativedss.com/forums for some sample code.

Host: Chris Tackle (MVP)
Q: Is it not possible through System.Net?

A: System.Net does not expose the device IP address.

Host: Alex Feinman (MVP)
Q: Does MSN messenger for the Pocket PC have an API, and if so can it be P/Invoked from .NetCF?

A: I think there are only COM APIs to Messenger, so the answer is no.

Host: Mark (Microsoft)
Q: kevin - followup: I know that you do - but how about results - or a timeline

A: The problem is there are changes required to silicon and in the compilers. A lot of these are now resolved, but some of the devices won't get a lot quicker (the earlier ones). We hope to have the compilers generating significantly quicker code this year as a rough timeline. At that point applications running on XScale can rebuild and get performance improvements.

Host: Ginny (MVP)
Q: Does anybody know of a Graphics package running with VB.net or C# and CF

A: None of us know of any at this time :(

Host: Mark (Microsoft)
Q: Is .NetCF code optimized for a particular Smart Device processor? Can we get some optimization sample code if not?

A: The JITs are specific for each CPU, the ARM one specifically is tuned for the ARMV4 instruction set. There is no way to optimize it from managed code, except to follow general good practices for performance.

Host: Mark (Microsoft)
Q: is IPAQ 3970 an early one? - or is the question stupid?

A: I'm unsure what silicon version it has in it, you will see performance improvements across them all, just much more with the newer ones.

Host: Chris Tackle (MVP)
Q: Is there any move afoot to get device manufacturers to include FPUs in their devices (including Smart devices.)

A: Floating point unit support is from the manufacturer and isn't necessary for all embedded applications. There are some new cores coming soon that have FPUs in them, so it would make sense that manufacturers may start offering them if the market is there.

Host: Alex Feinman (MVP)
Q: The text edit control is limited to 32k of text ( I believe ). What good workarounds are there to this problem? I don't believe there is richedit support in the .NetCF.

A: There is not, but there are 3rd party solutions. E.g. https://www.intelprog.com/NetCF /index.html

Moderator: Mike Fos (Microsoft)
Our chat is officially scheduled to end at this time, but our experts will be hanging around for as long as they are able to to answer questions.

Host: Chris Tackle (MVP)
Q: Will we see support for ARMv4T in the ARM support for Smart Devices in VS 2003?

A: Armv4T is for THUMB (16-bit support). No plans for specific support have been announced.

Host: Alex Feinman (MVP)
Q: Is there a limit to # of labels per TabPage?

A: I don't believe there is theoretical set limit, but in reality application would become sluggish as control number grows

Host: Chris Tackle (MVP)
Q: Is there much interest in the market in using Smart Devices as PLC's (Programmable Logic Controllers) in industrial, scientific and manufacturing situations?

A: Since the price of 32-bit processors and platforms has come down greatly, there is a definite upswing in the market for CE devices as automation controllers to either work with or replace PLCs.

Moderator: Mike Fos (Microsoft)
Thanks for joining us today and thanks for the questions. A special thank you to all our hosts today: Ginny, Neil, Tim, Alex and Chris; Mark Gilbert from the VSD team and SQL for CE guru Kevin Boske. It's time for us to go now.

For further information on this topic please visit the following:

Newsgroups: Mobile and embedded application development topics

Embedded Transcripts: Read the archive

Website: Visit the Mobile & Embedded Developer Center

Top of pageTop of page