Volkan Atasever

mühendislik, edebiyat, retro computer, yazılım, şiir, nümismatik, bilişim, podcast ve daha bir çok yazılarım...

High Capacity Color Barcode (Microsoft Tag) - 1

clock Aralık 27, 2009 06:46 by author Volkan Atasever

Bu makalemde Yüksek Kapasiteli Renkli Barkod (High Capacity Barcode Teknolojisi) bahsederken aynı zamanda kullanım alanına gerçek yaşamdan örnek verip günlük hayatımızda veya  toplumun belli bir kesmi tarafından ne kadar yoğun olarak kullanılabileceğini inceleyeceğiz. Önce geçmiş Barkod teknolojisi ve yeni bir teknoloji olan Hisgh Capacity Color Barcode teknolojisini inceleyeceğiz.

1940'ların sonunda bir lisansüstü öğrencisi olan ABD'li Bernard Silver, öğrenim gördüğü Drexel Teknoloji Enstitüsü'ne gelen bir market zinciri sahibinin kasada tüm ürün bilgilerini otomatik kaydedecek bir sistem geliştirilmesini istediğini, ama enstitünün konuyla ilgilenmediğini gördü. Bu fikir Silver'in ilgisini çekti ve doktora öğrencisi olan arkadaşı ABD'li Norman Woodland'a bundan söz etti. Konu üzerinde birlikte çalışmaya başladılar. İlk barkod uygulamasını yaza Bernard ve arkadaşı bu sayede bu teknolojilerle tanışmamızı sağladı. Fakat 1940’larda keşfedilen bu teknoloji zamanla geliştirildi fakat günümüz dünyasında her alanda kullanılabilecek ve daha fazla veri saklayabilecek 2 boyutlu analog medyalara ihtiyaç duyuldu.  Yeni teknolojinin ismi ise High Capacity Color Barcode olarak duymaya başladık.

 

High Capacity Color Barcode(Yüksek Kapasiteli Renkli Barkod) Teknolojisi

High Capacity Color Barcode teknolojisi, Microsoft Research tarafından geliştirilmiş olup dijital verileri analog medyalar üstünde saklamamıza olanak sağlamaktadır. Bu teknolojisi sayesinde görüntü alabilen herhangi bir cihaz sayesinde bu görüntüyü dijital ortama aktarıp veriyi çekebilmemize olanak sağlamaktadır.Microsoft’a göre klasik barkod uygulamalarının yerini almaktansa daha büyük verileri saklamak amaıcyla kullanılacak bir teknoloji. Bu uygulamayı kullanmak için ise günümüzde en uygun cihaz PDA diye tabir ettiğimiz Windows Mobile kullanan smartphone veya profosyonel avuçiçi bilgisayarlardır. Her hücre birden fazla renk ile ifade edildiği için daha fazla sayıda bilgi saklamaya elverişli hale gelmiştir. Daha fazla bilgi saklarken yapısı gereği çok küçük bir alanı kaplayabilmektedir.

 

Solda; 8 renk barkod 84 RAW byte saklayabilmektedir. Sağda; 4 renk barkod 58 RAW byte saklayabilmektedir.

En solda siyah beyaz matris 1byte yani 8 bit saklayabilmektedir ve 8 sembol kullanıyor. 4 renk barkod 1 byte saklayabiliyor ve 4 sembol kullanıyor. En sağdaki ise 8 renkli barkod 1byte saklıyor ve 2.66 sembol kullanmakta.

 

Oluşturulan Tag’ler herhangi bir mürekkep püskürtmeli veya lazer yazıcıyla basılabilmekte olup 600dpi çözünürlüklü herhangi kartvizit tarayıcısıyla okunabilmektedir. Bu teknolojinin temeli ise renkli üçgenlerden oluşuyor diyebilmekteyiz.

Yukarıdaki görüntü herhangi bir 320x240 çözünürlüklü bir webcam ile okunabilmektedir. HCCB ile kimlik numarası, e-mail adresi ve internet site adresini saklayabilmektedir.

 

Microsoft Tag’ları herhangi bir platform veya işletim isteminde çalışmaktadır. Buradaki asıl amaç Mobil cihazlardaki kullanım alanın arttırılması ve mobilize yaşama geçişte önemli bir adım olarak görülmektedir.Yukarıda resimde 70 piksellik bir görüntüde dahi barkod okunabilmektedir.

 

 UYGULAMA ALANLARI

