.Net Micro Framework cihazlar ile yapılaca bilecek örnek uygulamaların sayısı her geçen gün artmakta. Elze Kool un sitesinde Dare to Dream Different Challenge yarışması için hazırladıgı prototipde kullanacagı GSM modülü için hazırladıgı sınıfı yayınlamış. Cihazın özellikleri burada.
Açıkcası bende test etmek için can atıyorum, bu kart sayesinde 

-GPS Tracking
-GPS DataLogger
-Telemetri (uzaktan veri okuma)
-GPS ile üzerinde GSM modulu sayesinde online izleme ve çeşitli tetikleme işlemleri gerçekleştirilebilir.

GPS üzerinden alınan verilerle, yerleştirildigini nesnenin

-Belirli bir hızı geçtiginde
-Belirli bir mesafesi kat ettiginde
-Belirli bir bölgeden başka bölgeye nakil oldugunda 
-Veya ayarlanmış periyotlarda düzenli şekilde veri gönderimi gibi durumlarda

GSM modülündeki SMS veya GPRS ile online haber verebilir, çeşitli bilgileri iletebilir. Bu iki modülün tek çatıda birleşmesi kartın yeteneklerini elbette arttırıyor.
Elze nin örnek uygulaması heyecanla bekliyorum.

 

Telit firmasının ürünlerini Türkiye'de Epsilon Teknoloji Ltd. Şti. firmasından temin edebilirsiniz.


.Net Micro Framework Serial Port

Merhabalar, bu uygulamada micro framework platformunda seri port haberleşmesinin nasıl gerçekleştigini görecegiz.

Bunu görmek için 2 uygulamamız var birisi PC mizde çalışan veri gonderip almaya yarayan uygulamamız, digeri ise TahoeII üzerinde çalışan yine seri porttan veri geldiginde gösteren ve sag tuşa( SW8) bastıgımızda DateTime.Now dan saniye bilgisini gönderen uygulama.

Masa üstünde klasik aşagıdaki kodla COM portu açar ve veri bekleriz

        private void Form1_Load(object sender, EventArgs e)
        {
            sp1 = new SerialPort("COM6", 9600, Parity.None, 8, StopBits.One);
            sp1.Open();
            sp1.DataReceived += new SerialDataReceivedEventHandler(verigeldi);
        }

Açtıkdan sonra veri geldiginde 

string okunan = sp1.ReadLine();

okuruz ve textboxda görüntüleriz.

textBox2.Text = okunan;

PC gönderme işleminde ise sp1 açık iken

sp1.WriteLine(textBox1.Text);

ile göndermek mümkün. Masa üstünde işlem bu kadar, MF tarafındada aynısının yapılması gerekiyor.

CreateWindow fonksiyonundan önce 

SerialPort c1 = new SerialPort("COM1", 9600);
public Window CreateWindow()
        {
            mainWindow = new Window();
            mainWindow.Height = SystemMetrics.ScreenHeight;
            mainWindow.Width = SystemMetrics.ScreenWidth;
            mainWindow.Background = new SolidColorBrush(Colors.Black);

            text = new Text();
            text.Font = Resources.GetFont(Resources.FontResources.calibri);
            text.TextContent = "Seri Test Deneme v0.1";
            text.HorizontalAlignment = Microsoft.SPOT.Presentation.HorizontalAlignment.Center;
            text.VerticalAlignment = Microsoft.SPOT.Presentation.VerticalAlignment.Center;
            text.Width = 200;

...

...

...

            c1.ReadTimeout = 800;
            c1.Open();
            c1.DataReceived += new SerialDataReceivedEventHandler(okumaoldu);
       }

ile COM1 üzerinden okumaya hazır hale geliriz. Gelen veri bufferda tutulur. Onu göstermek için

