Visual C# – na niebiesko … – część 1

Visual C# – na niebiesko … – część 1
Razem głosów: 42 co stanowi: 93.81% całości.

Bluetooth

Żeby nie było mnie domówień oczywiście startujemy z Bluetooth bez dodatkowych programów czyli zatem będzie o wyszukiwaniu i łączeniu się z urządzeniami na BT z naszego programu bezpośrednio, a jak tego dokonać w Visual C# ?? to bardzo proste :)

500_500_productGfx_1ad0f3cc95306d0a8c85f300f85e2422
Spora ilość urządzeń udostępnia nam połączenie BT czy to telefony , tablety , a nawet nasze urządzenia za sprawą modułów BTM222 czy tez innych jak HC-05 i 06  i o ile niema większego kłopotu z używaniem ich jako Serial <> BT  po uprzednim sparowaniu  o tyle jest to czasem kłopotliwe, dlatego też pokarzę jak użyć BT  w naszej aplikacji  bez dodatkowych programów ….

Niemniej modułów jest wiele np układy nRF51822 z BT4.0 czy też jedne z moich ulubionych CC2540 Texasa,

ti-cc2540

(których jeszcze nie polutowałem :(, ) ale w tym arcie pobawimy się BTM222 który mam pod ręką pod postacią KAmodBTM222  z firmy KAMAMI od dłuższego już czasu:

kamodbtm222-modul-bluetooth-btm-222-zintegrowany-z-antena-stabilizatorem-i-konwerterem-poziomow-lgicznych

moduł ten jest bardzo wygodny podczas eksperymentów dzięki temu że pozwala na zasilanie napięciami 5 i 3,3V  (ma wbudowany stabilizator LDO) oraz posiada translator poziomów TTL 5<->3,3V.

Zaś drugim urządzeniem do testów będzie stary Samsung C3530 gdyż posiada tryb serial i to nas właśnie interesuje … :) Ponado będzie nam potrzeby BT w komputerze u mnie jest to USB Adapter EPOX BT-DG07a+ dysponujący zasięgiem 250m  i choć już nieco przestarzały i nie produkowany dalej się do wielu zastosowań nadaje i spisuje rewelacyjnie.

DG07A-EDR

Program napiszemy w  Visual Studio  C#  dla wygody , ale będziemy potrzebować zewnętrzną bibliotekę InTheHand.Net.Personal  z pakietu 32feet.NET  którą można zainstalować ze strony projektu: http://32feet.codeplex.com/.

Biblioteka pozwala w prosty sposób korzystać z urządzeń:

  • Bluetooth
  • IrDA

Oraz kilku innych co wyczytacie na stronie, wiec nie będę się w szczegóły NuGET’a wdawał i skupię się na samym aspekcie użytkowym :)

Zatem do dzieła :


 

 

ZAŁOŻENIA 


 

Nasz program jako że mamy wymagania spore musi spełniać założenia i wymogi, a będą to:

  1. Praca pod systemem Windows jako klient Bluetooth
  2. Wyszukiwanie urządzeń BT  w zasięgu
  3. Umożliwienie połączenia z innym klientem BT  z pominięciem połączenia z portem COM Bluetooth, korzystając z połączenia RFCOMM
  4. Automatyczne połączenie z klientem w przypadku utraty połączenia,
  5. Podanie nazwy urządzenia docelowego i jego MAC adresu
  6. Podanie kodu PIN dla urządzenia docelowego jęsli jest wymagany

Sporo tego no ale powinno się udać :)

Oczywiście parowanie urządzeń przebiegać będzie tradycyjnie , ale niejako w tle z poziomu naszej aplikacji.  Warto też na  tym etapie dodać iż  nasza biblioteka wymaga:

  • .NET Compact Framework v3.5 lub .NET Framework v3.5 for desktop
  • Obecności stosu Bluetooth  – zwykle BlueSoleil , lub dostarczany przez producenta Dongla BT czy uniwersalnego z  Microsoft’u ,  ( mój Epox pracuje na sterownikach i stosie Microsoftu)

Biblioteka do ręcznego dodania do pobrania:

pakiet:

32feet.NET 3.5.zip


 

  1.   Praca pod systemem Windows jako klient Bluetooth

 


Tu w sumie wiele nie napiszemy gdyż każdy wie jak stworzyć aplikację windows pod Visual Studio  czy to CLR czy to WPF  i każdy zrobi jak mu pasuje ja będę bazował na typie CLR opartym o formularze Windows, z prostego powodu … będzie szybciej można przekazać to co istotne w działaniu programu.

