Stan na 3 października 2014r. | |
Nazwa: | Bluetooth SPP Tools PRO |
Autor: | Jerry.Li |
Cena: | Bezpłatna |
System: | Android 4.0.3 i nowszy |
Dostępna jest także starsza wersja tego programu:
Stan na 3 października 2014r. | |
Nazwa: | Bluetooth SPP |
Autor: | Jerry.Li |
Cena: | Bezpłatna |
System: | Android 2.0 – 4.2 |
Bluetooth SPP Tools PRO to kolejna i jedna z najlepszych (do 2014r.) aplikacji terminala Bluetooth dla systemu Android. Pomimo, że dopisek PRO, kojarzony jest raczej z wersjami płatnymi, w momencie pisania tego artykułu aplikacja ta była aplikacją darmową.
Dla starszych wersji Androida (do 4.2 włącznie) jest dostępna także starsza wersja tej aplikacji Bluetooth SPP. Jest ona bardzo zbliżona w zakresie funkcjonalności (przynajmniej na razie). Poniżej omawiam jednak wersję PRO dostępnej w dniu pisania artykułu (październik 2014r.).
Do testowania aplikacji i sprawdzenia komunikacji z modułem HC-05 możesz użyć wybrany przykład:
- pętli opisanej w artykule: HC-05 (Bluetooth) - Test komunikacji z komputerem
- koprocesora na ATmega8 opisanym w artykule: HC-05 (Bluetooth) - Komunikacja z mikrokontrolerem na przykładzie ATmega8.
Ikona pod, którą kryje się aplikacja:
Po uruchomieniu dokonywane jest skanowanie kanałów Bluetooth w celu znalezienia urządzeń:
W dowolnym momencie można przerwać skanowanie wskazując wykryte urządzenie. Po jego wskazaniu otrzymujemy informacje szczegółowe:
Po zainicjowaniu połączenia przyciskiem Connect, po chwili otrzymujemy informacje o poprawnym połączeniu oraz prośbę o wskazanie jednego z trzech trybów pracy terminala:
Do wyboru mamy więc:
- Byte stream mode
- Keyboard mode
- CMD line mode
Byte stream mode
To pierwszy tryb pracy terminala pozwalający na wysyłanie ciągu bajtów wpisanych z klawiatury.
Dla nas najistotniejsze jest to, że oprócz trybu ASCII możemy używać trybu HEX (byte wpisany za pomocą dwóch znaków liczby heksadecymalnej). Aby włączyć ten tryb przechodzimy do Menu i klikamy Set IO mode:
po czym wybieramy tryb ASCII lub HEX osobno dla danych wejściowych i wyjściowych:
Wszystkie cztery kombinacje są możliwe do ustawienia. Ja ustawiłem HEX przy wysyłaniu, a ASCII przy odbieraniu danych, ponieważ tak przygotowany jest przykład (patrz początek artykułu), który używam do testowania tej aplikacji.
Mam już przygotowaną aplikację do pracy z modułem Bluetooth (w moim przypadku HC-05), naciskam więc przycisk RESET w układzie z mikrokontrolerem i otrzymuję od niego dane pokazujące jaki wzór będzie obliczał nasz koprocesor:
Wyślemy teraz liczbę dziesiętną 10, czyli 0a w systemie heksadecymalnym:
i natychmiast otrzymamy od ATmega8 wynik obliczeń równania:
Zauważ, że wpisana liczba 0a pozostała na swoim miejscu w polu do wysyłki, nie tak jak ma to miejsce w innych aplikacjach, gdzie pole to od razu jest czyszczone. Pozwala to na wielokrotne wysyłanie tej liczby poprzez naciśnięcie przycisku wysyłania:
Czasami mogą się przydać dodatkowe informacje o ilości wysłanych (Txd) i odebranych (Rxd) danych, a także o czasie pracy terminala. Dane te są publikowane w górnej części okienka aplikacji:
Po zamknięciu klawiatury możemy oczywiście poszerzyć pole z danymi odbieranymi:
Czasami mamy potrzebę zapisania odebranych danych do pliku co można zrobić używając Menu, a w nim Save2File, po czym otrzymujemy komunikat, gdzie zapisano plik:
Po otworzeniu pliku:
Waiting to receive…y = 0.3187x^2 + 2x - 7
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
44.869999
Keyboard mode
To drugi z trybów pracy aplikacji:
umożliwia zdefiniowanie dwunastu gotowych danych, które mają być wysłane do sparowanego ze smartfonem urządzenia po kliknięciu w wybrany przycisk:
Aby zdefiniować wybrany przycisk należy kliknąć Menu i wybrać opcję Buttons set:
Następnie klikamy wybrany przycisk:
i pojawia się okienko z domyślnym ustawieniem oraz opcjami do ustawienia:
Możemy więc ustawić według kolejności:
- napis na przycisku,
- wartość (wartości) wysłaną po naciśnięciu przycisku,
- wartość (wartości) wysyłaną cyklicznie przy dłuższym trzymaniu naciśniętego przycisku,
- wartość (wartości) wysłaną po puszczeniu przycisku.
Ustawiłem przykładowe:
a czynność tę należy oczywiście zakończyć klikając OK, co zakończy proces ustawiania wybranego przycisku, ale nie zakończy jeszcze procesu ustawiania. Możesz więc definiować kolejne przyciski lub zakończyć klikając Menu i wybierając Button set complete:
Od tego momentu mamy zdefiniowany przycisk:
Wartości wysyłane można ustawiać nie tylko jako pojedyncze bajty. Może to być kilka bajtów oddzielonych spacjami.
Na screenie powyżej zieloną strzałką zaznaczyłem istotną informację, jaką jest czas opóźnienia pomiędzy wysyłaniem kolejnych znaków przy długim przytrzymaniu przycisku. Czas ten domyślnie jest ustawiony na 500ms, czyli 0,5 sekundy.
Sprawdźmy jak zadziała nasz terminal, gdy przytrzymam przycisk przez nieco ponad sekundę:
Jak widać otrzymaliśmy od koprocesora (ATmega8) cztery wyniki, a to oznacza, że wysłane zostały kolejno 4 bajty, czego potwierdzeniem jest licznik wysłanych bajtów zaznaczony strzałką zieloną.
Bajty różniły się wartością stąd wyniki także się różnią. Dwa środkowe są takie same ponieważ są to wyniki otrzymane w momencie przytrzymania przycisku przez ponad sekundę, a dla takiego przypadku zdefiniowałem wysyłanie bajtu o wartości 0b, co nastąpiło dwukrotnie.
Aby zmienić interwał czasowy pomiędzy wysyłaniem kolejnych danych ponownie klikamy Menu i wybieramy Set Long-press freq:
po czym ukazuje się nam okienko z możliwością podania odstępów czasowych w milisekundach:
Jak widać pojawiła się domyślna wartość 500ms, którą zmieniłem na 750ms klikając na koniec oczywiście OK. Od tego momentu opóźnienie wysyłania kolejnych bajtów podczas przytrzymania przycisku będzie dłuższe.
Kolejną opcją w Menu jest możliwość ustawienia obserwacji danych wysyłanych i wyniku. W tym celu należy kliknąć napis: Click show: Sent data area
Aby zobaczyć jak teraz działa terminal szybko kliknąłem przycisk testowy. Nie przytrzymałem go dłużej niż ustawione wcześniej 750ms, stąd wysłane zostały tylko dwa bajty, a koprocesor na ATmega8 odpowiedział dwoma wynikami:
Przy włączonym podglądzie danych wysłanych i odebranych ekran został podzielony na dwie części, a dane są pokazywane w jednej linii jeden po drugim osobno dla wysłanych i odebranych. Dane te oczywiście są zależne od siebie następująco:
czyli wysłanie 0a (przyciśnięcie przycisku) dało wynik 44.869999, a następnie wysłanie 0c (puszczenie przycisku) dało wynik 62.892799.
Ponieważ ekran mojego LG-E610 nie jest zbyt duży stąd ten tryb jest problematyczny do obserwacji danych. Można jednak przewijać wyniki w obu okienkach (wysyłania i odbioru danych):
Zapewne na większych ekranach tryb ten jest baaardzo pożyteczny.
Ostatnią istotną opcją dostępną w Menu dla tego trybu pracy terminala jest ustawianie jakie bajty mają (lub nie być) dodane na końcu danych wysyłanych z terminala:
domyślnie ustawione jest /r/n (czyli 0d 0a), ale można wybrać tylko /n, a nawet ustawić własne wybrierając opcję Other i wpisując bajty w polu Hex value of the end flag::
Po kliknięciu OK, opcja zostanie zmieniona.
CMD line mode
To trzeci i ostatni z trybów pracy aplikacji umożliwiający sprawną obserwację danych wysyłanych i odbieranych:
Tryb ten wita nas ekranem:
Na początku kliknąłem przycisk reset naszego układu testowego (koprocesora na ATmega8), który w odpowiedzi przesłał nam wzór, który będzie obliczał:
Zauważ, że na początku otrzymanych danych terminal dodał prefiks w postaci ciągu znaków Rxd> które oznaczają, że to co po nich następuje, to odebrane (na linii Rxd) znaki. Na końcu w nawiasie podana jest liczba odebranych bajtów, w tym wypadku 24 (22 znaki wzoru matematycznego i 2 znaki końca linii (0d i 0a), które ATmega także wysłała, choć ich nie widać w terminalu, a powodują przejście kursora na początek nowej linii.
Wyślijmy więc jakąś daną i niech to będzie standardowo liczba dziesięć, czyli 0a szesnastkowo:
W odpowiedzi od koprocesora (ATmega8) otrzymujemy wynik:
Zauważ, że na ekranie z prefiksem Txd> zapisane zostało to co wysłaliśmy do ATmega8.
Możemy oczywiście schować klawiaturę, był ekran był większy:
W tym trybie w menu są tylko opcje wcześniej już opisane:
Niestety w aktualnej wersji jak się wydaje występuje drobny błąd w liczeniu ilości wysłanych bajtów. Pomimo wysyłania jednego bajtu 0a, licznik zwiększa się o 4 bajty przy włączonym dodawaniu znaków końca linii (dwa znaki: /r/n). Podobnie przy wyłączonej opcji dodawania znaków (zero znaków dodatkowych) licznik zlicza do dwóch a powinien tylko 1 bajt:
Podsumowanie
Ta aplikacja jest najlepszą (na dzień pisania tego artykułu - październik 2014r.) aplikacją terminala Bluetooth w trybie SPP (port szeregowy). Mam nadzieję, że pomimo iż w nazwie aplikacji występuje groźnie brzmiące PRO, aplikacja nie będzie PRO w pełni tego słowa znaczeniu, czyli profesjonalną co z reguły jest równoznaczne z płatną :-)
Jeżeli znasz jeszcze lepszą aplikację niż powyższa, podaj jej nazwę lub link w komentarzu oraz wyjaśnij krótko, dlaczego tak uważasz. Z chęcią ją przetestuję i opiszę.
Odpowiadając na wasze pytanie o lepszy terminal niż ten, to na razie nie znalazłem lepszego. Ten terminal używam sporo i zawsze spełniał moje oczekiwania. Ma właściwie wszystko co niezbędne. Jeżeli są jakieś większe potrzeby podczas testowania urządzeń, to zastosować jednak należy komputerowe wersje terminali np. Realterm.
OdpowiedzUsuńCiekawe co jeszcze doda autor programu w przyszłości?