O portach szeregowych słów kilka – cz. II

W tej sekcji postaram się przybliżyć szczegóły konfiguracji urządzeń bazujących na obsłudze portu szeregowego (lub SPP).
Mamy zatem sprzęt z interfejsem szeregowym. Zakładam, że portem, jaki dysponuje dane urządzenie jest Bluetooth lub RS-232.

W przypadku Bluetooth konfiguracja w systemie sprowadza się do odnalezienia przez komputer danego urządzenia oraz sparowania go (czyli powiązania z komputerem, zazwyczaj polegającego na wprowadzeniu kodu PIN dozabezpieczenia kanału komunikacji).

Zrzut ekranu często spotykanej aplikacji BlueSoleil, dostarczanej do przenośnych modułów Bluetooth

Zrzut ekranu często spotykanej aplikacji BlueSoleil, dostarczanej do przenośnych modułów Bluetooth

Mając sparowane urządzenie możemy otrzymać numer portu COM na jakim będzie odbywała się komunikacja (z reguły przypisanie numeru portu dzieje się automatycznie po pierwszym połączeniu). Czasem numer portu szeregowego trzeba przypisać ręcznie (np. w kontrolerach/palmtopach z systemami Windows CE\Mobile).

Dlaczego numer portu szeregowego a nie numer urządzenia Bluetooth?

Chodzi o uniwersalność. Kiedyś komputery obsługiwały porty COM i cała masa oprogramowania powstała z myślą o jego obsłudze. Dlatego też, jeśli sterownik modułu Bluetooth korzysta z tej utartej „ścieżki” – ułatwi to nam życie w trakcie zapewniania komunikacji na linii sprzęt-komputer-oprogramowanie. Oczywiście są też programy (z dostarczanymi sterownikami), które nie „bawią się” w przypisywanie portu COM – i wystarczy im adres Bluetooth danego urządzenia. W takich jednak przypadkach mamy mniejszą uniwersalność – bo jeśli sterownik nie będzie prawidłowo działał na naszym komputerze, wówczas możemy pożegnać się z komunikacją z oprogramowaniem.

A porty COM są zawsze dużo bardziej uniwersalne pod kątem współpracy i kompatybilności.

A co jeśli posiadamy sprzęt z interfejsem RS-232?

Wówczas podpinamy go do komputera bezpośrednio (jeśli komputer posiada odpowiedni port), albo przez przejściówkę RS-232-USB (czyli z jednej strony wpinamy przejściówkę do urządzenia, z drugiej do komputera przez USB) albo też przez przejściówkę RS232-Bluetooth .

O ile w przypadku interfejsu Bluetooth nie ma większej ilości parametrów określających komunikację (można np. regulować prędkość – ale z mojego doświadczenia z aplikacjami wynika, iż sterowniki i tak automatycznie dobiorą odpowiednią prędkość komuniakcji), o tyle dla RS-232 mamy szereg różnych opcji:

  • prędkość portu (ang. port speed), liczoną w bodach = bitach na sekundę (bps). Prędkości są ustandaryzowane i nie można ot tak wybrać sobie dowolnej prędkości. Zwykle są to: 4800/9600/19200/38400/57600/115200 bps). Najczęściej spotykaną prędkością jest 9600 bps i to tę prędkość jest ustawiona domyślnie dla wielu urządzeń
  • ilość bitów danych (ang. data bits) – liczoną w bitach. Podobnie jak w przypadku prędkości, standaryzacja tutaj również zrobiła swoje. Do wyboru mamy 5/6/7/8 bitów (najczęstsza kombinacja to 7 lub 8). 8 bitów jest wartością najczęściej spotykaną i wykorzystywaną
  • ilość bitów stopu (ang. stop bits) – również liczoną w bitach. Również standaryzowana. Do wyboru 1 lub 2. 1 jest wartością najczęściej spotykaną i użytkowaną.
  • parzystość (ang. parity), a w zasadzie sposób kontroli parzystości – do wyboru kilka ustawień (tak tak, standaryzowanych). Tutaj można wyszczególnić zwykle spotykane:
    • brak (ang. none) – brak kontroli parzystości
    • nieparzyste (ang. odd) – kontrola parzystości w konfiguracji „nieparzyste”
    • parzyste (ang. even) – kontrola parzystości w konfiguracji „parzyste”

    Najczęściej spotykaną opcją jest brak kontroli parzystości.

