Welcome to MSDN Blogs Sign in | Join | Help

Dave Baker's WebLog

A Window on all things Embedded
MirrorPilot - Reflecting on Satellite Navigation

Frank blogged about this cool device yesterdayMirrorPilot is a Satellite Navigation device that's behind a semi-transparent mirror (so you don't see it when it's off).  Running CE 5.0, the BSP is designed by Keith & Koep and the navigation software is by Elektrobit, and the thing is running CE 5.0.

The MirrorPilot is produced by Paragon Fidelity (http://www.paragon-online.de/en/index.php?a=5).

Web Connected Devices in the UK? Look no further than REMIX.

If you're looking at connected device solutions and are interested in how they fit into the Next Web then check out ReMIX 08.

ReMix UK 08 runs from 18 - 19 September 2008 at the Brighton Centre, Kings Road, Brighton. We'll be looking at the 'Next Web': the current state of play and the impact of new technologies, tools and trends in the future.

We are bringing together over 1,000 developers and designers and letting them exchange views, show work and thrash out ideas. There'll be industry gurus from around the world giving their perspectives on what next for the web.

ReMix UK 08 is a unique opportunity to explore next-generation web compositions, meet up with some of the brightest sparks in the industry and enjoy one great party.

.NET Micro Framework v3.0 Beta SDK released

The .NET Micro Framework v3.0 Beta is available to download from the Microsoft Connect Site.  More information on the Micro Framework team Blog ---> here.

The beta is hosted at http://connect.microsoft.com/netmf includes the following features:

  • touch capability
  • inking inking capability
  • VS 2008 support
  • interop
  • usb device
  • SSL
  • DPWS with codegen tools

...and if that's not enough, one lucky beta participant, who downloads the SDK, will win a cool RicaVision VAVE100 universal remote control (running SideShow and Micro Framework inside).

Jan has created a great changelog resource here that is well worth reviewing.

-Dave

New version of Windows CE - ScarecrowReady

OK - so this blog is in desperate need of a relaunch.  But whilst I'm working on some new content I couldn't resist bringing you a sneak preview of our newest version of Windows CE.  ScarecrowReady...

IMG_1483   IMG_1481

No it's not a real product, but always interesting to see the variety of different uses for Windows Embedded (and its disks).  For a showcase of real products using Windows Embedded, take a look here.

Thanks to Caroline for the photos.

EMEA .NET Micro Framework Porting Labs sheduled for November

I blogged about this a while back, to guage demand, and I'm happy to report that, based on your feedback, a .NET Micro Framework Porting Training session has been scheduled for Sunday, November 4, 2007 in conjunction with TechED Developers Europe in Barcelona, Spain. The training will take place at AC Hotel Barcelona.

 

Note that TechEd registration is not required for participation in the porting training, however a signed porting agreement is required. Partners interested in attending the porting training who not yet started this process must please let us know as soon as possible so that we can provide a copy of the agreement.

 

Participants should be prepared for an intense day of technical presentations. The agenda for this one-day session follows:

TIME

TITLE

8:00

Breakfast and Introductions

8:30

System architecture overview

9:00

PAL vs HAL

9:30

Source code directory structure and layout

10:00

Using the Micro Framework build system

11:00

Break

11:15

Completions and Continuations

11:45

The CLR main loop

12:15

Lunch

13:00

Driver constraints

13:30

The selector file

14:00

Creating an emulator

15:00

Break

15:30

Writing a driver

16:00

Creating a port, step-by-step

16:30

Building TinyBooter

17:00

Tips, recap, and wrap-up

17:30

Final Q&A

18:00

END

Please contact Warren Dent in the .NET Micro Framework team directly (warrend@microsoft.com) if you wish to attend.  This is a unique opportunity to attend this training in Europe as it is offered only once a year outside the US.

If you have any questions, or you would like me to send you an invite directly, please feel free to contact me.

 

Swimming the English Channel with Virtual Earth

I recently did some work with Road Angel, a Satellite Navigation company in the UK, around an Enterprise vehicle tracking system called Mileage Management, which they have developed with their Partner Alpha Micro.  Checkout the Video Case Study.

Well, in the interests of Charity, Alpha Micro have taken the solution an adapted it so that you can Live track a sterling bunch of Microsoft UK employees who are going to swim the channel this weekend - The Sat Nav is in the boat by the way :)