switchlerden aşagıya basıldıgında görüntülemek için

        private void OnButtonUp(object sender, ButtonEventArgs e)
        {
            try
            {
                switch (e.Button)
                {
                    case Button.VK_DOWN:

  //alınan veriyi görüntülemek için
                        text.TextContent = "";
                        byte[] okunanb = new byte[20];
                        c1.Read(okunanb, 0, 20);
                        char[] okunanc = System.Text.UTF8Encoding.UTF8.GetChars(okunanb);

                        for (int i = 0; i < okunanc.Length; i++)
                            text.TextContent += okunanc[i];

                        c1.Close();
                        break;

                    case Button.VK_RIGHT:
//gönderim için
                        if(!c1.IsOpen)
                            c1.Open();

                        byte[] gond = System.Text.UTF8Encoding.UTF8.GetBytes("Saniye : "+DateTime.Now.Second.ToString()+"\n");
                        c1.Write(gond, 0, gond.Length);
                        //c1.Close();                       

                        break;
                }
            }
            catch (Exception ex)
            {
                text.TextContent ="HATA : "+ex.Message;
                //text.Invalidate();
            }
        }

 

Yukarıdaki kodda saga basınca veriyi gönderirir, alt tuşa baılınca görüntüler. Buradaki onemli nokta veri alırkende gönderirkende COM1 portu açık olmalı. En başta Open olarakda set edebilirsiniz. Diger onemli nokta bazı developer kitlerde SerialDataReceivedEventHandler handlerini COM portunu Open ettikten sonra Set etmeniz gerektigi.

Tahoe2 de ben bunu yaşamadım ama yinede belirteyim dedim AUG devkitlerde bu mevcut.

PC ile MF board arasındaki baglantıyı ise cross yaparak sagladım. Tıpkı şu şekilde 



Hepinize başarılar, sormak istedikleriniz olursa e-mail ile sorabilirsiniz.

Kolay gelsin...

 


Birinci resmin büyük hali için tıklayınız. İkinci resim için buraya. Ekran görüntüsü içinse buraya.

 



Windows 7 The Sensor and Location Platform

9 Şub 2009 In: .net

Aşagıdaki adresde şubat 2009 .NET Micro Framework SDK 3.0 ın döküman güncellemesi var.

.NET MF 2/2009 Doc Update

RTM Releasede eksik olan bazı sınıflar ve bir kaç güncel bilgilendirme içerir.

Download ettikten sonra,
WinXP de
- C:\Program Files\Microsoft .NET Micro Framework\v3.0\Documentation\NET MicroFramework Docs
Vistada ise
- C:\Program Files (x86)\Microsoft .NET Micro Framework\v3.0\Documentation\NET MicroFramework Docs

Ve VS yi yeniden başlatıyorsunuz.

.Net Micro Framework 3.0 ile VS2008 de geliştirilen basit bir GPIO ve Touch Screen örnek uygulaması videosu. Örnekde ki developer kit device solutions ın Tahoe II si.

 Kullandıgımız Tahoe boardın referansını VS a ekledikten sonra

using DeviceSolutions.SPOT.Hardware;

Herhangi bir GPIO için output tanımlıyoruz.

static OutputPort LED;

Yarattıgınız WPF window un constructorunda

LED = new OutputPort(Meridian.Pins.GPIO4, false);

 Bu işlemden sonra panel ve window üzerindeki buttonun click eventini yaratıyoruz

void button_Click(object sender, EventArgs e)

{
text1.TextContent = "+++ ACIK +++";
LED.Write(
true);
}

Bu button GPIO 4 portuna 1 yani (3.3v) gönderir.

diger button ilede  LED.Write(false);
ile yine 0v a çekeriz ve LED söner.

Dokunmatik ekranda üzerine tıklanan nesnenin görselini degiştirmek için özelleştirilmiş bir button objesi kullanıyoruz.

 


Gömülü sistemlerde, .Net micro framework kullanmanın ajantajlarını şu şekilde özetleye biliriz:
 
- Diger gömülü sistemlere göre düşük geliştirme maliyeti
- Daha hızlı ürün geliştirme süreci
- Düşük donanım fiyatı
- Küçük donanım boyutları
- Düşük enerji tüketimi
- Belirli bir chipsetine ve donanım üreticisine baglılıgın kalkması
- Microsoftun gömülü sistemler stratejisinde önemli bir yer alması
 