Dodajemy do referencji bibliotekę InTheHand.NET.Personal.dll  i w kodzie dopisujemy:

 

Przykładowa Aplikacja demonstracyjna na potrzeby tego arta wygląda następująco:

Przechwytywanie

Oczywiście będzie do pobrania w wersji skompilowanej do przeprowadzenia testów :)


 

    2.   Wyszukiwanie urządzeń BT  w zasięgu 


To podstawowa funkcja naszego programu , która pozwoli wyszukać wszystkie dostępne i znajdujące się fizycznie w zasięgu urządzenia Bluetooth, a co a tym idzie wykryta będzie nie tylko nazwa urządzenia ale też jego adres fizyczny MAC.

Przechwytywanie

Jak widać wyżej wykryto 2 urządzenia testowe czyli:

  • Samsung C3530
  • Serial Adapter (KaMODBTM222)

Nasze wyszukiwanie jest banalnie proste dzięki bibliotece 32feet  tu ograniczymy się do przycisku „Szukaj urządzeń”  oraz textboxa gdzie wyświetlimy nazwy i adresy MAC urządzeń. Zatem dodajemy do formularza obiekty: buton i textbox oraz backgroudWorkera, zdarzeniu OnClick butona „szukaj”  wpisujemy:

Kod jest prosty i zasadniczo niczym się nie wyróżnia , jak widać korzystamy z dodanego backgroundWorkera, oraz mamy dzięki try .. catch małe zabezpieczenie przed ponownym wciśnięciem przycisku Szukaj.

i piszemy funkcję naszego backgroundWorkera:

i wreszcie wywoływaną w BW funkcję SzukajUBT (szukaj urządzeń bluetooth) co wygląda tak:

Chyba jasne ?? ale to dalej nie koniec ….  gdyż musimy jeszcze wypisać nasze wykryte urządzenia i zakończyć pracę backgroudWorker….  co czynimy

Przyda nam się też na naszej formie Timer wiec dodajemy go do formularza i w zdarzeniu wpisujemy:

a w ustawieniach ustawiamy intervał na 1000

Przechwytywanie

Oczywiście musimy jeszcze zainicjować radio wiec wpisujemy w kodzie funkcję:

 

I tym sposobem z grubsza mamy załatwione wykrywanie urządzeń Bluetooth w naszej aplikacji. Poćwiczcie sobie wykrywanie urządzeń tymczasem i sprawdźcie swoje dongle BT,  bo następnym razem napiszemy procedurki połączenia z urządzeniami i parowania oraz podawanie i wysyłanie pinu do urządzenia jeśli będzie wymagany, oraz nauczymy się definiować urządzenia i automatyczne łączenie gdy znajdą się w zasięgu.

Cały kod wygląda następująco:

a tak to działa w praktyce :)

Przechwytywanie

— Klikamy Szukaj Urządzeń

Przechwytywanie2

— Jeśli klikniemy ponownie zobaczymy wiadomość :

Przechwytywanie3

i otrzymujemy listę dostępnych urządzeń:

Przechwytywanie4

niebawem sami będziecie pisać obsługę BT … w C# :) Tymczasem pobawcie się tym demkiem :)

Miłej zabawy…

Podziel się na:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay

7 myśli nt. „Visual C# – na niebiesko … – część 1

    • może czas zmienić antywirusa ??
      Poza plikiem opisywanym i biblioteką nic tam niema , program może się zachowywać podobnie
      bowiem dobiera się do urządzeń komputera na niskim poziomie, Niemniej AVG i Symantec nie zgłaszają żadnych problemów
      wiec sam kolega widzi.

  1. Super artykuł !!!
    Bardzo pomocny i dobrze opisany – rewelacja tego brakowało !!!

    • Dziękuję , staram się by zawsze coś ciekawego było, choć czasami maskuję myśli :) W drugiej części zajmiemy się połączeniem z BT w taki nieco inny sposób :) Ale a sami zobaczycie :)

  2. Sun .. rewelka, normalnie aż się chce programować. Może byś pomyślał o wydaniu książki o C Sharp ?? Czekam na kolejne części

  3. Majstersztyk. Super się czyta szkoda, że tak krótko. Kiedy będzie kolejna część ??

  4. Dziękuję Panowie.
    Kolejna cześć pojawi się w weekend , mam nadzieję że was zainteresuje
    i się spodoba … a później zajmiemy się fajnym układem CC2540 :)

Możliwość komentowania jest wyłączona.