Ülkemizde bu uygulamanın öncülerinden biride Hürriyet Gazetesidir. Haberlerinin yanında vermiş olduğu yüksek kapasiteli tag’lerle insanlara aynı anda haberin video’sunuda izleme olanağı sunmaktadır. Kullanım alanları ise çok geniş olduğu için bunlara değinip incelemek istemekteyim. Yukarıdada bahsettiğim gibi Tag’leri kullanabilmek için herhangi bir kamerası olan ve yeterli güçte realtime görüntü yakalayabilen her cihaz bu tagleri hareketli ortamda dahi yakalayabilmektedir.

Bu makalenin ikinci serisinde teknik alan ve kullanımlar irdelenecektir.

Yazan: Volkan Atasever

Kaynaklar: Microsoft Research                    

Microsoft Tag Developer Portal                    

WikiPedia

 



Beykent Üniversitesi; SQL Server 2008 ve Veri Yönetimi Seminerim

clock Aralık 20, 2009 22:12 by author Volkan Atasever

Beykent Üniversitesinde 15.Aralık.2009 tarhinde SQL Server 2008 ve Veri Yönetimi isimli bir seminer verdim. Seminer oldukça keyifliydi. İki bölümde geçen seminerde süpriz bir Mobile Development konulu anlatımda yaptım. İlk bölümde önemli veritabanı kavramları üstünde dururken ikinci bölümde SQL Server 2008 ile gelen yenilikleri canlı demo göstresi şeklinde genç üniversite öğrencisi arkadaşlarımla paylaştım. INETA'nın desteğiyle USB Stick, Microsoft kartvizitlikler gibi ufak hediyelerde günün hatırası olarak öğrenci arkadaşlarıma vermiş oldum.

 




PCWORLD Aralık Sayısındaki Yazı Dizim - Mobil Programlama

clock Kasım 29, 2009 11:48 by author Volkan Atasever

Dünyanın en çok satan bilgisayar dergisi PCWORLD'de aralık ayından itibaren mobil programlama isminde bir yazı dizisine başladım. Aralık ayından itibaren Mobil Cihazların Devrimi ve Programlama konsepti altında hazırladığım yazı dizisini okuyabilirsiniz. Gerçekten çok kaliteli olan PCWORLD dergisinde yazmak benim için oldukça keyifli.

Konu Başlığım: Mobil Programlama - Windows Mobile işletim sistemleri üstünde programlamayı anlatan yeni yazı dizim.



Windows Mobile ile Direct3D Programlama

clock Ekim 5, 2009 19:45 by author Volkan Atasever

Bu yazımı CSharpnedir.Com sitesinden de okuyabilirsiniz.   

Link: http://csharpnedir.com/articles/read/?id=991&filter=unedited&title=Windows%20Mobile%20ile%20Direct3D%20Programlama

 

Bu yazımda sizlere mobil dünyanın standart 2d boyutundan 3. Boyuta geçmenin yöntemlerinden yani Direct3D’den bahsedip küçük bir uygulamayla bir direct3d penceresini çalıştıracağız. Bu uygulamamızda ki amaç mobil cihaz üstünde nasıl Direct3D programlama yapabileceğimizi incelemek. Küçük bir demo ile de pekiştireceğimiz bu dünya, geleceğin en temel teknolojisini yani windows mobile cihazlarımızda 3 boyutlu bir dünyaya merhaba dememizi sağlamaktadır. Klasik görünümünden sıyrılıp tam bir bilgisayar olduğunu anlamımıza yarayacak. Şu aşamada XNA’in desteklediği platformlar üstünde windows mobile olmadığı için bu cihazlarda direct3d kullanmaktayız.

 Öncelikle temel olarak hangi referanslara ihtiyacımız olduğunu burada belirtmek isterim;

using Microsoft.WindowsMobile.DirectX;
using Microsoft.WindowsMobile.DirectX.Direct3D;
using System.Runtime.InteropServices;
using System.Drawing;
using System.Windows.Forms;