Thanks to Microsoft Virtual Earth and the clever programmers from Alpha Micro Systems you will be able to track their progress, see their profiles, find out who is swimming, see how long they’ve been going, send txt messages of support and see photos uploaded live from the boat as they go.  All via the website http://www.amslivetrac.com/.

They're starting at 12:30AM Sunday (UK time) - That's Saturday night, and by the team's own admission it's unlikely they will finish until way into Sunday afternoon so you will be able to view their progress for much of the day.

All money raised will support the Thames Valley and Chiltern Air Ambulance, and you can donate at www.justgiving.com/channelswim2007

Follow their progress at http://www.amslivetrac.com/ and support the world’s first world’s first internet tracked channel swim.

Latest XP Embedded Online Chat Transcript Available

The June 12th XP Embedded Chat transcript is available on MSDN. 

The chat, covers a number of topic areas including XP Embedded "Update Rollup 1.0", Windows Media Player 11 componentisation, Windows Presentation Foundation (WPF) availability and what the team is working on for the future.

The transcript can be found here.

Under the Covers - Querying the XP Embedded Repository

Every considered that, in certain circumstances, it would be useful to query the XP Embedded repository directly rather than using the Target Designer or Component Database Manager? 

If you simply want to find out which components contain a particular file (e.g iexplorer.exe) you can use the following query:

SELECT    ExtendedProperties.StringValue, ComponentObjects.DisplayName
FROM       ExtendedProperties INNER JOIN
               ComponentObjects ON ComponentObjects.ComponentID
               = ExtendedProperties.OwnerID
WHERE     (ExtendedProperties.StringValue LIKE 'iexplore.exe') AND
               (ExtendedProperties.ResourceTypeID = 1)
ORDER BY ExtendedProperties.StringValue

This will return about 8 or 10 hotfixes and service pack versions of the Internet Explorer components released over the years.

If however you wish to query for the owning components of files, then I recommend investing in Sean Liming’s toolkit that does a much better job at this, including finding reverse dependencies, owners of registry keys, componentising applications, etc…

Survey - Micro Framework Porting Training in EMEA

Whilst at MEDC last week I had a number of conversations regarding the possibility of running a Micro Framework Hardware Porting Lab in Europe.  We would really like to do this but would like to assess demand, so that we can ensure the training is appropriate.

If you are interested could you please forward me, via this blog, your contact details and a short synopsis of the hardware you wish to port (1 to 2 sentences will do :)).

Many Thanks

-Dave

MEDC Berlin - Micro Framework Session Demo

Those of you at my MEDC session in Berlin would have seen me build a Micro Framework application, from scratch, that allowed you to visually set a desired temperature and then communicate this across an RS232 interface.

For the demo I used the Freescale Emulator and i.MXS board.  However it is possible to recreate the majority of the demo using just the i.MXS emulator, which is freely downloadable.

To recreate the demo you will need to have installed:

Instructions:

  1. Create a new Windows Application Micro Framework project.
  2. Replace/Amend Program.cs with the code below.
  3. Add the Freescale CPU.cs file from the Developer Kit Sample Project
  4. In the project properties, set the Transport as "Emulator" and the device as "i.MXS Emulator"
  5. Build & Run

If you are using real hardware, don't forget to set the Configuration Manager option to "deploy".

Please let me know if you have any questions

-Dave

--------------------------------

using System;

using Microsoft.SPOT;
using Microsoft.SPOT.Input;
using Microsoft.SPOT.Presentation;
using Microsoft.SPOT.Presentation.Controls;

using System.Text;                              // UTF Encoding
using Microsoft.SPOT.Hardware;                  // Added - CPU.cs
using Microsoft.SPOT.Hardware.FreescaleMXSDemo; // Added - CPU.cs
using Microsoft.SPOT.Presentation.Media;        // Colour, etc

