C#nedir?com
 
YAZAR HAKKINDA
Akın Öcal
Akın Öcal
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
1 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: bluetooth butonu cihazin cihazlarin kullanilan noktada oldugu private programlama seviyesinde sinifi sistem string thread yazida Mobil Prog. Akın Öcal
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : Mobil Prog.
Yayınlanma Tarihi : 18.7.2006
Okunma Sayısı : 34826
Yorum Sayısı : 6     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer 'in Blogu
ChatBot UI Sample 21.10.2017
Turhal Temizer 'in Blogu
C# – IRR Function 21.10.2017
Burak Selim Şenyurt
Asp.Net Core'da Bir WebSocket Macerası 21.10.2017
Burak Selim Şenyurt
.NET Core 2.0 ile Basit Bir Web API Geliştirmek 21.10.2017
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Masaüstü İskelet Bluetooth Yazılımı
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Mobil cihaz yazılımlarında bluetooth programlama çok bilinen bir olaydır. .Net Compact Framework, Symbian API ya da J2ME içinden bu sınıflara ulaşılabilirsiniz. Ben ise bu yazıda masaüstünden bluetooth programlamayı göstereceğim. Konsept ağ programlama olduğu için söz konusu kütüphaneler Windows’un user-mode daki API’sı olan Win32API’nin Winsock bölümünün altında. Son sürüm Windows Platform SDK’yı indirdiginiz takdirde gerekli win32api kütüphane uzantıları geliştirmeye hazır olarak sistem ekleniyor. Fakat bu yazımda bluetooth programalaya C/C++ ile sistem programlama seviyesinde değil de .Net seviyesinde bazı hazır kütüphaneleri kullanarak gösteceğim. Bundan sonraki yazılarımda da bu yazıda kullanılan hazır .net bileşenlerinin nasıl yazıldığını uygulamalı olarak göstereceğim. Benim bu yazıda kullancağım component Device Application Developer MVP ünvanına sahip Peter Foot’un kurduğu www.32feet.net sitesinden indirebileceğiniz gene Peter Foot’un yazdığı ücretsiz bir kütüphane. Bluetooth haricinde IrDA desteği de mevcut. Dilerseniz şimdi uygulamaya geçelim.

1. Kullanılan İsim Alanları :

Bazı operasyonlarda arayüzü kitlememek için thread’lerden yararlanacağız. Bununla beraber 32feet’den indirdiğimiz
Componentlarla gelen isimalanların programa dahil edilmiş hali aşağıdaki gibidir.

using InTheHand.IO;
using  InTheHand.Net;
using  InTheHand.Net.Sockets;
using  InTheHand.Net.Bluetooth;
using  System.Threading ;
2. Global Değişkenler :

InTheHand.Net.BluetoothAddress[] adres_dizisi = new BluetoothAddress [1000];
private Thread arama_kanali ;
private Thread gonderme_kanali ;
InTheHand.Net.BluetoothAddress sınıfı componet ile beraber gelen bizim için bir bluetooth destekleyen cihazın bluetooth protokolü adresini sembolize eden ve saklayan bir sınıftır. Arama operasyonu sonucu bulunan cihazların adreslerini bu dizide tutacağız. Arama_Kanali ve Gonderme_Kanali ise cihaz arama ve belli bir cihaza dosya gönderme sırasında işletilecek fonksiyonların yerleştirileceği threadlerdir.

3. Ağ Tarama :

Asağıdaki fonksiyonlar herhangibir arayüz ile entegre edilebilir :

private void button_cihaz_tara ()
{
       // Arama butonu pasif hale getirilebilir ….
       this.arama_kanali = new Thread (new ThreadStart(arama));
       this.arama_kanali.Start();
}