Klasik referanslarımız olan DirectX argümanlarına WindowsMobile isim uzayı altından ulaşmaktayız. Bunun için DirectX’in ve SDK’larının bilgisayarınızda kurulu olması gerekmektedir. Using cümleciğiyle ihtiyacımız olan namespaceleri tanımlamış bulunmaktayız. Ardından Direct3D aygıtı için değişken tanımlamamız gereklidir.        

Bunun içinde;

Device device = null;

şeklinde aygıtımızı tanımladık. Artık 3 boyutlu dünyaya mobil cihazımızda merhaba demiş bulunuyoruz. Bunun için ilk aygıtımızın (Device) ayarlamalarıyla mobil cihaza uygun hale getirmek için gerekli kod parametrelerini vermek istiyorum. Bu sayede programlamaya hazır bir Direct3D penceresi karşımıza gelecektir. Kullanmamız gereken diğer namespace’ler;

using System;
using System.Drawing;
using System.Windows.Forms;

ardından ana sınıfımız ve kurucu metodumuz;

// Uygulamanın ana sınıfı
public class DeviceYarat : Form
{

      // Uygulamamızın global değişkeni bundan sonra aygıt diye anacağız
     Device device = null;

     public DeviceYarat()
     {
           // başlığı düzenle
           this.Text = "D3D dünyasına hoşgeldin";
           this.MinimizeBox = false;
     }
}

         Penceremizin üstünde D3D dünyasına hoşgeldin yazacaktır. Bu uygulama Direct3D programlamanın iskeletini içermektedir. Aşağıdaki metottaki presentparameters sınıfı aygıt oluşturulurken gerekli olan bazı parametreleri içinde bulundurmaktadır. InitializeGraphics metodunda ise; presentParams.Windowed = true ile uygulamanın bir pencereye sahip olacağını söylemektedir.

       public bool InitializeGraphics()
       {
            try
           {
                    PresentParameters presentParams = new PresentParameters();
                    
presentParams.Windowed = true;
                    presentParams.SwapEffect = SwapEffect.Discard;


                   device = new Device(0, DeviceType.Default, this,
                   CreateFlags.None, presentParams);
            }
           catch (DirectXException)
           {  
                   return false; 
           }
            return true;
       }

           Aygıt dediğimiz device sınıfı ise burada canlanacak ve aldığı parametrelerin anlamları ise şöyledir; İlk 0 olan parametre System.Int32 türünden bir değer oluğ D3D uygulamadaki adaptörlerin sıra numarasıdır, varsayılan parametre ise 0’dır.

İkinci parametre olan devicetype ise aşağıdaki değerlerden birini alabilmektedir;

DeviceType.Hardware
DeviceType.Reference
DeviceType.Software

           Biz burada default olanını seçtik. Diğer parametre ise görüntüyü gösterebileceğimiz pencere olarak o anki çalışan pencereyi seçmek için this anahtar kelimesini kullandık. CreateFlags ise uygulamada kullanılacak olan özellikler kümesini kendinde barındırmaktadır. Yine belli bir değer seçmemize rağmen brada seçebileceğimiz bayrakları belirtelim;      

CreateFlags.AdapterroupDevice
CreateFlags.DisableDriverMAnagement
CreateFlags.MixedVertexProcessing
CreateFlags.HardwareVertexProcessing
CreateFlags.SoftwareVertexProcessing
CreateFlags.PureDevice
CreateFlags.Mutithreaded

Örnek olarak CreateFlags.HardwareVertexProcessing; tüm bağlantı noktalarının donanımda işleyeceğini söylemektedir. Son parametre ise PresentParameters sınıfından türettiğimiz ve yukarıda anlattığım özellikleri aygıta kazandırır.


