Bilgisayarım Dururken Kime Lazım Kumanda!

Print Friendly

   Bir süredir evdeki uydu alıcısı, dvd player v.b. cihazları tek bir kutuda toplama planları yapıyorum, Home Theater PC (nam-ı değer HTPC). Veee dün bu planımın ilk adımını attım… Belki küçük; ama önemli bir adım, siparişini verdiğim USB-UIRT (USB Universal Infrared Receiver/Transmitter, USB Evrensel KızılÖtesi Alıcı/Verici) elime ulaştı.

USB-UIRT (USB Universal Infrared Receiver/Transmitter, USB Evrensel KızılÖtesi Alıcı/Verici)

   Bu şekilde evdeki mevcut kumandalarımı kullanarak HTPC’ye (ya da IR alıcıyı bağlayacağım herhangi bir pc’ye) komut gönderebileceğim, benzer şekilde IR verici özelliği sayesinde de IR üzerinden kontrol edilebilen cihazlarımı kumanda edebileceğim.

   Windows 7 x64 yüklü bir sistem üzerine bağladığım USB-UIRT cihazıma ait sürücüleri ürünün destek sitesinden indirip kurduktan sonra sıra ilk testlere geldi. Şanslıyım ki üreticiler C# üzerinden uygulama geliştirilebilmesi adına bir kütüphane ve örnek kod paylaşacak kadar naziklerdi. Kütüphane ile ilgili ilk sıkıntı biraz eski olması kaynaklı olarak derlenmek istendiğinde UsbUirtManagedWrapper projesi içerisindeki Controller.cs dosyası 894. satırının derlemeyi engellemesiydi;

USBUIRT_HandleWarning

 

   Bu sıkıntıyı hata veren satırı aşağıdaki gibi değiştirerek kolaylıkla aşabildim;

null == evt ? IntPtr.Zero : evt.SafeWaitHandle.DangerousGetHandle(),

   Bu işlem ardında kodunuz derlenebilir olacaktır; fakat rehavete kapılmak yok, bu tüm dertlerin bittiği anlamına gelmiyor. Uygulamayı çalıştırmayı denediğinizde ise aşağıdaki hata ile karşılaşacaksınız;

Proje varsayılan ayarlarla derlendiğinde uygulama hata vererek çalışmayacaktır

 

UUIRTDRV Example Program…

===========================

An exception was thrown: System.TypeInitializationException: ‘UsbUirt.Controller’ tür başlatıcısı özel durum döndürdü. —> System.ApplicationException: Unable to read UsbUirt driver version —> System.BadImageFormatException: Geçersiz biçimdeki bir program yüklenmek istendi. (HRESULT özel durum döndürdü: 0x8007000B)

   konum: UsbUirt.Controller.UUIRTGetDrvInfo(UInt32& drvVersion)

   konum: UsbUirt.Controller..cctor() D:\Fatih\Downloads\usbuirt\api_example_cod

e\UsbUirt_rev1\UsbUirt\UsbUirt Managed Wrapper\Controller.cs içinde: satır 47

   — İç özel durum yığını izlemesinin sonu —

   konum: UsbUirt.Controller..cctor() D:\Fatih\Downloads\usbuirt\api_example_cod

e\UsbUirt_rev1\UsbUirt\UsbUirt Managed Wrapper\Controller.cs içinde: satır 56

   — İç özel durum yığını izlemesinin sonu —

   konum: UsbUirt.Controller.get_DriverVersion()

   konum: TestApp.Class1.RunTestApp() D:\Fatih\Downloads\usbuirt\api_example_cod

e\UsbUirt_rev1\UsbUirt\TestApp\TestApp.cs içinde: satır 39    konum: TestApp.Class1.Main(String[] args) D:\Fatih\Downloads\usbuirt\api_example_code\UsbUirt_rev1\UsbUirt\TestApp\TestApp.cs içinde: satır 24

Press return to exit.

    Şanslıyım ki bu da çözümü kolay bir problem (tabi nedenini biliyorsanız); uygulamayı derlediğiniz platformu Any CPU’dan x86’ya çekerek yeniden derlemeniz yeterli olacaktır.

