NAVmoble - the pocket-sized ERP
Optimized for Microsoft Dynamics NAV and Windows Mobile powered devices
Showing posts with label Compact Framework. Show all posts
Showing posts with label Compact Framework. Show all posts

Sunday, July 03, 2011

NAVmobile/AXmobile - 2011 Q4 roadmap

I was quite out of the blogging business for a while. I am still following the latest technical and business trends in the IT area, but I am mostly focused over the development of Mobile Affiars and our product NAVmobile/AXmobile.
We're trying to stay in touch with our partners and giving them as much as possible information about the product roadmap and the expacted product changes. This information is shared through our partner channel resources, but I decided to share some informarion in public in order to reach potential partners, current customers and other interested parties.

I will discuss some of the main platform-wide functional areas , which we're digging into. I will miss the various improvements in the standard Sales/Warehouse scenarios that we support. So, here come the main areas:
  • Device Agent Improvements
  • Barcode management improvements
  • Graphical UI for deployment process tailoring
  • Off-line working mode in Warehouse management. ( IT.Warehouse )
  • Support for more mobile platforms


Device Agent
NAVmobile/AXmobile introduced a concept for a device agent few months ago. It is a background service working on the device and performing different activities behind the scene. It is extremely nice to have feature in scenarios, where the mobile user is not supposed to manually perform device synchronization. The on-line Warehouse Management scenario is a good example. The Device agent is performing activities like:
  • caching and resending of failed synchronization packets
    The network connectivity may have poor quality in larger warehouse areas or experience connection droppings, when netowork roming takes place.

  • sending of device system information and logs
    The Device agent performs collection of event logs and device system information and sends them to the server, when connection is available.
  • downloading of system settings from the server
    if new settings are published on the server, the Device agent will automatically extract the settings from the server and they will affect the device behaviour immediately. The agent is capable to execute device provisioning "scripts" in order to configure different aspects of the underline mobile OS.

  • downloading mobile software updates
    if new mobile software version is published on the server, the agent will automatically download and install the software without user interaction, making sure that the user will not lose any unsaved work.

  • alerting device user for custom messages
    ERP users and administrators can send messages to devices or device roles ( group of devices). These messages are handled and displayed/alerted on the device by the Device agent.
We are working over a number of additional device agent features, which will be announced in the next public release
  • Location data collection and GIS integration
    The Device Agent will collect GPS data on the device and will be able to send the GPS log to the Mobile Sync Server. The administrators will be able to analyze the collected location data through the web administrative console or exporting the data to third party GIS.

  • User task management
    The ERP users will be able to create tasks for the mobile users ,wich will be sent to the device and displayed in a customized splash screen. The splash screen will allow users to launch spefiic task from their list by taping over it. Initially the customized task management splash screen will be introduced in our standard Warehouse module , but partners will be able to integrate the task mana
    gement approach in their own customizations.

Barcode management
NAVmobile/AXmobile had a platform-wide barcode management support from the begining. Our partners are able to easily introduce support for additional barcode scanners/imagers by implementing a simple barcode "drivers" using CF.NET and delivering them through the standard OTA(over-the-air) infrastructure.

Our next release will introduce new barcode pattern based management features. Partners will be able to specify the various barcode types and masks and their content ( like item-numbers, quantities, lots, bins and more ) and the system will automatically parse the barcode conten and automatically extract encoded quantities, numbersm bins , etc. Barcode patterns configurtion will be deployed on the devices by using the same server-side provisioning approach,


Graphical UI for deployment process tailoring
NAVmobile/AXmobile allows partners to tailor the automatic OTA deployment process. They can "instruct" the server to perform various additional activites during the initial mobile application deployment. It allows partners to deploy additional apps ( like keyboard layouts for example ) or provision the mobile OS on deployment. This is done (right now ) by writing instruction in a dedicated xml file (Deploy.manifest ) . In the next release we will introduce dedicated UI in the Web Administrative Console to make the deployment tailoring even easier.


Off-line working mode in Warehouse management. ( IT.Warehouse )
Our standard warehouse module was developed as on-line solution intially. We introduced failed sync packet resending features to minimize the on-line requirement impact, but it turns out that there is a big demand to support the warehouse scenarios in complete off-line mode.
Or next public release will allow organizations to select between off-line and on-line mode with a simple setup and even mix off-line and on-line warehouse workers in a single deployment.

Support for more mobile platforms



