30.06.2012

Pierwszy program NETMF

Aby rozpocząć programować w NETMF nie trzeba kupować od razu żadnej elektroniki, procesorów itp. Nie trzeba również umieć lutować (na razie). Po prostu ze strony NETMF ściągamy aktualny SDK, instalujemy i możemy napisać pierwszy program!. Na przykład coś takiego:

using System;
using System.IO.Ports;
using System.Text;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;

namespace MFConsoleApplication1
{
    public class Program
    {
        private const int Delay = 500;

        public static void Main()
        {
            Debug.Print("start");

            var led1 = new OutputPort((Cpu.Pin)3, false);

            using (var serial = new SerialPort("COM1"))
            {
                Debug.Print("open serial port");
                serial.Open();
                WriteHello(serial);
            
                while (true)
                {
                    ChangePort(led1, serial);
                }
            }
        }

        private static void WriteHello(SerialPort serial)
        {
            var sb = new StringBuilder("Hello ");
            sb.Append(SystemInfo.OEMString);
            sb.Append(" Version: ");
            sb.Append(SystemInfo.Version);
            sb.Append(" Model: ");
            sb.Append(SystemInfo.SystemID.Model);

            if (SystemInfo.IsEmulator)
                sb.Append(" running on emulator");

            sb.AppendLine(String.Empty);

            string msg = sb.ToString();
            Debug.Print(msg);

            byte[] msgBuff = Convert(msg);
            serial.Write(msgBuff, 0, msg.Length);
        }

        private static void ChangePort(OutputPort port, SerialPort serial)
        {
            bool nextState = !port.Read();
            port.Write(nextState);

            var sb = new StringBuilder("Port ");
            sb.Append(port.Id);
            sb.AppendLine(nextState ? " on" : " off");

            string msg = sb.ToString();
            Debug.Print(msg);

            byte[] msgBuff = Convert(msg);
            serial.Write(msgBuff, 0, msgBuff.Length);

            Thread.Sleep(Delay);
        }

        private static byte[] Convert(string message)
        {
            byte[] result = Encoding.UTF8.GetBytes(message);
            return result;
        }
    }
}

Program najpierw przedstawia się na porcie COM, a następnie w nieskończoność mruga (powiedzmy diodą) na porcie 3 procesora jednocześnie wysyłając informację na port szeregowy:

Hello Microsoft Copyright (C) Microsoft Corporation. All rig Version: 4.2.0.0 Model: 2 running on emulator

Port 3 on

Port 3 off

Brak komentarzy:

Prześlij komentarz