private void Render()
{
    if (device != null) 
    {
        device.Clear(ClearFlags.Target, System.Drawing.Color.Blue,
        1.0f, 0);
        device.BeginScene();

        device.EndScene();
        device.Present();
    }
}

           Aygıtımızı ayarladıktan sonra sıra render işlemlerine geldi. Render metodumuzda öncelikle render işlermelerine başamadan aygıtımızı ve önbelleğimizi(buffer) temizliyoruz bunun içinde Clear metodunu kullanırken bazı parametreler vermekteyiz. Bunlar; ClearFlags.Target yani belirli bir hedefe göre temizlerken ikinci parametre ise temizledikten sonra mobil cihazımızın ekranının alacağı renktir. Üçüncü parametre derinlik tamponunun değeridir. 1.0f ile herşeyi sıfırlamış oluyoruz. Ardından render işlemine başlamak için BeginScene metodunu kullanıyoruz bu sayede aygıtın çizime hazır olduğunu belirtmekteyiz. Her BeginScene yaptığımızda EndScene’de kullanmalıyız çünkü endscene yapmadan bir daha beginscene metodunu çağıramayız. Fakat bu çağrılar ekranımızı güncellememizi sağlamaz bunun için ekranı güncellemek için ise present metodunu kullanmaktayız.


Diğer olaylarımıza bakmak istersek;

protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
        this.Render();

        this.Invalidate(); 
}

protected override void OnPaintBackground(
System.Windows.Forms.PaintEventArgs e)
{
}


Bu sayede çıkış tuşuna basıldığında programdan çıkılacaktır.

protected override void OnKeyPress(
System.Windows.Forms.KeyPressEventArgs e)
{
        if ((int)(byte)e.KeyChar == (int)System.Windows.Forms.Keys.Escape)
        this.Close();
}


Main metodumuz;

static void Main() 
{
        DeviceYarat frm = new DeviceYarat();

        if (!frm.InitializeGraphics())
        {
                MessageBox.Show("Direct3D başlatılamadı. " + 
                "programdan çıkıldı.");
                return;
        }

        Application.Run(frm);
}

           Gördüğünüz gibi Main metodumuzda ana sınıfımızdan bir nesne yaratarak küçük bir if deyimi ile yazdığımız InitializeGraphics() metodumuzun geri dönüş değerini kontrol edip uygulamamızı çalıştırıyoruz.


Çıktımız; 
 



Windows Mobile ve IrDA

clock Ekim 2, 2009 09:20 by author Volkan Atasever

 

InfraredData Association (ing.) kısa adıyla IrDA, bir çeşit kızılötesiiletişim teknolojisidir. Windows Mobile kullanan cihazlar ise çoğunlukla birIrDA donanımıyla birlikte gelmektedir. Bu teknoloji bluetooth ve usbbağlantılarına göre ilkel bir bağlantı noktası olmakla beraber hala büyükolmayan bilgi ve kısa mesafeler için kullanışlılığını korumaktadır. Biruygulama yapmak istersek aşağıdaki gibi bir form oluşturalım. Bu form birdatagrid ve bir butondan oluşmaktadır.

ArdındanIrDA için gerekli olan referansımızı ekleyelim

 

System.Net.Irdareferansımızı projeye ekledikten sonra ise butonumuzun koduna;

        privatevoid button1_Click(objectsender, EventArgs e)

        {

            IrDAClientic = new IrDAClient();

            IrDADeviceInfo[]devices = ic.DiscoverDevices(6);

            dataGrid1.DataSource = devices;

        }

Satırlarınıyazalım artık IrDA kullanan cihazlar dataGrid’de listelenecektir. 



Volkan Atasever Kimdir ?

E-Mail: volkan(et)volkanatasever.com

Genel Müdür/S4G 
Bilgisayar Mühendisi

mühendislik, edebiyat, retro computer, yazılım, şiir, nümismatik, bilişim, podcast ve bir çok kategoride yazılarım...

Yazılım Kitaplarım

   

Şiir Kitaplarım

Dergi Yazılarım

 

Sosyal Ağlarım

 

 

 

 

Retro Bilgisayar Dergimiz

Türkçe Retro Bilgisayar dergimiz haziran 2016'da ilk sayısını çıkardı. ilk sayı yeni bir internet sitesinden tekrar yayınlanacaktır. Retro camiası tüm dünyada oldukça eğlenceli bir camia. Sizde katkıda bulunmak isterseniz bana mail atmanız yeterli. Dergimiz PDF formatında ve tamamen ücretsizdir.

Yasal Bilgi

Sitedeki yazıları,kodlar ve diğer materyaller Volkan Atasever'e aittir. Yazarı ve siteyi kaynak göstererek yazıları paylaşabilirsiniz.  Copyright(c)2004-2017

Sign In

Yazılım