UUIRTDRV

   Uygulamayı çalıştırıp bir kumandadan tuşlara basarak veri göndermeyi denediğimde yukarıdaki ekran görüntüsünde de görüldüğü şekilde cihaz tarafından alınan veri konsola yazdırılmakta.

  Bir sonraki adımda ise bilgisayarımız üzerinden göndermek istediğiniz verilere ait kodları bu yöntemle tespit ederek bir uygulama geliştirip göndermek olacak. Kodları bulabilmek için cihazı öğrenme modunda çalıştırarak bir süre aynı sinyali göndermemiz yeterli olacaktır. Bir kaç saniye süren bu basit işlem sonrasında  yukarıdaki uygulama bize ihtiyacımız olan bilgiyi sunacaktır. Usb-Uirt API’sini biraz dolaşarak bu işlemlerin nasıl yapılabildiğini keşfettikten sonra hem daha görsel bir arayüz sunabilmek hem de öğrenilen IR kodları için C# kodları üretebilmek için kendime aşağıda ekran görüntüsünü bulabileceğiniz basit bir uygulama yaptım;

geliştirdiğim IR kod üretici uygulaması ana ekranı

   Bu uygulama sayesinde arka arkaya pek çok IR kodunu öğrenerek en sonunda da bu IR kodları için istediğim formatta C# kodu üretebiliyorum. IR kodlarını bulduktan sonrası ise daha da kolay. Örnek uygulama üzerinden ihtiyacım olan tüm kodlara ulaşarak aşağıda ekran görüntüsünü bulabileceğiniz IR kumanda uygulamasını WPF ile geliştirdim.

17-11-2011 23-10-39

   İhtiyacı olan IR kodlarını bir xml dosyasından okuyan bu uygulama, aynı anda hem televizyonu hem de uydu alıcısını (ya da siz her neyi istiyorsanız) kumanda edebilmekte. Xml dosyasına sakladığım IR kodları bana uygulamayı yeniden derlemeye gerek olmaksızın farklı farklı cihazları destekleme şansı sunmakta.

    Yakın zamanda bir videosunu çekerek Enterprisecoding video kanalında yayınlamayı düşündüğüm bu uygulama dışında usbsuirt cihazı ile size farklı ve güzel sürprizlerim de olacak.

Info

   Güncelleme, 19 Kasım 2011 : Enterprisecoding Video Kanalında yer alan bu makale hakkındaki görsel anlatımı aşağıda bulabilirsiniz.



Runtime
16:00

Related posts:

  1. Visual Studio Async CTP “Belgelerim” Hatası
  2. C# ile HTML Editörü Yapıyoruz
  3. Log4Net Günlüklerine Güzel Bir Arayüz
Twitter Digg Delicious Stumbleupon Technorati Facebook Email

About Fatih Boy

İzmir'li bir bilgisayar mühendisi olan Fatih, özel bir firmada Proje Müdürü olarak çalışmaktadır. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# konusundan Microsoft tarafından iki yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz.
vCard - Twitter - Facebook - Google+

3 Responses to “Bilgisayarım Dururken Kime Lazım Kumanda!”

  1. Çok güzel ve orjinal bir paylaşım olmuş teşekkürler… En kısa zamanda bende sipariş vereceğim cihazdan… Teşekkürler.

  2. Çok yararlı bir paylaşım teşekkür ederim, emeğinize sağlık. Bu tam da aradığım bir ürün gibi görünüyor. Acaba tüm kumanda protollerine uygun mu, her tür kumanda da çalışır mı? ve yolladıkları api kullanışlı mı yani kendimiz arayüz hazırlamadan kumanda tanıtıp kullanabilir miyiz, teşekkür ederim..

    • USB-Uirt cihazının iki farklı sürümü bulunuyor. Benim kullandığım “USB-UIRT w/additional 56KHz IR Sensor” daha geniş bir yelpazede kumanda tanıyabilmekte. Web sitesinden yazımım başında da görebileceğiniz test uygulamasını indirebilirsiniz; fakat bu konsol uygulaması sizin istediğiniz şekilde bir kullanım için uygun değil. Sizin gelen API’yi kullanarak bir uygulama geliştirmeniz gerekecektir.

Leave a Reply

 
QR Code Business Card