private void arama ()
{
       // Nesnelerin gösterileceği listbox,treeview gibi yapılar burada boşaltılabilir.
       InTheHand.Net.Sockets.BluetoothClient bc = new InTheHand.Net.Sockets.BluetoothClient ();
       InTheHand.Net.Sockets.BluetoothDeviceInfo[] gecici_dizi = bc.DiscoverDevices();
       for(int i = 0 ; i<gecici_dizi.Length;i++)
       {

              this.adres_dizisi[i] = gecici_dizi[i].DeviceAddress;
              // gecici_dizi[i].DeviceName ifadesi iterasyondaki cihazın adını
              // string olarak geri döndürür. Bu noktada cihazların listelendiği
              // listbox vb.. yapılara Item eklemesi yapılabilir.

}
              // Arayüzdeki arama butonu tekrar aktifleştirilip kullancıya aramanı bittiğine dair bir
              // mesaj gösterilebilir.


InTheHand.Net.Sockets.BluetoothClient ile bir nevi ağ tarayıcısı için bir istemci oluşturuyoruz. Daha sonra nTheHand.Net.Sockets.BluetoothDeviceInfo sınıfı türünden nesneleri tutan bir geçiçi dizi bildiriyoruz. Böylelikle cihaz bilgilerine bu sınıf sayesinde ulaşacağız. InTheHand.Net.Sockets. sınıfının DiscoverDevices( ) metodu ile de aramaya başlıyoruz ve geri dönüş değeri olarak bir diziyi “gecici_dizi”ye atıyoruz. Tarama bittikten sonra tek yapmamız gereken bir iterasyon ile elde edilen bilgilerin amaca yönelik işlenmesi. InTheHand.Net.Sockets.BluetoothDeviceInfo sınıfının DeviceAddress özelliği ile cihazın ağ adresini alabiliriz.

4. Dosya Atma :

Bu iş için “OBEX” yani Object Exchange protokolü kullanılmaktadır. Bileşenimizde bu işleri bizim için halleden sınıflar mevcut. Arayüzü kitlememek için gene thread’li bir yapı kullanılabilir :

private void button_dosyaat ()
{
       this.gonderme_kanali = new Thread ( new ThreadStart(obex));
       // Arayüzdeki dosya gönderme butonu bu noktada pasifleştirilebilir.
       this.gonderme_kanali.Start();
} private void obex ()
{
       int index ;

       // Index değikenine global cihaz dizisinin hangi indisli cihazına dosya atılacağı bildirilmelidir.
       // listbox_cihazlar adında bir listbox ımz olduğunu varsayalım

       index = this.listBox_cihazlar.SelectedIndex ;
       InTheHand.Net.BluetoothAddress adres = this.adres_dizisi[index];
       // Dosya olarak programla aynı klasörde deneme.txt dosyasını seçelim. Burada dosya açma diyalogu kullanılır ise daha şık duracaktır.
       System.Uri uri = new Uri("obex://" + adres.ToString() + "/" + "deneme.txt");
       ObexWebRequest request = new ObexWebRequest(uri);
       request.ReadFile("deneme.txt");
       ObexWebResponse response = (ObexWebResponse)request.GetResponse();
       response.Close();
       // Arayüzdeki dosya gönderme butonu bu noktada aktifleştirilebilir.
}


“Uniform Resource Identifier” yani yukardaki Uri sınıfını dosya transferinde kullanacağız. String oluşturmada web üstünde nasıl ”http:/” şeklinde protokol belirten bir tanımlama yapılıyor ise burarad “obex:/” şeklinde bir tanımlama söz konusu. Daha önce soket programlama hatta .net altında WebClient sınıfı ile uğraşmış olanlar için yukaridaki kodlar hiç yabancı gelmeyecektir.

5. Cihaz Tanıma :

MAC adreslerinin belli kısımlara cihaz modellerini belirtmektedir

string id = adres_dizisi[index].ToString().Substring(0,6);
if(id == "00:E0:" )
    MessageBox.Show(“Nokia 6670”) ;
Bazı cihazların id’lerinin olduğu bir text dosyasını uygulama dosyaları arasında bulabilirsiniz.



Bu görüntü bir taramadan sonra "MAC Göster" butonuna tıklandıktan sonra elde edilmiştir.

Örnek uygulamayı indirmek için tıklayınız.

Makale:
Masaüstü İskelet Bluetooth Yazılımı Mobil Programlama Akın Öcal
  • Yazılan Yorumlar
  • Yorum Yaz
NİS
23
2012
faydasını görebilecem programa ama ındıremıyorum
EYL
8
2011
Merhaba öncelikle paylaşım için teşekkür ederim. Ama bir problem var o da yeni telefonlarda(bluetooth 2.0 olarnlarda) dosya atılamıyor.Onun da nedeni "int the hand" kütüphanesinin eski olmasından olabilr.Çünkü "cihazlar_ıd" metin belgesindeki ismi yazan cihazların eski telefonlar olması. Yeni sürüm in the hand bulamadım bir de yeni telefonların mac adreslerini aradım,cihazlar ıd 'ye elle yazmak için ama o da olmadı. Ne öneririsiniz.??????????????
TEM
22
2006
Eline sağlık Akın, bluetooth ile programlamaya başlangıç için faydalı bir çalışma olmuş..
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor