Facebook RSS Feed
 
.NET Micro Framework: Netduino: SD Kart Erişimi
Tarih: 29.10.2013, Platform: .NET MF 4.2, IDE: Visual Studio 2012, Level: 200

Multimedia cihazları ve data logger gibi uygulamalarda sıklıkla SD kart kullanmamız gerekecektir. SD kartlar küçük boyutları ve yüksek kapasiteleri nedeniyle tercih edilmektedir. Normal, mini ve micro SD kartların kullanımı aynıdır ve ihtiyaca göre arzu edilen tip kart uygulamaya dahil edilebilir.

.NET MF ile SD kart kullanımı, komut satırından işlem yapma mantığına benzer. Önce çalışacağımız ana dizini belirleriz. SD Kart kullanımı için "SD" dizinini sürücü ismi olarak düşünebilirsiniz. Daha sonra klasör oluşturma, taşıma ve silme komutlarıyla gerekli işlemleri yapabiliriz.

Hedef

Örneğimizde klasör işlemlerine ek olarak, Stream Writer ile txt dosyası oluşturup, Stream Reader ile bu dosyayı satır satır okuyacağız.

Gerekenler

Netduino Plus 2
Micro SD Hafıza Kartı

Uygulama Kodları

Visual Studio'dan NetduinoSD adında Micro Framework Console Application oluşturun. Proje özelliklerinden SDK versiyonunu Netduino'nuza yüklü versiyon ile aynı olacak şekilde ayarlayın. (4.2) Proje referanslarına Microsoft.SPOT.IO, Microsoft.SPOT.Hardware.dll, SecretLabs.NETMF.Hardware.dll, SecretLabs.NETMF.Hardware.dll, SecretLabs.NETMF.IO ve SecretLabs.NETMF.Hardware.NetduinoPlus.dll dosyalarını ekleyin.

using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.NetduinoPlus;

namespace MFPersistentStorage
{
    public class Program
    {
        static PersistentStorage ps;

        public static void Main()
        {
            //Çıkarılabilir sürücü Event'lerini belirleyelim
            RemovableMedia.Insert += RemovableMedia_Insert; //Sürücü yerleştirildiğinde
            RemovableMedia.Eject += RemovableMedia_Eject;   //Sürücü çıkarıldığında

            ps = new PersistentStorage("SD"); //Çıkarılabilir depolama cihazı oluşturalım
            ps.MountFileSystem();             //Dosya sistemini başlatalım

            Thread.Sleep(Timeout.Infinite);   //Main Thread'i uyutalım
        }

        static void RemovableMedia_Insert(object sender, MediaEventArgs e)
        {
            if (e.Volume.IsFormatted) //Dosya sistemi biçimlendirilmişse
            {
                //Klasör işlemleri
                Directory.SetCurrentDirectory(@"SD"); //Çalışma klasörünü SD olarak ayarla

                //Çalışma klasörünü yazdır:
                Debug.Print("Çalışma Klasörü: " + Directory.GetCurrentDirectory());

                Directory.CreateDirectory(@"Klasor1"); //Klasor1 klasörü oluştur

                if (Directory.Exists(@"Klasor2"))      //Klasor2 klasörü varsa
                {
                    Directory.Delete(@"Klasor2");        //Klasor2 klasörünü sil
                }

                Directory.Move(@"Klasor1", @"Klasor2"); //Klasor1 klasörünü Klasor2'ye taşı

                Debug.Print("Klasör Listesi:");
                foreach (string klasor in Directory.GetDirectories(@"\SD"))
                {
                    Debug.Print(klasor); //Tüm klasörlerin isimlerini yazdır
                }

                //Dosya işlemleri
                if (File.Exists(@"DB.txt")) //DB.txt dosyası varsa
                {
                    File.Delete((@"DB.txt")); //DB.txt dosyasını sil
                    Debug.Print("Dosya silindi.");
                }

                //Stream Writer kullanarak DB.txt dosyası oluştur
                using (StreamWriter w = new StreamWriter(@"DB.txt"))
                {
                    for (int i = 1; i < 6; i++)
                    {
                        w.WriteLine(i); //1'den 5'e kadar her satıra bir numara yaz
                    }
                }
                Debug.Print("Dosya oluşturuldu.");

                //Stream Reader kullanarak DB.txt dosyasını oku
                using (StreamReader r = new StreamReader(@"DB.txt"))
                {
                    if (r.BaseStream.Length > 0)   //Dosya doluysa
                    {
                        for (int i = 0; i < 5; i++)
                        {
                            Debug.Print(r.ReadLine()); //Her satırı yazdır
                        }
                    }
                }

                Debug.Print("Dosya Listesi:");
                foreach (string dosya in Directory.GetFiles(@"\SD"))
                {
                    Debug.Print(dosya); //Tüm dosyaların isimlerini yazdır
                }
            }

            else
            {
                //Dosya sistemi FAT değilse kullanıcıyı uyar
                Debug.Print("Dosya sistemi FAT32 yada FAT16 değil.");
            }

            ps.UnmountFileSystem(); //Dosya sistemini serbest bırak, SD kartı çıkarmaya hazırla
            ps.Dispose();           //Kaynakları temizle
        }

        static void RemovableMedia_Eject(object sender, MediaEventArgs e)
        {
            //Dosya sistemi serbest bırakıldığında uyarı göster
            Debug.Print(e.Volume.RootDirectory + " Sürücüsü çıkarıldı.");
        }
    }
}

Uygulamayı cihaz üzerinde çalıştırdığınızda, Visual Studio Immediate Window'da aşağıdaki satırları göreceksiniz.

Çalışma Klasörü: \SD
Klasör Listesi:
\SD\Klasor2
Dosya silindi.
Dosya oluşturuldu.
1
2
3
4
5
Dosya Listesi:
\SD\DB.txt
\SD Sürücüsü çıkarıldı.

Immediate Window'da göreceğiniz GC ile başlayan satırlar, Garbage Collector'ın kaynak temizliği sonrası raporlarıdır. O satırları önemsemeyin.


Ek Dosya: Belirtilmemiş.
Okunma Sayısı: 1583

comments powered by Disqus
 
Hoşgeldiniz!
Son güncelleme: 25.12.2016
-
Yeni Teknik Yazılar
Latte Panda İncelemesi
Turta IoT HAT İncelemesi
USB Gamepad Kullanımı
GPIO Kullanımı
VEML6075 UV Sensör Kullan...
-
İlgili Gruplar
.NET MF ve Gadgeteer FB Grubu
İst. IoT & Wearables Meet-up
-
 

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.Copyright © 1999 - 2017, Umut Erkal. Bu materyal, "Creative Commons Public Licence" ile sunulmuştur.
Kaynak göstererek ve ücretsiz olarak, aynı şartlar altında paylaşabilir ve kullanabilirsiniz. | Kullanım Sözleşmesi