namespace MEDCDemo1
{
    public class Program : Microsoft.SPOT.Application
    {
        // Instantiate Resources & variables
        static Bitmap Canvas;                   // Bitmap Canvas
        static Font font = Resources.GetFont(Resources.FontResources.small);
        static SerialPort serialPort = null;    // Serial Communication

        static int temp = 18;                   // Default Temperature
        static int mintemp = 12;                // Minimum Temperature
        static int maxtemp = 24;                // Maximum Temperature
       
        public static void Main()
        {
            Program myApplication = new Program();

            Window mainWindow = myApplication.CreateWindow();

            // Initialise the drawing Canvas
            Canvas = new Bitmap(mainWindow.Width, mainWindow.Height);       // Bitmap holding the picture
           
            // Set up serial port
            SerialPort.Configuration serialConfig = new SerialPort.Configuration((SerialPort.Serial)0, (SerialPort.BaudRate)115200, false);
            serialPort = new SerialPort(serialConfig);
            Debug.Print("Serial port is writing/listening to " + serialPort.Config.Com + " at " + serialPort.Config.Speed);
       
            // Set up Up Button Interrupt - Up button is GPIO_PORT_B_11
            InterruptPort UpButton = new InterruptPort(Pins.GPIO_PORT_B_11, true, Port.ResistorMode.PullUp, Port.InterruptMode.InterruptEdgeBoth);
            UpButton.OnInterrupt += new GPIOInterruptEventHandler(UpButtonPush);

            // Set up Down Button Interrupt - Down button is GPIO_PORT_B_10
            InterruptPort DownButton = new InterruptPort(Pins.GPIO_PORT_B_10, true, Port.ResistorMode.PullUp, Port.InterruptMode.InterruptEdgeBoth);
            DownButton.OnInterrupt += new GPIOInterruptEventHandler(DownButtonPush);

            // Create the object that configures the GPIO pins to buttons.
            //GPIOButtonInputProvider inputProvider = new GPIOButtonInputProvider(null);

            // Start the application
            myApplication.Run(mainWindow);
        }

        private Window mainWindow;

        public Window CreateWindow()
        {
            // Create a window object and set its size to the
            // size of the display.
            mainWindow = new Window();
            mainWindow.Height = SystemMetrics.ScreenHeight;
            mainWindow.Width = SystemMetrics.ScreenWidth;

            // Create a single text control.
            //Text text = new Text();

            //text.Font = Resources.GetFont(Resources.FontResources.small);
            //text.TextContent = Resources.GetString(Resources.StringResources.String1);
            //text.HorizontalAlignment = Microsoft.SPOT.Presentation.HorizontalAlignment.Center;
            //text.VerticalAlignment = Microsoft.SPOT.Presentation.VerticalAlignment.Center;

            // Add the text control to the window.
            //mainWindow.Child = text;

            // Connect the button handler to all of the buttons.
            //mainWindow.AddHandler(Buttons.ButtonUpEvent, new ButtonEventHandler(OnButtonUp), false);

            // Set the window visibility to visible.
            mainWindow.Visibility = Visibility.Visible;

            // Attach the button focus to the window.
            Buttons.Focus(mainWindow);

            return mainWindow;
        }

        private void OnButtonUp(object sender, ButtonEventArgs e)
        {
            // Print the button code to the Visual Studio output window.
            Debug.Print(e.Button.ToString());
        }

        //                               //
        //  Handle Up Button Push Event  //
        //                               //
        public static void UpButtonPush(Cpu.Pin port, Boolean state, TimeSpan time)
        {
            if (state) // Only handle button down
            {
                Debug.Print("Up");

                if (temp < maxtemp)  // Ensure we don't go above max
                {
                    temp++;
                    Drawtemp(temp);
                    ChangeTemp(temp);
                }
            }
        }