Microsoft announced the extended support for Windows Mobile based devices and event longer support for the rebranded Windows Embedded Handheld and Windows Compact editions. We will keep introducing more features on these platforms as this is the most popular mobile OS for rugged devices these days.
However, the IT area is very dynamic and forces us to introduce support for additional mobile platforms and form factors. We will incrementally introduce support for all of the major mobile operting systems starting with Android near the end of the year. The new platform will support complete off-line mode through native mobile apps and on-line mode through a modern web browser.
We will introduce new cross-platform mobile development environment to allow our partners to write once and distribute their ERP connected mobile apps to various mobile platforms.
We will also incrementally introduce all features and mobile modules supported on Windows Mobile to the new platofm. Partners/Customers will be able to "host" and manage Windows Mobile and all supported modern mobile devices in a single deployment with the same skills and knowledge.


Disclaimer: The NAVmobile/AXmobile features are subject of change witout notice. We will do our best effort to inform our partners and customers in advance if changes in the roadmap are comming in response to changes in the dynamic business environment.

Sunday, October 26, 2008

Mobile sessions during October and November 2008

PowerPoint files are available for download at the bottom of this post

I'm going to have few public speaches dedicated to the Microsoft's mobile development technology stack.
The first two sessions are part of the Microsoft Day events organized in the local universities.
The last two are part of a free set of sessions dedicated to Visual Studio 2008, Windows Server 2008 and Office Project 2007, sponsored by Microsoft Bulgaria and New Horizons Bulgaria

30.Oct.2008, 15:00h,Varna, University of Economics - Varna
Lap around Windows Mobile

31.Oct.2008, 10:00h,Varna, Technical University - Varna
Mobile development with Visual Strudio 2008 and Compact Framework 3.5

6.Nov.2008, 18:30h ,Sofia, New Horizons Bulgaria
Developing Windows Mobile Applications with Visual Studio 2008

20.Nov.2008, 18:30h,Sofia, New Horizons Bulgaria
Under the hood: Windows Mobile and Visual Studio 2008

All the sessions are free to attend, however the last two require you to sign-up in advance


UPDATE:
PPT File: Developing Windows Mobile Applications with Visual Studio 2008


Tuesday, June 10, 2008

Managed Services and Today Screen Item with .NET Compact Framework

I'm .NET addicted and never felt comfortable to realize that I can't solve my problem in pure managed manner.
Well, the "native" is a native part of the mobile developer, but anyway I prefer managed.

I was happy to see that some mobile folks here work for my comfort :)

Peter Nowaks has a post about creating Managed Services in Windows Mobile by using .NET Compact Framework. He has created a managed library, hosted in CodePlex. His work is based on article by Pavel Bánský

Christopher Fairbairn also published  a very handy library, which may help you creating a managed Today Screen Item.

 

Great work guys!

 

Links
Peter Nowaks on Creating Managed Services in Windows Mobile
Pavel Bánský on Creating Managed Services in Windows Mobile
Christopher Fairbairn on Creating Managed Today Screen Item

Wednesday, November 28, 2007

When Compact Framework fails to make HttpWebRequest ...

Andrew Arnott has an interesting post about a bug found in CF.NET . It may fail to call some web servers with the following error:
System.Net.WebException: Unable to read data from the transport connection.

Want to know why? See the details here...

