Facebook RSS Feed
 

.NET Micro Framework: USB Klavye Kullanımı

-.NET MF ile geliştirdiğimiz uygulamalara USB klavye bağlayarak kullanıcı girişini kolaylaştırabiliyoruz. Yapmamız gereken mikrodenetleyiciye USB klavye bağlandığında aktif olacak şekilde tuş eventleri oluşturmak. Sonrasında ise hangi tuşa basıldığını ve serbest bırakıldığını ilgili eventlerden yakalayarak uygulamamızda kullanıma hazır hale getireceğiz.

Öngereksinimler

Uygulamayı çalıştıracağınız mikrodenetleyicinin .NET Micro Framework 4.0 yada 4.1 desteklemesi ve USB Host özelliğinin bulunması gerekiyor. Örnek kodları GHI Electronics'in USB Host destekleyen cihazlarında çalıştırabilirsiniz. (USBizi 144, EMX, Embedded Master ve FEZ).

Uygulama Kodları

Visual Studio 2010 ile yeni bir .NET Micro Framework 4.0 Console Application oluşturduktan sonra, proje referanslarına GHIElectronics.NETMF.USBHost.dll, GHIElectronics.NETMF.System.dll ve GHIElectronics.NETMF.Hardware.USBizi.dll kütüpanelerini ekleyelim. (Mikrodenetleyiciniz .NET MF 4.0 ile çalışıyorsa, proje özelliklerinden Target Framework ayarını 4.0 olarak değiştirin). Sonrasında Program.cs dosyasına aşağıda açıkladığım kodları yazalım.

using System;
using System.Threading;
using Microsoft.SPOT;
using GHIElectronics.NETMF.USBHost;
 
namespace MFUSBKeyboard
{
    public class Program
    {
        static USBH_Keyboard keyboard;
 
        public static void Main()
        {
            //USB Cihaz bağlandığında fırlayacak eventi oluşturalım:
            USBHostController.DeviceConnectedEvent 
                += new USBH_DeviceConnectionEventHandler(USBHostController_DeviceConnectedEvent);
 
            //Main Thread'i uyutalım:
            Thread.Sleep(Timeout.Infinite);
        }
 
        //USB Cihaz bağlandığında fırlayacak event:
        static void USBHostController_DeviceConnectedEvent(USBH_Device device)
        {
            //Bağlanan cihaz klavyeyse:
            if (device.TYPE == USBH_DeviceType.Keyboard)
            {
                //Immediate Window'a klavyenin algılandığını yazdıralım:
                Debug.Print("Klavye algılandı.");
 
                //Klavye cihazını oluşturalım:
                keyboard = new USBH_Keyboard(device);
 
                //Klavye taranma thread'inin önceliğini belirleyelim:
                keyboard.InternalThreadPriority = ThreadPriority.Normal;
                //Thread önceliğini Highest olarak ayarlarsanız, klavyenizin tuşları daha sık
                //taranacak, fakat uygulamanızdaki diğer thread'lere ayrılan işlemci zamanı
                //azalacaktır. Lowest ayarı ise klavyeyi daha az sıklıkla tarayıp diğer
                //thread'lere ayrılan işlemci zamanını arttıracaktır.
 
                //Klavyede bir tuşa basıldığında fırlayacak event:
                keyboard.CharDown += new USBH_KeyboardEventHandler(keyboard_CharDown);
 
                //Basılan tuş serbest bırakıldığında fırlayacak event:
                keyboard.CharUp += new USBH_KeyboardEventHandler(keyboard_CharUp);
 
                //Klavye cihazı söküldüğünde fırlayacak event:
                keyboard.Disconnected += new USBH_KeyboardEventHandler(keyboard_Disconnected);
            }
        }
 
        //Tuşa basıldığında, ilgili tuşu ACSII'ye çevirecek event:
        static void keyboard_CharDown(USBH_Keyboard sender, USBH_KeyboardEventArgs args)
        {
            Debug.Print(args.KeyAscii.ToString());
        }
 
        //Serbest bırakılan tuşu ASCII olarak bildirecek event:
        static void keyboard_CharUp(USBH_Keyboard sender, USBH_KeyboardEventArgs args)
        {
            Debug.Print(args.KeyAscii.ToString());
        }
 
        //Klavye cihazı söküldüğünde fırlayacak event:
        static void keyboard_Disconnected(USBH_Keyboard sender, USBH_KeyboardEventArgs args)
        {
            Debug.Print("Klavye söküldü.");
        }
    }
}        

Debug Zamanı

Uygulamayı çalıştırıp mikrodenetleyicinizin USB portuna klavye bağladığınızda, Visual Studio Immediate Window'da aşağıdaki gibi değerler görünecektir.

Klavye algılandı.
N
E
T
M
F
4
Klavye söküldü.




 
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