Merhabalar, .Net micro framework ile Google maps i kullanmayı inceleyecegiz.

İlk olarak cihazımıza IP veriyoruz bunun için :

    foreach (NetworkInterface nic in nics)
    {
            nic.EnableStaticIP("192.168.2.8", "255.255.255.0", "192.168.2.254");
    }
 
Cihazımıza IP verince map.google.com dan gerekli dataları donwload etmek için WebClient.cs i projemize ekliyoruz.Ben bunu internetten almıştım, kendinizde yazabilirsiniz. Ama Elze Kool un çok iyi Web Client i var.
İstedigimiz koordinat daki resmi download edip görüntülemek için :

        double lat = 37.060383;
        double lot=37.374287;
        int zoom = 12;
        public void ciz(double lat, double lot, int zoom)
        {
            string size = "320x240";
            Bitmap screen = new Bitmap(SystemMetrics.ScreenWidth, SystemMetrics.ScreenHeight);
            try
            {
               
                WebClient client = new WebClient("maps.google.com", 80);
                Bitmap map = client.GetContent(
                     "/staticmap?center=" + lat.ToString() + "," + lot.ToString() + "&zoom=" + zoom + "&size=" + size + "&maptype=mobile",
                     WebClient.ContentType.Image, WebClient.HttpVersion.V_11) as Bitmap;
                screen.DrawImage(0, 0, map, 0, 0, map.Width, map.Height);
                screen.Flush();
            }
            catch (SocketException se)
            {
               
            }
        }
Kullandım ben. WPF le görselligi arttırmak mümkün.İşte bir kaç örnek :


Buda benim Tahoe II deki hali :
Kullandım ben. WPF le görselligi arttırmak mümkün.İşte bir kaç örnek :

Buda benim Tahoe II deki hali


Daha fazla açıklama için http://www.codeproject.com/KB/dotnet/UsingGoogleMapInMF.aspx

Bu arada langtitude ve longtitude bilgilerini bir GPS cihazından okunsa (seri port üzerinden örnegi çok), bir navigator ( navigasyon ) cihazı üretile bilir. Tabii google earth ( maps ) üzerinden verileri almak için bir GPRS modeme ihtiyaç olacaktır. Yada SD card a bütün Türkiye nin haritaları yüklenebilir, bu şekilde offline çalışabilir.

Benim yaptıgım uygulamada standart yön tuşları ile ekranda gezile bilmekte ve ekrandaki zoom in ve zoom out ile yakınlaşma uzaklaşma yapıla bilmektedir.

MF ile RSS Okuma

24 Mar 2009 In: .net, .Net Micro Framework, Tahoe-II

RSS nediri burada anlatmayacagım, 2005 yılında YazGeliştir de bu konu ile ilgili bir makalem yayınlanmıştı. RSS nedir ve C# ile RSS verilerini okuma ile ilgili linkten bilgi edinile bilir.

Ben size bunu MF ile nasıl gerçekleştiriz onu anlatacagım. Ilk olarak yapılması gereken MF cihazına IP aldırmak, bunun 2 yöntemi var;

1- Dynamic olarak DHCP üzerinden otomatik almasını saglamak
2- Static olarak ag'da alması gereken IP yi biz vermeliyiz.

Dinamik olarak IP alması için : 

    NetworkInterface[] nicler = NetworkInterface.GetAllNetworkInterfaces();
                    foreach (NetworkInterface nic in nicler)

                    {
                        nic.EnableDhcp();
                        //DHCP etkin
                    }

Statik olarak Manuel IP yi atamak için :

       NetworkInterface[] nicler = NetworkInterface.GetAllNetworkInterfaces();
                     foreach (NetworkInterface nic in nicler)
                    {
                        nic.EnableStaticIP("192.168.2.8", "255.255.255.0", "192.168.2.254");
                    }


Bilgidiniz üzere RSS kaynakları aslında XML dosyaları, tek yapmamız gereken adresden XML i indirmek ve nodelarına göre gerekli alanları göstermek.
Şu namespacleri projenize eklemeniz gerekiyor;

using System.IO;
using System.Xml;
using Microsoft.SPOT.Net;
using Microsoft.SPOT.Net.NetworkInformation;

Bu kütüphanelerle dosyayı inidirip XML nodlarına parçalayacagız. Ben metinleri bir TextFlow la görüntülemeyi uygun gördüm ama, ListBox ile etkileyici bir görünüm yakalana bilir.
ListBox 'ın Itemlarının haber başlıkları görüntülenip, yön tuşları ile degişme eventınada haberin içerigini görüntüleme işlemi saglana bilir.