Jeśli posiadamy sprzęt, w którym można konfigurować parametry połączenia, wówczas warto ustawić dla sprzętu parametry (9600 bodów, 8 bitów danych, 1 bit stopu, brak kontroli parzystości – ang. 9600bps, 8 data bits, 1 stop bit, parity none) – aby uniknąć problemów przy konfiguracji lub korzystaniu z oprogramowania.

Jeśli natomiast posiadamy sprzęt, który ustawiony jest na inne, niż domyślne wartości, wówczas oprogramowanie musi wiedzieć jakich parametrów użyć przy łączeniu, tak więc albo wprowadza się je w oprogramowaniu, albo też są one wcześniej (na stałe) ustawione przez producenta.

Jeśli oprogramowanie będzie korzystać z innych parametrów, niż sprzęt z RS232, jaki posiadamy, wówczas nastąpią problemy w komunikacji, co objawia się zwykle przekazywaniem danych w nieprawidłowy sposób (np. innymi [nieprawidłowymi] znakami, gubieniem danych).

Jak znaleźć port COM w systemie?

portymuOk, mamy przejściówkę RS-232/USB. Podłączamy sprzęt, ale nie wiemy jaki port system przypisał dla tej przejściówki. Aby się dowiedzieć, jaki to port, musimy otworzyć panel sterowania, uruchomić menedżer urządzeń, odszukać w nim sekcje porty COM/LPT i odnaleźć nowy wpis, odpowiadający za port. Czasem bowiem możemy mieć listę portów skojarzonych z Bluetooth, więc odszukanie właściwego dla przejściówki portu może być trochę dłuższe.

Dla pewności możemy odłączyć urządzenie, aby sprawdzić czy na liście portów dany COM znikł.

Niewygodne?

Cóż, jeśli nie chcemy się bawić w szukanie i kojarzenie, który port może być tym nowym portem, można wykorzystać oprogramowanie. Tutaj mogę polecić własne rozwiązanie, jakie opracowałem parę lat temu, przy okazji robienia zdalnego dostosowania programu Młotek Schmidta N do cyfrowego młotka schmidta DigiSchmidt dla jednego z Klientów wykonujących badania wytrzymałości betonu.

Zrzut ekranu aplikacji DigiSchmidtReader

Zrzut ekranu aplikacji DigiSchmidtReader

Program ten pozwala na automatyczne rozpoznanie portu, wystarczy tylko postępować zgodnie z następującymi krokami.

  • najpierw ściągamy bezpłatny program – DigiSchmidtReader
  • zanim uruchomimy program, odłączamy sprzęt od portu USB
  • po uruchomieniu programu wciskamy po prostu przycisk „Wykryj port”
  • teraz w zasadzie wszystko sprowadza się do działania wg instrukcji wyświetlanej przez program – w skrócie: podłączamy urządzenie przez USB, czekamy przez parę sekund (zazwyczaj w tym momencie usłyszymy dźwięk systemowy odpowiadający za wykrycie podłączenia urządzenia USB) i wciskamy przycisk „OK„. I to wszystko – jeśli port pojawi się w systemie, wówczas program poda jego numer
  • i sprawa załatwiona – mamy numer portu

Sam program pozwala na otwarcie portu i sprawdzenie czy nasze urządzenie potrafi coś wysłać (oczywiście nie musi to być młotek, może być np. odbiornik GPS). Aplikacja jest wyposażona w licznik danych (bajtów), ale najważniejszą jej funkcjonalnością jest możliwość zapisu danych pozyskanych z portu (jeśli urządzenie jakie mamy coś do portu wysyła po podłączeniu), albo też przesłania bezpośrednio do mnie (do analizy – jeśli prowadzimy dostosowanie sprzętu do wybranego oprogramowania). Aplikacja korzysta z domyślnych parametrów komunikacji, o jakich wspomniałem wcześniej.

portcomMając numer portu z reguły po wpisaniu go do zakładki ustawień danego programu (np. w sekcji komunikacji) – oprogramowanie będzie wiedzieć przez jaki port się komunikować. A dzięki temu komunikacja będzie możliwa i będziemy zadowoleni z faktu, iż możemy w pełni wykorzystać zalety automatyzacji/transferu danych z urządzenia do komputera.

One response on “O portach szeregowych słów kilka – cz. II

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Current ye@r *