Bunların dışında diğer sistemlerden en belirgin özellikleri ise
- Managed kod 
- C# gibi modern ve gelişmiş bir dil kullanmak
- .Net in gömülü sistemler için zengin sınıf kütüphaneleri
- Donanım sürücü (driver) leri ile çeşitli donanımlara erişim
- Visual Studio gibi birinci sınıf geliştirme ortamı
- Ek yapıla bilen emulatör ile hızlı prototip geliştirip debug  yapabilme
- Cihaz üzerinde online debug yapabilme

.Net MF Mimarisi ve Bootable Runtime Environment
.Net Micro Framework ün  yüklü oldugu cihazlarda bir işletim sistemine gerek kalmıyor. .Net Micro Framework direk cihaz üzerinde çalışmakta.
 
Cihazın yaptıgı temel işletim sistemi fonksiyonları aşagıdaki gibi :
- Boot kodu
- Code execution (çalıştırılacak kod)
- Thread Management (Thread Yönetimi)
- Memory Management (Hafıza Yönetimi)
- Donanım I/O 
 
Tam olarak bir işletim sistemi olmasa da, mevcut işletim sistemlerinin bazı fonksiyonlarına sahip ve o görevleri yerine getiriyor. O yüzden ona küçük bir işletim sistemi yerine, bootable runtime environment deniliyor.
  

.Net MF Mimarisi - celiker.com
Microsoftun pratikdeki ilk önerileri şunlar
 
-Harici Ekranlar
-Sensör kullanılan uygulamalar
-Saglık Görüntüleme Cihazları
-Robotics
-Giyilebilen cihazlar
-DataLogger lar 
-Ev Otomasyonları
-Endüstriyel Controller
-Para veya jetonla çalışan cihazlar gibi kullanım alanları önermekte.
 
.Net Compact framework min. 12 MB RAM ihtiyacı duyarken, Micro Framework içinse 300 KB RAM yeterli oluyor. 27 MHz lik ARM7 işlemcili 384 KB RAM ve 1 MB flash memory e sahip akıllı saatler .Net Microframework ile çalışmakta. .Net Micro Framework için önerilen minimum donanım gereksinimi
-ARM 7  ailesi  işlemci
-55 MHz
-8 MB RAM
-1 MB Flash Memory.

.Net  Microframe work için 32 bitlik işlemci şart. Piyasada 16 bit veya çift 8 bitlik işlemcilerde C veya assembly ile geliştirilen uygulamaların yerini, üretim maliyeti düşük ve çok az enerji harcayan 32 bitlik işlemciler almakta.

Micro Framework ne yapamaz?
.Net Micro Framework real-time bir sistem degil. Bir çok uygulama için oldukça hızlı ve yeterli olsa da, onu real-time sistem performansı beklememek lazım. 

Yazılımınız içinde kullanıdıgınız bir timer eger her 250 ms de tetiklenmesi gerekiyorsa, ISR (interrupt service routine) kesme işlemini gerçekleştirip istediginiz kodu çalıştırmakta birkaç milisaniye geç kalabilir.
Veya Garbage Collector çalışıp hafızada kullanılan alanlarını boşaltırken sizin kodunuzdaki threadler birkaç milisaniye bloke olabilir. Bunla beraber yazdığınız managed kod, native koda göre elbette bir miktar daha yavaş çalışacaktır. Güçlü donanımlarla bir nebze bunun önüne geçilebilir. Yazmış olduğunuz managed kodlar her an bir kesme istemiyse kesile bilir. Compiler  Just-in-time derleyemediği için kod ilk çalışmaya başladığında tamamıyla derlenmekte ve hafızaya atılmakta.

Ben Kimim ?

Celiker BahceciMerhabalar, ben Çeliker BAHÇECİ. 2004 den beri özel sektörde bilgisayar mühendisligi ve egitmenlik yapıyorum. Yine aynı yılın Ekim ayından beri sitemde .Net ile programlama ve hayat görüşüm ile ilgili makalelerimi yayınlıyorum. Blogum dışında Yazgelistir.com, mobilnedir.com gibi ineta kapsamındaki bir çok siteye Microsoft teknolojileri ile ilgili yazılar yazmaktayım.
Bu site ile sizinde hayatınızı anlamlandırmanızda bir parça katkımın olması dilegiyle...