XML dosyasını download etmek için gerekli Request ve dönen Responce işlemlerini Micheal Schwarz a ait RSSReader.cs ile gerçekleştirdim. Buradan indirebilirsiniz.

Dönen XML in "Title" nodundaki bilgileri alıp görüntüleyen kodlar şu şekilde :

                    string xmlsi = RssReader.GetXML("hhttp://www.sabah.com.tr/rss/anasayfa.xml", String.Empty);
                    byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes(xmlsi);
                    MemoryStream strm = new MemoryStream(data); 
                    XmlTextReader xml = new XmlTextReader(strm);

                    while (xml.Read()) 
                     {
                         if (xml.NodeType == XmlNodeType.Element && xml.Name == "title")
                         {
                             text.TextRuns.Add(xml.ReadElementString(), Resources.GetFont(Resources.FontResources.small), Colors.Red);
                             text.TextRuns.Add(TextRun.EndOfLine);
                         }
                    } 

Bu da ekran çıktısı. Kolay gelsin...


Micheal Schwarz ın XML i download edecek requesti gönderen ve response olarak donen byte ları XML dosyasına çeviren kodu  RssReader.cs (10,50 kb)


Türkçe karakter problemi var :)

Yıllık olarak yapılan takvimde istenilen gün ve zamanlarda GPIO portunu açan ve kapatan uygulama. LED yerine Röle kullanılarak 220v ile çalışan cihazları kontrol edilebilir.

Açılış ve kapanış saat leri arasında GPIO pininde elektrik vardır, kapanış saati geldiginde pinden keser. İstenilirse toplam çalışma zamanlarını tesbit edip, aylık olarak raporlaya bilir.4'erli grup halindeki butonlarla başlangıç ve bitiş zamanlarını ayarlıyorsunuz.

 

micro framework

 

 

Timer methodu için http://blogs.msdn.com/netmfteam/archive/2008/03/04/using-the-dispatcher.aspx  deki yöntemi kullandım. Tabii bizim uygulama için bir kaç yerini özelleştirmek gerekti. İsteyene tam kaynak kodlarını verebilirim.

public class Timer
{
      public  string zaman="";
      private Text textView;
      private DateTime start;
      private DispatcherTimer dispatchTimer;
      public Timer(Text text)
      {
      textView = text;
      textView.TextContent = new TimeSpan(0).ToString();
      start = DateTime.Now;
      }

      public void Start()
      {
          dispatchTimer = new DispatcherTimer(textView.Dispatcher);
          dispatchTimer.Tick += new EventHandler(UpdateTimerText);
          dispatchTimer.Interval = new TimeSpan(0, 0, 5);
          dispatchTimer.Start();
      }

     public void UpdateTimerText(object sender, EventArgs e)

     {
        textView.TextContent = DateTime.Now.ToString();
        int acsaat = 0, acdak = 0,kasaat=0,kadak=0;
        kasaat = Convert.ToInt16(zaman.Substring(19, 5).Substring(0, 2));
        kadak = Convert.ToInt16(zaman.Substring(19, 5).Substring(3, 2));
        acsaat=Convert.ToInt16(zaman.Substring(12, 5).Substring(0,2));
        acdak = Convert.ToInt16(zaman.Substring(12, 5).Substring(3, 2));
        if (DateTime.Now.Hour == acsaat && DateTime.Now.Minute == acdak)
           Kontrol.Write(true);

        if (DateTime.Now.Hour == kasaat && DateTime.Now.Minute == kadak)
           Kontrol.Write(false);
      }
} 

Video su aşagıda

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.

 

Daha önceki yazımda Micro framework e bir giriş yapmıştık ama sanırım olayın backgroundunu pek incelemedik.
Jens Kühner kitabında çok güzel bir şekilde .Net Microframework ün tanımını yapmıştı:

"The Microsoft .NET Micro Framework is a small and efficient .NET runtime environment used to run managed code on devices that are too small and resource constrained for Windows CE and the .NET Compact Framework.

The .NET Micro Framework enables you to write embedded applications for small, connected, embedded devices with Visual Studio and C#. That means you can now use the same development tools and language that you use to build desktop and smart device (PDA and smartphone) applications to develop applications for microcontrollers. The .NET Micro Framework also provides an extensible hardware emulator for rapid prototyping and debugging.