(via .NET Compact Framework Team's blog)

Saturday, November 03, 2007

Microsoft Days in the universities

A series of "Microsoft Days" events will be held in the local(Sofia) universities as follows:
5 Nov 2007 : Technical University, Sofia , 10:00h, hall 2140, block 2
see the agenda
6 Nov 2007 : Colledge of Telecommunications and Posts
see the agenda
18 Nov 2007: University if Sofia,The Faculty of Mathematics and Informatics
see the agenda

I will talk about the newest additions in the Microsoft's mobile technology stack. The session is called "Mobile Development with .NET Compact Framework 3.5". Be there if you're starving to see what to expect from Visual Studio 2008 when dealing with mobile applications

Wednesday, October 03, 2007

Mobile & Embedded Developer Chat,October 24

Neil will host another Mobile & Embedded Developer Skype Chat on 24.Oct.2007 at 3PM GMT.
Click here to add Outlook Reminder(via Neil's post)
You may ask the experts your mobile&embedded dev questions.

The chat may be accessed from the following url:
http://chat.opennetcf.com
Note that you may say hi at any time in the chat room.

The original announcement may be found here on the Neil's blog

I just noticed that Neil got his MVP status back. Contragts Neil! You deserved it!

Sunday, September 23, 2007

Random CF.NET links

I was too busy lately in order to blog and read blogs(never do this at home). I had to "read" hundreds of posts, which popped out of my agreggator. I decided to post a bunch of links that came to my attention.

There were other interesting ones ... stay tuned for more.

Friday, August 24, 2007

.NET Compact Framework chat on Skype

Neil will host a CF.NET chat on Skype the next Wednesday, Aug 29 2007 from 6:00 pm to 7:00pm (London)
CF.NET team members, MVPs and epxerts will hang out there. if you have device development questions this is the place to find the answers.

You may enter the chat at http://chat.opennetcf.com

Click here to update your Outlook calendar

The Bulgarian timeframe of the chat is from 20:00h to 21:00h

Check out the Neil's announcemnet for few more details.

Monday, August 06, 2007

"How To" Series: Configuring Network Adapters with Compact Framework


There was a question in the forums, if there is a way to configure a network adapter automatically - without an user interaction. Using the UI, the user may select "My network card connects to" value for every adapter in the adapters list. It may be changed to point one of the available network destinations like "The Internet" , "Work", etc. So, is there a way to this automatically?

In short the answer is YES! There is a way. We may prepare an OMA Client Provisioning File and pass it to the appropriate configuration provider in Windows Mobile.
An appropriate configuration file would be like this:


<wap-provisioningdoc>
<characteristic type="CM_NetEntries">
<characteristic type="Adapter Name">
<parm name="DestId" value="{A1182988-0D73-439e-87AD-2A5B369F808B}"/>
<parm name="Adapter" value="Qualified Name"/>
</characteristic>
</characteristic>
</wap-provisioningdoc>




This file will bind a network adapter named "Adapter Name"
to the "Work" destination. We have to change the "Adapter Name" value with
the name of the adapter as it is seen in the adapters list. The "Qualified Name" should be changed with the fully qualified name of the adapter - it may be obtained by using the GetAdaptersAddresses routine

If we want to change the destination to "The Internet" , we have to supply different GUID for the DestId parameter. Following network identifiers as configured by default on Windows Mobile:

The Internet: {436EF144-B4FB-4863-A041-8F905A62C572}
Work: {A1182988-0D73-439e-87AD-2A5B369F808B}
WAP Network: {7022E968-5A97-4051-BC1C-C578E2FBA5D9}
Secure WAP Network:{F28D1F74-72BE-4394-A4A7-4E296219390C}
CurrentDTPTNetwork:{A1182988-0D73-439e-87AD-2A5B369F808B}

What we have to do in order to apply this configuration setting?
We have the following options:
1. Preparing the provisioning Xml file , save it as _setup.xml, and place it inside a CAB file. We may "execute" the file on the device, then. Check out this post for details about deploying provisioning files with CABs.
2. We may apply these settings through code(Compact Framework) by using the managed Microsoft.WindowsMobile.Configuration.ConfigurationManager class from Windows Mobile 5 SDK:

string configurationXml = "<wap-provisioningdoc><characteristic type=\"CM_NetEntries\">"+
"<characteristic type=\"Adapter Name\"><parm name=\"DestId\" "+
"value=\"{A1182988-0D73-439e-87AD-2A5B369F808B}\"/><parm name=\"Adapter\" value=\"Qualified Name\" /> "+
"</characteristic></characteristic></wap-provisioningdoc>";
// Load XML
XmlDocument configurationXmlDoc = new XmlDocument();
configurationXmlDoc.LoadXml(configurationXml);
// Send to Configuration Manager
ConfigurationManager.ProcessConfiguration(configurationXmlDoc, false);


Also the unmanaged version DMProcessConfigXML may be used
Check out this post for unmanaged wrapper of DMProcessConfigXML

Links
CM_NetEntries Configuration Service Provider Examples for OMA Client Provisioning
Injecting Provisioning XML into a cab using VS 2005 on the Windows Mobile Blog
DMProcessConfigXML on the Marcus Perryman's WebLog
Windows Mobile Device Management for more configuration options

Tuesday, July 24, 2007

"How To" Series: Reading Device Owner Information on Windows Mobile



I noticed recently, that some guys asked(in the forums) how to read the device owner information from .NET Compact Framework.

The Device Owner information may be obtained from the device's registry. It is stored under the following registry key: HKEY_CURRENT_USER\ControlPanel\Owner






Note that, this key may be missing on a fresh device. The key is populated after the owner sets his/her information.

The registry key HKEY_CURRENT_USER\ControlPanel\Owner has two interesting values:
"Owner" and "Owner Notes". These values holds binary data.
The "Owner" value contains the following owner information attributes: Name, Company, Phone, E-mail, Address. The "Owner Notes" value contains the Notes of the owner :)
Reading Owner notes is simple like:
RegistryKey key = Registry.CurrentUser.OpenSubKey("ControlPanel\\Owner");
byte[] data = key.GetValue("Owner Notes") as byte[];
string notes = UnicodeEncoding.Unicode.GetString(data, 0, data.Length).TrimEnd('\0');

The tricky part is to "decode" the "Owner" binary data, which contains multiple fixed-length values. In order to deal with it , we have to know the exact length of every device owner attribute:

  • Name: 72 bytes
  • Company: 72 bytes
  • Address: 372 bytes
  • Phone: 48 bytes
  • Email: 74 bytes

So, reading the "Owner" info is easy as:
RegistryKey key = Registry.CurrentUser.OpenSubKey("ControlPanel\\Owner");
byte[] data = key.GetValue("Owner") as byte[];
string name = UnicodeEncoding.Unicode.GetString(data,0,72).TrimEnd('\0');
string company = UnicodeEncoding.Unicode.GetString(data,72,72).TrimEnd('\0');
string address = UnicodeEncoding.Unicode.GetString(data, 144, 372).TrimEnd('\0');
string phone = UnicodeEncoding.Unicode.GetString(data, 516, 48).TrimEnd('\0');
string email = UnicodeEncoding.Unicode.GetString(data, 566, 74).TrimEnd('\0');

You may obtain the full source code from here

Tuesday, July 10, 2007

"How To" Series: Retrieving IMSI and IMEI on Windows Mobile

I had to retrieve the IMSI and IMEI on Windows Mobile for a particular project.
What I needed actually was the IMSI , because it may be used in OMA Client Provisoning through WAP Push scenarios. It may be very practical for the enterprise to manage its devices remotely and I will post more on that topic later on.

In order to retreive IMSI and IMEI, one have to deal with the Telephony API and PInvoke. In general the magic is done by invoking the native lineGetGeneralInfo routine from TAPI.
You may download the full source code from here

the original code article may be found here

There is another approach as well - buy the Telephony library from OpenNETCF

Links
What is IMSI
What is IMEI
OMA Client Provisoning for Windows Mobile
The sample source code

Wednesday, June 13, 2007

Mobile Development Handbook

Some folks asked me recently about recommending a book about managed mobile development.
I just noticed that Daniel Moth announced his book called "The Mobile Development Handbook". Daniel(former MVP and Microsoft employee) and his co-authors Peter Foot(MVP) and Andy Wigley(MVP) are well known in the community and I believe the book is worth to have.

The book is available on amazon.com

Links
Mobile Development Handbook on amazon.com
Daniel Moth about his book
Peter Foot's blog
Andy Wigle's company web site

Tuesday, May 15, 2007

Kiosk mode in Windows Mobile

I had a number of questions after my talks during the MS Days 2007 in Sofia.
And there was a question that I failed to give a complete and detailed answer.So here comes the answer...
Before taking this path, take a break and think if the kiosk mode is actually needed for your app. Windows Mobile is designed as a general purpose OS, intended for personal usage. The kiosk mode app will prevent the users from using it as their personal device. You may want to check the Marcus Perryman's post for arguments about Kiosk Mode vs Deep Integration choices
Anyway, there are several options to have the app in kiosk mode over Windows Mobile:
1.Replacing the standard password prompt
One should create a DLL, export the PromptForPasswd function and than hacking the registry to use your custom password prompt. There are some side-effects and also this method may fail on some devices. So test it with a real hardware.
Check out this resource for details

2. Maximizing your application's main form
In general maximizing the app's main form will get you a kiosk-alike behaviour. However, the user may press the hardware buttons to get to another app. Some OS events (like inbound phone call)may pop up another app in front of yours . In other words this solution will not give you a complete kiosk mode.
Check out the newsgroups:
SHFullScreen
Full Screen on CF.NET

3.Replacing the standard shell
Check out this post for additional info about shells

4. Hiding the Windows Mobile task bar
This is not a complete solution, but a complementary technique.
Check out the following link for an example

5. Using third-party framework.
Check out the following ones:
Spb Kiosk Engine
PocketKiosk Builder


Links
Spb Kiosk Engine
PocketKiosk Builder
Hiding the taskbar
Prompt For password
Marcus Perryman on Kisok mode in Windows Mobile
Windows Embedded Blog on kiosk mode in Windows CE
Newsgroups on Fullscreen with SHFullScreen
Newsgroups on Full Screen/CF.NET
Kiosk mode on Pocket PC
Kiosk Pattern from Satter Ramblings
WM Shell replacement

Update
Check out this post for more resources as well