Bu site emekli olmuştur. Arşiv amaçlı olarak
BT AKADEMİ
sponsorluğunda yayın hayatına devam etmektedir.
Ana Sayfa
.net TV
Makaleler
Kaynak Kod
Haberler
Serbest Köşe
Canlı Köşe
Forum
C#nedir?
Ekibimiz
RSS
Mobil Prog.
YAZAR HAKKINDA
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ı
:
49388
Yorum Sayısı
:
7
yorum yaz
SİTE İÇİ ARAMA
Ü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.
C#nedir? hesabınız yok mu?
Üye olabilmek için
tıklayın
.
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.
Silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
Bende Yazmak İstiyorum
Blogroll
Turhal Temizer
Conda install environment.yml Package
23.11.2024
Turhal Temizer
Mac OS/X Removing CUDA
23.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak
23.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi
23.11.2024
Diğer Herşey
»
Makaleler RSS
»
Video Gönder
»
Makale Gönder
»
Serbest Köşeye Yazı Gönder
»
Yazar Başvurusu
»
C#nedir? Ekibinde Olmalıyım!
Sponsorlar
Ana Sayfa
/
Makaleler
/
Akın Öcal
/
Mobil Prog.
/
Masaüstü İskelet Bluetooth Yazılımı
Masaüstü İskelet Bluetooth Yazılımı
Favorilerime Ekle
Gönderiliyor lütfen bekleyin...
arkadaşıma gönder
Arkadaşınızın email adresi:
*
Mesajınız:
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 SDKyı 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 threadlerden yararlanacağız. Bununla beraber 32feetden 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 threadli 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 idlerinin 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
22
2020
teyfik aydın
/
üye hakkında
Web ten Bluetooth cihazlara erişim, örneğin Bluetooth yazıcıya veri gönderip yazdırmam gerekiyor yardımlarınızı bekliyorum tşk.ederim.
NİS
23
2012
sedat güzel
/
üye hakkında
faydasını görebilecem programa ama ındıremıyorum
EYL
8
2011
Buğra KOÇAŞ
/
üye hakkında
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
Hakan Kutluay
/
üye hakkında
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
Dizayn ve Kodlama
bt
akademi
. Tüm Hakları Saklıdır © Copyright 2002-2009 c#nedir?com
Makaleler
Serbest Köşe
Makale Gönder
.Net TV
Video Gönder
Canlı Köşe
Kaynak Kod
Forum
Haberler
Röportajlar
Anketler
C# Nedir?
İletişim
Site Haritası
RSS
Favorilere Ekle
Üyelik
Hesap Aktivasyon
Ekibimiz
Ekibe Katıl