The .NET Micro Framework requires no underlying operating system. A scaled-down version of the Common Language Runtime (TinyCLR) sits directly on the hardware, so the framework is often called a bootable runtime. The runtime has a small footprint; it uses only a few hundred kilobytes of RAM and does not require the processor to have a memory management unit (MMU). Therefore, the .NET Micro Framework can run on small and inexpensive 32-bit processors without consuming a lot of power."

Platformu biraz daha tanıyalım istedim, bildiginiz gibi yanlızca yazılım yönü yoktur platformun birde donanım kısmı var. 
Dünyada bir çok CPU üreticisi olmasına ragmen, şu an için işlemcisini MF boardına port eden çok az firma var. Donanım üreticileri kendi işlemcilerini veya piyasada ki başka ARM işlemci üreticilerinden aldıkları işlemciyi, RAM, ROM ve besleme elemanlarını bir araya getirip kendi board larını oluşturuyorlar.

MF de yazılan kodların çalışması için 32 bitlik ARM bir işlemci ve 64K den az RAM yeterli oluyor. MMU olmaması, CE cihazlarından daha ucuza gelmesini saglıyor.
Bu yüzden MF yüklü cihazlar düşük maliyetli, yüksek beceri gerektiren, yanlızca bir fonksiyona atanmış ve baglanabilir sistemler için iyi bir tercih.

Potansiyel uygulama alanları çok. POS cihazlarından tutun da, medikal cihazlar, ev veya endüstriyel otomasyonlar, otomotiv ve PC baglantılı görev verebileceginizi her yerde kullanılabilir. Akıllı, baglantı halinde ve kolay yönetilebilen bir cihaza ihtiyacınız varsa ve buna uygulama geliştirmek te kolay olsunsa buyurun size MF yüklü cihazlar.

Üzerinde ARM işlemci bulunan bütün Single-Board-Computer lara uygulanma imkanı var. Şu an board olarak satılan ve içine MF port edilmiş cihazlardan bir kaçı üreten firmalar şunlar :
 
  • Aug-electronics  (ATMEL AT91SAM9261 üzerinde)
  • Crossbow  (Marvell PXA271 XScale ARM tabanlı)
  • Device Solutions  (Meridian 100 Mhz, 4 Mb flash, 8 Mb RAM, 16 GPIO, SPI, I2C, 2xUART. üzerinde)
  • Digi  (NS7520, NS9215, NS9210 işlemcileri üzerine)
  • emtrion  (Atmel AT91RM9200 üzerinde)
  • GHI  (ARM 7 işlemciler üzerine <75 Mhz)
  • SJJ Micro (Cirrus Logic EP9302 ARM9 200MHz)

    Neredeyse hepsinin developer kitleri var. Bazılarının yanlızca single-boardlarıda var. Developer kitler $200 ile $500 arasında degişiyor. Üzerinde sundukları donanımlara göre fiyatlar çeşitli. Single-Boardlar ile 50$ civarlarında.
  • TC Kimlik numaraları bildiginiz üzere 11 basamaktan oluşmakta. Ama aslında sondaki 2 rakam checksum için kullanılıyor.
    Bizi temsil eden numara ilk 9 basamak aslında. Bu ilk 9 basamak arasında kurulan bir algoritma bize 10. basmağı,
    ilk 10 basamak arasında kurulan algoritma ise bize 11. basamağı verir.

    • 1. 3. 5. 7. ve 9. hanelerin toplam degerinin 7 katından, 2. 4. 6. ve 8. hanelerin toplamı çıkartılır ve 10'a göre modu alınır, yani 10 a bölündügünde kalan sayı bizim 10. hane oluyor.
    • 1. 2. 3. 4. 5. 6. 7. 8. 9. ve 10. hanelerin yani ilk 10 haneninin toplamından elde edilen sonucun 10'a göre modu ise bize 11. haneyi veriyor.

    Örnegin:  50984646282
    MOD10 ( ( (5+9+4+4+2) * 7) - (0+8+6+6) ) = 8
    MOD10 (5+0+9+8+4+6+4+6+2+8) = 2

    Hiç karmaşık degil ama sen sizin için bir TC kimlik numarası türeticim var,
    istediginiz kadar geçerli T.C. No su üretebilirsiniz. Generate TC Number
    buradan üretin

    C# 2.0 ve Java (J2SE 5.0) arasındaki farklar

    28 Oca 2009 In: .net
    Buyurunuz efendim
    http://www.harding.edu/fmccown/java1_5_csharp_comparison.html

    ve VB.Net ile C# arasındaki farklar tablosu
    http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

    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...


    Arşiv