        //                                 //
        //  Handle Down Button Push Event  //
        //                                 //
        public static void DownButtonPush(Cpu.Pin port, Boolean state, TimeSpan time)
        {
            if (state) // Only handle button down
            {
                Debug.Print("Down");

                if (temp > mintemp)  // Ensure we don't go below min
                {
                    temp--;
                    Drawtemp(temp);
                    ChangeTemp(temp);
                }
            }
        }

        //                                 //
        //  Helper - Draw Graphic Display  //
        //                                 //
        private static void Drawtemp(int temp)
        {
            // Calculate temperature interval
            int y = Canvas.Height - ((Canvas.Height / (maxtemp - mintemp)) * (temp - mintemp));

            // Draw white background
            Canvas.DrawRectangle(Color.White, 1, 0, 0, Canvas.Width, Canvas.Height, 0, 0, Color.White, 0, 0, Color.White, Canvas.Width, Canvas.Height, 256);
            // Draw Temperature Bar
            Canvas.DrawRectangle(Color.Black, 25, 0, y, Canvas.Width, 1, 0, 0, 0, 0, 0, 0, 0, 0, 256);
            // Add Temperature to Bar
            Canvas.DrawText(temp.ToString(), font, Color.White, 150, y - 5);
            //Display the temperature
            Canvas.Flush();
        }

        //                                 //
        //  Helper - Change Thermostat     //
        //                                 //
        private static void ChangeTemp(int temp)
        {
            // Ensure we have a serial port
            if (serialPort != null)
            {
                // Encode to UTF8
                UTF8Encoding enc = new UTF8Encoding();
                // Encode Byte array
                string tempString = "Temperature = " + temp.ToString() + "\r\n";
                byte[] tempData = enc.GetBytes(tempString);
                // Write to Serial Port
                serialPort.Write(tempData, 0, tempData.Length);

                Debug.Print(tempString);
            }
        }
    }
}

MEDC Berlin - Micro Framework Emulators

I had a couple of conversations MEDC last week regarding the creation and extention of Micro Framework emulators.  The attached document is from an Instructor Led Lab that was run at MEDC Vegas, it gives a great overview of the Micro Framework emulator and how it can be easily extended.  Please let me know if you have any questions.

-Dave

MEDC Berlin - Micro Framework Session Slide Deck

Thankyou to all of you who attended my Micro Framework session at MEDC Berlin earlier this week.  I hope you found it useful and informative... 

You can find the slide deck I referenced attached.  Let me know if you have any questions.

-Dave

Paris Techdays - Me, Mike and Olivier talk about Embedded...

Olivier blogged about this a while back, but I came across it whilst I was pulling material together for MEDC.  During the Paris Techdays in February, Oliver Bloch, Mike Hall and myself where interviewed about Microsoft Embedded technologies: Windows CE 6.0, Windows XP Embedded, and the .NET Micro Framework.

Don't be afraid the interview starts in French, all the technical bits are in English :)

Getting Started with the Freescale i.MXS Micro Framework Board

One of the Micro Framework boards I've been working with recently is the i.MXS from Freescale, it has great functionality and is great for demos with it's QVGA screen.

Alden Linn has written a whitepaper which offers some great tips for getting started with .NET MF using the i.MXS Development Kit and, among other things, addresses some differences between the actual hardware and the .NET MF emulator.

You can find the article on Alden's Blog ---> Here.

.NET Micro Framework Videos

You may be aware that I'm giving a .NET Micro Framework session at MEDC next week.  As part of my preparation I been reviewing some material and cam across these videos that you may find interesting.

On on10.net here, there's a great video of Mike Hall giving a demo of building a .NET MF project using Visual Studio 2005. He demonstrates both the emulator built into Visual Studio 2005 and real hardware in the form of a reference design from Freescale. The application is a quick and dirty implementation of Space Invaders, which Mike says he wrote on a recent flight from Seattle to Germany [He neglects to mention that until I got my hands on it there were no bombs and the explosions looked like pizza :)]

The other is a quick showcase "day in the life" video here that features a number of .NET MF gadgets, including the Melita coffee maker, I blogged about a while back, that tells you the weather whilst brewing your morning cup of coffee .

More Posts Next page »
Page view tracker