Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00300 008274 11001422 na godz. na dobę w sumie
RS 232C - praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera. Wydanie II - książka
RS 232C - praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera. Wydanie II - książka
Autor: Liczba stron: 400
Wydawca: Helion Język publikacji: polski
ISBN: 83-7197-990-8 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> c++ builder - programowanie
Porównaj ceny (książka, ebook, audiobook).
Drugie wydanie książki 'RS 232C -- praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera' to kompendium wiedzy adresowane do osób zajmujących się tworzeniem oprogramowania sterującego urządzeniami podłączanymi przez port szeregowy. Książka umożliwia zdobycie wiedzy niezbędnej, by przy użyciu narzędzi Delphi i Builder tworzyć w Pascalu i C++ własne programy do obsługi transmisji szeregowej.

W książce przedstawiono:

Nowe wydanie zostało zaktualizowane i poprawione. Dodano nowe rozdziały opisujące tworzenie własnych komponentów obsługi portu szeregowego oraz transmisję szeregową z wykorzystaniem portu USB. Dokładny opis USB, standardu zdobywającego ostatnio ogromne uznanie, to kolejny powód, dla którego warto mieć tę książkę.

Dołączony do książki CD-ROM zawiera:

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl RS 232C — praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera. Wydanie II Autor: Andrzej Daniluk ISBN: 83-7197-990-8 Format: B5, stron: 412 Drugie wydanie ksi¹¿ki „RS 232C — praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera” to kompendium wiedzy adresowane do osób zajmuj¹cych siê tworzeniem oprogramowania steruj¹cego urz¹dzeniami pod³¹czanymi przez port szeregowy. Ksi¹¿ka umo¿liwia zdobycie wiedzy niezbêdnej, by przy u¿yciu narzêdzi Delphi i Builder tworzyæ w Pascalu i C++ w³asne programy do obs³ugi transmisji szeregowej. W ksi¹¿ce przedstawiono: do realizacji transmisji szeregowej oferowanych przez Win32 API • Opis metod realizacji nowoczesnej transmisji asynchronicznej poprzez interfejs RS 232C • Opis wszystkich, niezbêdnych funkcji oraz struktur najczêġciej wykorzystywanych • Metody realizacji transmisji buforowanej oraz niebuforowanej • Metody realizacji transmisji szeregowej z wykorzystaniem portów USB • Kompletne przyk³ady oryginalnych algorytmów stosowanych przy obs³udze ³¹cza szeregowego Nowe wydanie zosta³o zaktualizowane i poprawione. Dodano nowe rozdzia³y opisuj¹ce tworzenie w³asnych komponentów obs³ugi portu szeregowego oraz transmisjê szeregow¹ z wykorzystaniem portu USB. Dok³adny opis USB, standardu zdobywaj¹cego ostatnio ogromne uznanie, to kolejny powód, dla którego warto mieæ tê ksi¹¿kê. Do³¹czony do ksi¹¿ki CD-ROM zawiera: • Przyk³adowe programy napisane w C++ i Pascalu. • Kompletne kody ĥród³owe aplikacji napisanych w C++Builderze 5. • Kody ĥród³owe aplikacji napisanych w Delphi 6. Spis treści Przedmowa do wydania drugiego ................................................... ..... 7 Wprowadzenie ................................................... ................................ 9 Rozdział 1. Definicja interfejsu................................................... ........................ 13 Rozdział 2. Nowoczesna transmisja asynchroniczna oraz standard RS 232C ........ 17 RTS-CTS handshaking...................................................d...................................................d22 Konwertery interfejsu RS 232C ...................................................d.....................................26 Konwertery USB/RS 232C ...................................................d............................................26 Protokół XON-XOFF...................................................d...................................................d..27 Protokół ENQ-ACK ...................................................d...................................................d....28 Protokół ETX-ACK...................................................d...................................................d.....28 Protokół SOH-ETX...................................................d...................................................d.....28 Protokoły typu master-slave...................................................d...........................................29 Rola oprogramowania, a podstawowe funkcje interfejsu .................................................29 Podsumowanie ...................................................d...................................................d............31 Rozdział 3. Jak testować programy do transmisji szeregowej?.............................. 33 Mirror w MS DOS ...................................................d...................................................d......33 Terminal dla Windows ...................................................d...................................................d35 Podsumowanie ...................................................d...................................................d............37 Rozdział 4. RS 232C w MS DOS ................................................... ..................... 39 Borland C++...................................................d...................................................d................39 Borland Pascal...................................................d...................................................d.............46 Funkcja 00h...................................................d...................................................d...........47 Funkcja 01h...................................................d...................................................d...........48 Funkcja 02h...................................................d...................................................d...........48 Funkcja 03h...................................................d...................................................d...........48 Podsumowanie ...................................................d...................................................d............50 Ćwiczenia ...................................................d...................................................d....................50 Rozdział 5. Programowa obsługa interfejsu RS 232C w Windows ........................ 51 Proces projektowania oprogramowania ...................................................d.........................55 Wykorzystanie elementów Win32 API w C++ Builderze. Część I ..................................56 Testowanie portu szeregowego...................................................d................................64 Nawiązanie połączenia...................................................d.............................................79 Przykładowa aplikacja ...................................................d.............................................93 Zamknięcie portu komunikacyjnego...................................................d........................99 4 RS 232C — praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera Czyszczenie buforów komunikacyjnych ...................................................d.................99 Zapis i odczyt informacji ...................................................d.......................................100 Podsumowanie ...................................................d...................................................d..........101 Ćwiczenia...................................................d...................................................d............102 Wykorzystanie elementów Win32 API w C++ Builderze. Część II...............................102 Wysyłamy znak po znaku ...................................................d......................................102 Wysyłamy pliki...................................................d...................................................d...108 Wykorzystanie komponentu TTimer ...................................................d.....................120 Aplikacja nie lubi milczeć ...................................................d.....................................138 Break Time — czas oczekiwania aplikacji...................................................d............143 Podsumowanie ...................................................d...................................................d..........152 Ćwiczenia...................................................d...................................................d............153 Wykorzystanie elementów Win32 API w Delphi. Część I .............................................153 Testowanie portu szeregowego — inaczej ...................................................d............153 Nawiązanie połączenia...................................................d...........................................169 Przykładowe aplikacje ...................................................d...........................................173 Podsumowanie ...................................................d...................................................d..........182 Ćwiczenia...................................................d...................................................d............182 Wykorzystanie elementów Win32 API w Delphi. Część II............................................182 Wysyłamy znak po znaku ...................................................d......................................182 Wysyłamy pliki...................................................d...................................................d...188 Timer w Delphi ...................................................d...................................................d...203 Podsumowanie ...................................................d...................................................d..........219 Ćwiczenia...................................................d...................................................d............219 Rozdział 6. Aplikacje wielowątkowe................................................... .............. 221 Najważniejszy jest użytkownik...................................................d....................................222 Użytkownik steruje programem...................................................d.............................222 Możliwość anulowania decyzji...................................................d..............................222 Możliwość odbioru komunikatu nawet w trakcie wysyłania danych .......................223 Możliwość wysłania odrębnej informacji w trakcie transmisji pliku .......................223 Delphi ...................................................d...................................................d........................224 Konkurencja dla Timera ...................................................d........................................237 Konkurencja dla Timera. Inny sposób ...................................................d.........................245 Wielowątkowość i DLL ...................................................d...............................................254 C++ Builder...................................................d...................................................d...............262 Zamiast Timera ...................................................d...................................................d...271 Zamiast Timera. Inny sposób...................................................d.................................278 Podsumowanie ...................................................d...................................................d..........286 Ćwiczenia...................................................d...................................................d............287 Rozdział 7. Wykorzystanie niektórych narzędzi graficznych ............................... 289 Komponent TChart...................................................d...................................................d....289 Podsumowanie ...................................................d...................................................d..........299 Rozdział 8. Przykładowe aplikacje wykorzystywane w systemach pomiarowych ..... 301 Kontroler temperatury ...................................................d..................................................302 Aplikacja obsługująca kilka urządzeń...................................................d..........................319 Podsumowanie ...................................................d...................................................d..........333 Rozdział 9. Tworzenie komponentów ................................................... ............. 335 Komponent TOpenSerialPort...................................................d.......................................335 Testowanie komponentu ...................................................d..............................................340 Podsumowanie ...................................................d...................................................d..........345 Spis treści 5 Rozdział 10. Transmisja szeregowa z wykorzystaniem portu USB.......................... 347 Właściwości portu USB ...................................................d...............................................348 Programowanie portu USB ...................................................d..........................................350 Nie rozwiązane odniesienia do funkcji ...................................................d........................354 Podsumowanie ...................................................d...................................................d..........359 Dodatek A Specyfikacja funkcji CreateFile() — operacje plikowe ..................... 361 Dodatek B Zamiana liczb z postaci dziesiętnej na binarną................................ 365 Dodatek C Specyfikacja struktur MODEMDEVCAPS, MODEMSETTINGS oraz funkcji GetCommModemStatus()............................................. 369 MODEMDEVCAPS ...................................................d...................................................d.369 MODEMSETTINGS...................................................d...................................................d.372 GetCommModemStatus() ...................................................d............................................373 Dodatek D Aplikacje konsolowe ................................................... ................... 375 Skorowidz........................................... ...........................................381 Rozdział 2. Nowoczesna transmisja asynchroniczna oraz standard RS 232C Podstawową wersję RS 232 (ang. Recommended Standard) wprowadzono w 1962 roku w USA. Początkowo standard ten miał służyć jedynie do obsługi modemów. Od tego czasu był poddawany kilkakrotnej aktualizacji celem bardziej optymalnego dostoso- wania do potrzeb szeregowej transmisji danych. Największą popularność zdobyła wersja RS 232C wprowadzona w 1969 roku, zaś oficjalnie do rangi standardu została podnie- siona w roku 1986. RS 232C jest powszechnie stosowanym i akceptowanym standar- dem dla szeregowej wymiany danych cyfrowych pomiędzy urządzeniem DTE (ang. Data Terminal Equipment), obecnie utożsamianym z komputerem, a DCE (ang. Data Com- munication Equipment) — urządzeniem zewnętrznym (w oryginale — modemem). W sposób jednoznaczny definiuje on parametry elektryczne, mechaniczne i logiczne łącza szeregowego. Oficjalna jego nazwa brzmi Interface Between Data Terminal and Data Circuit Termination Equipment Employing Serial Binary Data Interchange. RS 232C stosowany bywa wszędzie tam, gdzie mniej istotną rolę odgrywa przepustowość łącza, natomiast ważna jest niezawodność i prostota obsługi protoekołu komunikacyjnego. Ze względu na prostotę realizacji szeregowej transmisji asynchronicznej większość obecnych urządzeń posługuje się właśnie takim trybem przesyłania danych. Różnice w sposobie realizacji transmisji synchronicznej i asynchronicznej schematycznie przed- stawione są na rysunku 2.1. Komputery osobiste wyposażone są w łącza szeregowe przystosowane do transmisji asynchronicznej, tzn. komputer i urządzenie muszą pracować z jednakową, wcześniej uzgodnioną prędkością oraz wykorzystywać taką samą strukturę znaków. Transmisja taka może być realizowana w trybie bez potwierdzenia odbioru lub z potwierdzeniem odbioru. Drugi sposób zapewnia nam możliwość kontrolowania poprawności wysyła- nych-odbieranych danych. Dane przesyłane są w postaci tzw. ramki (ang. frame), która jest najmniejszą porcją możliwej do przesłania informacji. Bity przesyłane są kolejno. 18 RS 232C — praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera Rysunek 2.1. Różnica pomiędzy sposobami realizacji transmisji synchronicznej i asynchronicznej Do kodowania znaków stosuje się najczęściej kod ASCII (American Standard Code of Information Interchange). Początkowo stosowano 128 znaków zapamiętywanych na 7 bitach. W tym przypadku pierwszy bit danych — bit nr 0 poprzedzony był znacz- nikiem początku ramki — bitem startu. Ósmy bit (bit nr 7) służył do kontroli parzy- stości. Następnie przesyłany był znacznik końca ramki — jeden lub dwa bity stopu. Wraz z pojawieniem się strony kodowej ASCII o 256 znakach, pierwsze 32 znaki z prze- działu 0 – 31 oraz znak 127 zaczęto rezerwować na potrzeby transmisji danych lub jako znaki sterujące dla urządzeń zewnętrznych. Obecnie zbiór ASCII jest podzestawem Unicode zawierającego 65 536 znaków, który używany jest do reprezentowania znaków większości języków świata. W tabeli 2.1 przedstawiono używane obecnie w transmisji szeregowej znaki sterujące. W dalszej części książki będziemy z nich często korzystać. Obecnie ramka może zawierać od 5 do 8 bitów danych (jednak większość spotyka- nych urządzeń posługuje się słowem 7- lub 8-bitowym) poprzedzonych bitem startu oraz zakończonych bitem parzystości i jednym lub więcej bitami stopu. Przed rozpo- częciem transmisji bit startu przyjmuje zawsze wartość 0, zaznaczając wyraźnie moment początkowy. Odwrotność czasu trwania transmisji jednego bitu określa szybkość prze- syłu w bitach na sekundę. Korzystając z funkcji BIOS-u, możemy uzyskać transmisję w granicach od 110 do 9600 b/s. Przekonamy się, że w Windows może być ona znacznie, znaczne większa. Powodem tych rozbieżności są pewne różnice w sposobie inicjalizacji procedur obsługujących łącze szeregowe stosowane w DOS i Windows. Możliwa do uzyskania szybkość transmisji zależy przede wszystkim od typu układu scalonego UART, w jaki zaopatrzona jest nasza płyta główna. Niezależnie od tego, że przetwarza on dane z postaci szeregowej na równoległą i odwrotnie, to obsługuje również sygnały sterujące interfejsu RS 232C. Czytelników zainteresowanych budową i możliwością programo- wania takich układów odsyłam do znakomitej książki Piotra Metzgera Anatomia PC, wyd. VII. Helion (2002). Rozdział 2. ♦ Nowoczesna transmisja asynchroniczna oraz standard RS 232C 19 Tabela 2.1. Pierwsze 32 znaki strony kodowej ASCII Liczba dzies. Liczba heksad. Znak Nazwa angielska Znaczenie NULL Null ☺ SOH Start of Heading Znak pusty Początek nagłówka zawierającego adres lub polecenie Początek tekstu Koniec tekstu Koniec transmisji Zapytanie Potwierdzenie Dzwonek Usuwanie poprzedniego znaku Pozioma tabulacja Przejście kursora do następnego wiersza Pionowa tabulacja Przesuw strony Powrót kursora do początkowej pozycji w tym samym wierszu Następne znaki nie będą interpretowane jako znaki ASCII Powrót do domyślnej strony kodowej ASCII Zmiana znaczenia następnego znaku, który będzie interpretowany jako kombinacja bitów sterujących danym urządzeniem XON kontrola przepływu danych Sterowanie urządzeniem XOFF kontrola przepływu danych Sterowanie urządzeniem Meldunek błędu Znak synchronizacyjny Anulowanie danych Koniec zapisu danych Zastąpienie znaku, znak wstawiony w odbiorniku w miejsce błędnie odebranego, np. z błędem parzystości Rezygnacja bez potwierdzenia Separator plików Separator grup Separator zapisu Separator jednostek Unieważnienie znaku Device Control 1 Device Control 2 Device Control 3 Device Control 4 Negative Acknowledge Synchronous Idle End of Transmission Block Koniec transmisji bloku danych Cancel End of Medium Substitue Character Escape File Separator Group Separator Record Separator Unit Separator Delete Start of Text End of Text End of Transmission Enquiry Acknowledge Bell Backspace Horizontal Tabulation Line Feed Vertical Tabulation Form Feed, page eject Carriage Return Shift Out alternate character set Shift In, resume default character set Data Link Escape 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 127 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 7F ☻ STX ♥ ETX ♦ EOT ♣ ENQ ♠ ACK ● BEL ◘ BS ○ HT ◙ LF ♂ VT ♀ FF ♪ CR ♫ SO ☼ SI ► DLE ◄ DC1 ↕ DC2 ‼ DC3 ¶ DC4 § NAK ▬ SYN ↕ ETB ↑ CAN ↓ EM → SUB ← ESC ∟ FS ↔ GS ▲ RS ▼ US ⌂ DEL 20 RS 232C — praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera Bit kontroli parzystości przesyłany za ostatnim bitem danych jest jedną z metod monito- rowania poprawności transmitowanych danych. Z reguły przyjmuje dwie wartości: 0 lub 1. Ilość jedynek w polu danych może być uzupełniana do liczby parzystej (evenparity) lub nieparzystej (oddparity). Bit parzystości może być stale równy 1 (markparity), stale równy 0 (space) lub może być nieustawiony (noparity). Bity stopu zawsze oznaczają koniec ramki. Może wówczas nastąpić transmisja kolejnej „paczkei” danych. RS 232C jest interfejsem cyfrowym, zatem jego poziomom logicznym (0-1) należy przypisać określone przedziały napięć zarówno ujemnych, jak i dodatnich, które są z reguły nieco wyższe od stosowanych w komputerze. Pozwala to w dużym stopniu uniezależnić sygnał na wejściu interfejsu od przypadkowych zakłóceń. Dla sygnałów sterujących i sygnałów współpracy logicznej wartości 1 odpowiada przedział od +3 do +25 V, tzw. stan aktywny, wysoki, włączony lub „ON”. Logicznemu 0 odpowiada przedział od –3 do –25 V, jest to stan nieaktywny, niski, wyłączony lub „OFF”. Dla linii przesyłania danych logicznej wartości 1 (tzw. „Mark”) opowiada przedział napięć od –3 do –25 V, zaś logicznemu zeru (tzw. „Space”) przedział od +3 V do +25 V. Widzimy więc, że sygnały sterowania i współpracy są aktywne w stanie wysokim, zaś sygnały danych — w stanie niskim (Mark). Na rysunku 2.2 pokazano przebieg czasowy przy- kładowej ramki, ukazujący wysłanie jednej litery „a” reprezentowanej na ośmiu bitach — dziesiętnie 97, binarnie 01100001. Bit parzystości został ustawiony jako markparity, zastosowano też dwa bity stopu. Rysunek 2.2. Czasowy przebieg ramki na linii przesyłania danych przy wysłaniu litery „a” Łącze w trakcie ciszy utrzymywane jest stanie logicznej wartości 1. Transmisja roz- poczyna się od bitu startu, który zawsze przyjmuje wartość logicznego 0. Po nim na- stępuje transmisja ośmiu bitów reprezentujących znak. Później jest bit parzystości, potem dwa bity stopu zamykające ramkę. Bitowi stopu odpowiada stan niski. Po nim łącze wraca do stanu ciszy. Jeden lub dwa bity stopu stosowane są po to, by odbiornik i nadajnik mogły dokonać wzajemnej synchronizacji przed transmisją kolejnej ramki danych. W praktyce układy nadajników zasilane są napięciem ±12 V, dając amplitudę sygnałów ±8 V. W tej sytuacji bitom wartości 0 oraz 1 transmitowanego bajta odpo- wiadają napięcia odpowiednio +12 V oraz –12 V1. 1 Zgodnie z zaleceniami protokołu V.28 CCITT (Międzynarodowy Komitet Doradczy ds. Telefonii i Telegrafii) logicznemu zeru powinien odpowiadać potenkcjał dodatni +3 V…+15 V, zaś logicznej jedynce potencjał ujemny –3 V…–15 V. Rozdział 2. ♦ Nowoczesna transmisja asynchroniczna oraz standard RS 232C 21 Standardową linię interfejsu RS 232C stanowi 25-żyłowy przewód, przy czym więk- szość z tych linii wykorzystuje się dla potrzeb transmisji synchronicznej. W standardzie IBM wykorzystuje się jedynie 9 sygnałów, które są wystarczające do zrealizowania transmisji asynchronicznej. W komputerach PC używano początkowo dwóch rodza- jów złączy szeregowych: 9- oraz 25-końcówkowych typu DB-9 i odpowiednio DB- 25. W komputerach zaopatrzonych w nowsze płyty główne spotyka się jedynie złącza DB-9. Podobnie, wersji DB-25 nie spotyka się już w nowoczesnych urządzeniach po- miarowych. Na rysunku 2.3 przedstawiono wygląd obydwu rodzajeów tych złączy. Rysunek 2.3. Końcówki DB-9 i DB-25. Ciemne kółka oznaczają nieaktywne wyprowadzenia Wykaz sygnałów wykorzystywanych obecnie w interfejsie RS 232C z uwzględnieniem przedstawionych typów złączy podano niżej. Linia 23 DSRD (Data Signal Rate Detector) w złączu DB-25 nie została uwzględniona w poniższym zestawieniu, gdyż obecnie praktycznie nie jest wykorzystywana. Tabela 2.2. Wykaz sygnałów wykorzystywanych w RS 232C DB-25 DB-9 Opis sygnału Kierunek sygnału 1 2 3 4 5 6 7 8 20 22 — PG Protective Ground — masa ochronna — 3 2 7 8 6 5 1 4 9 TxD Transmitted Data — dane wysyłane Wyjście DTE (PC) RxD Received Data — dane odbierane RTS Request To Send — żądanie nadawania. PC zgłasza do urządzenia gotowość odbioru danych CTS Clear To Send — gotowość do wysyłania danych. Urządzenie potwierdza przyjęcie sygnału RTS DSR Data Set Ready — odbiornik gotowy do odbioru danych wysłanych przez komputer SG Signal Ground — masa sygnałowa (RLSD) DCD Data Carier Detect — odbiór fali nośnej. Linia wykorzystywana głównie przez modemy DTR Data Terminal Ready — gotowość komputerado odbierania-wysyłania danych RI Ring Indicator — wskaźnik wywołania. Linia wykorzystywana głównie przez modemy Wejście DTE Wyjście DTE Wejście DTE Wejście DTE — Wejście DTE Wyjście DTE Wejście DTE 22 RS 232C — praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera Linie TxD oraz RxD są przeznaczone do obustronnego przesyłania danych. Nazywamy je liniami danych. Pozostałe zaś, są liniami sterującymi lub kontrolnymi (oczy-wiście za wyjątkiem linii masy). Ogólnie sygnały przekazywane łączem RS 232C można po- dzielić na trzy grupy: 1. sygnały danych: RxD, TxD. 2. sygnały sterujące urządzeniem zewnętrznym: RTS, DTR. 3. sygnały odbierane od urządzenia (kontrolne): CTS, DSR, RI, RLSDe (DCD). RTS-CTS handshaking Jak już wspomniano, zamierzonym było, aby książka ta jak najmniej dotyczyła wątków historycznych łącza szeregowego. Pełny opis funkcji linii magistrali interfejsu RS 232C Czytelnik może znaleźć w bogatej literaturze przedmiotu. Nie będziemy się również szczegółowo zajmować poszczególnymi trybami transmisji szeregowej. Dla nas tak naprawdę istotnym będzie tryb półdupleksowy z potwierdzeniem odbioru (transmisja dwukierunkowa naprzemienna), tzw. handshaking. W tym trybie komputer i urządzenie mogą naprzemiennie nadawać i odbierać, wykorzystując jeden loegiczny kanał danych. Jest to metoda pytanie-odpowiedź. Należy przyznać, że sposób ten jest najprostszym i najskuteczniejszym środkiem wyegzekwowania interesującej nas informacji. Aby zrealizować taką prawdziwą konwersację pomiędzy komputerem a urządzeniem, wy- starczy wykorzystać dwie linie danych RxD i TxD oraz dwie linie sterujące RTS i CTS z magistrali RS 232C. Sygnał RTS musi być stale aktywny lub przełączany do tego stanu przed rozpoczęciem nadawania. Podobnie, nadawanie znaków może nastąpić tylko wów- czas, gdy sygnał CTS będzie włączony. Taki sposób sprzętowej kontroli transmisji nazy- wany jest Hardware flow control lub RTS-CTS handshaking lub jako Out-of-Band flow control — sygnały sterujące są generowane i sprawdzane niezależnie od sygnałów danych. Dostępny jest on w większości współczesnych systemów komunikacyjnych. Ideę takiej konwersacji przedstawimy na przykładzie połączenia pomiędzy dwoma złączami DB-9. Rysunek 2.4. Przykład połączenia poprzez złącza DB-9 komputera z urządzeniem pracującym w pełnym trybie półdupleksowym Linia wejściowa TxD (3) komputera połączona jest z linią wejściową RxD (2) urządze- nia. Linie te służą obustronnej wymianie danych. Za pomocą sygnałów RTS (7)-CTS (8) dokonywany jest wybór aktualnego kierunku transmisji. Po uaktywnieniu łącza sze- regowego linia DTR (4) zostaje włączona. W odpowiedzi urządzenie aktywuje linię DSR (6), sygnalizując gotowość do współpracy. Komputer, chcąc przesłać dane do urządzenia, aktywuje swój sygnał RTS (7), czekając na potwierdzenie od urządzenia na linii CTS (8). Jeżeli została ona uaktywniona, komputer wysyła dane linią TxD. Po zakończeniu transmisji linia RTS jest wyłączana (OFF), na co urządzenie odpowiada Rozdział 2. ♦ Nowoczesna transmisja asynchroniczna oraz standard RS 232C 23 również przełączeniem linii CTS do stanu nieaktywnego (OFF). Ogólnie rzecz biorąc, dane przesyłane do komputera linią RxD będą odbierane wówczas, gdy linie DSR i RLSD (DCD) (1) będą włączone. Patrząc na rysunek 2.4 można zauważyć, że jest to ty- powy układ połączeń stosowany przy współpracy pomiędzy dwoma urządzeniami DTE. Jak to się ma do klasycznego połączenia DTE-DCE? Należy przyznać, że z owym kla- sycznym sposobem łączenia ma to niewiele wspólnego. Przyczyna jest prosta — nowo- czesne urządzenia pomiarowe zaopatrzone są już w programowalne jednostki arytmetycz- no-logiczne i tak na dobrą sprawę są już same w sobie komputerami. Innych produktów nie spotyka się obecnie zbyt często na rynku. Jeżeli w instrukcji obsługi kupionego urzą- dzenia nie umieszczono schematu podobnego do tego z rysunku 2.4, oznaczać to będzie, że sprzedawca zrobił kolejny dobry interes, pozbywając się magaezynowych zapasów. Rysunek 2.5 przedstawia pełną sekwencję stanów linii interfejsu RS 232C. Należy jednak zwrócić uwagę, że w większości spotykanych obecnie przypadków DSR i DTR pozo- stają zwarte, gdyż nowoczesne urządzenia pomiarowe w ogóle nie posługują się linią DSR, zaś linia DCD wykorzystywana jest przeważnie przez modemy.e Rysunek 2.5. Pełna sekwencja stanów linii interfejsu RS 232C Jeżeli jednak chcielibyśmy z niej zrobić użytek, należy wejście DCD komputera połączyć z linią wyjściową DTR urządzenia. Analogicznie jak na rysunku 2.4 można połączyć ze sobą dwa komputery. W tym przypadku układ połączeń można jeszcze uprościć, zwierając linie RTS-CTS oraz DSR-DTR. W nowoczesnych przyrządach pomiarowych coraz częściej spotyka się złącze modu- łowe RJ-11, charakteryzujące się niewielkimi rozmiarami i prostotą montażu przewodów we wtyczkach. Bardzo często wykorzystuje się tu jedynie dwa sygnały dla potrzeb trans- misji asynchronicznej. Na rysunku 2.6 pokazano wygląd takiego złącza, natomiast w tabeli 2.3 specyfikację najczęściej wykorzystywanych przez nie sygnałów. Rysunek 2.6. Złącze modułowe RJ-11 Należy jednak zauważyć, że niekiedy występują tu pewne rozbieżności. Niektórzy producenci nieco odmiennie definiują linie sygnałowe w RJ-11 (tabela 2.4), ale zaw- sze jest to wyraźnie zaznaczone w instrukcji obsługi przyrzeądu. 24 RS 232C — praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera Tabela 2.3. Specyfikacja linii sygnałowych złącza RJ-11 wg LakeShore RJ-11 Opis sygnału 1 2 3 4 5 6 RxD Received Data — dane odbierane RxD Received Data — dane odbierane Gnd Ground — masa sygnałowa Gnd Ground — masa sygnałowa TxD Transmitted Data — dane wysyłane TxD Transmitted Data — dane wysyłane Tabela 2.4. Specyfikacja linii sygnałowych złącza RJ-11 wg niektórych oproducentów RJ-11 1 2 3 4 5 6 ComputOne DTR TxD Gnd RLSD (DCD) RxD RTS SPECIALIX RLSD (DCD) RxD DTR / RTS Gnd TxD CTS Na rysunkach 2.7 i 2.8 pokazano przykłady możliwego układu połączeń pomiędzy kom- puterem zaopatrzonym w złącze DB-9 lub DB-25 oraz nowoczesnym urządzeniem wy- prowadzającym sygnały poprzez RJ-11. Tutaj również widać, że linia wyjściowa TxD komputera połączona jest z odpowiednią linią wejściową RxD uerządzenia. Rysunek 2.7. Przykład nowoczesnego układu połączeń złączy DB-9 oraz RJ-11 stosowanego przez LakeShore Pozostałe linie po stronie komputera pozostają zwarte lub niewykorzystane. Nowo- czesne urządzenia nie wykorzystują zbyt wielu linii sterujących. Linie DTR (4), CTS (8), DSR (6) i DCD (1) pozostają zwarte. Linia RTS (7), żądanie nadawania, nie jest wykorzystywana. Ktoś mógłby zapytać, jak będzie wybierany kierunek transmisji. Taki sposób podłączenia, jaki przedstawiono na przykładzie rysunków 2.6 i 2.7 natychmiast sugeruje, że mamy do czynienia z inteligentnym urządzeniem „znaczącym” koniec wy- syłanych przez siebie danych parą znaków CR LF, tzw. „terminatorem”. Rozdział 2. ♦ Nowoczesna transmisja asynchroniczna oraz standard RS 232C 25 Rysunek 2.8. Przykład nowoczesnego układu połączeń złączy DB-25 oraz RJ-11 stosowanego przez LakeShore Program obsługujący taki przyrząd, napotykając przy odbiorze danych znaki CR LF, będzie już wiedział, że właśnie otrzymał kompletną informację i ewentualnie należy przejść do nadawania. Jeżeli tylko potrafimy w ten sam lub inny chytry sposób odpowiedzieć miernikowi, otrzymamy bezbłędną obustronną transmisję. Taka metoda programowej kontroli trans- misji określana jest mianem Software flow control. Nieustanne śledzenie poziomów wielu sygnałów pojawiających się na złączu RS przechodzi powoli do historii. Jedyną trudno- ścią do przezwyciężenia będzie wówczas problem zbudowania odpowiedniej aplikacji. Nieco inną specyfikację sygnałów w złączu RJ-11 podają ComputOnee oraz SPECIALIX. Wielu producentów stosuje również złącza modułowe RJ-45. Poniżej zostały przedsta- wione niektóre stosowane rozwiązania. Rysunek 2.9. Złącze modułowe RJ-45 Tabela 2.5. Specyfikacja linii sygnałowych złącza RJ-45 wg niektórycho producentów RJ-45 Comput-One Chase DIGIBOARD MICRO-ANEX1 MICRO-ANEX2 EQUINOX IBM CTS2 DTR2 TxD2 Gnd2 DCD2 RxD2 RTS2 — RTS DTR TxD DCD RxD Gnd DSR CTS — RTS RxD DCD Gnd TxD DTR CTS DCD RTS PG1 TxD RxD Gnd CTS DTR DSR RTS PG1 TxD RxD Gnd CTS DTR 1 2 3 4 5 6 7 8 — DTR TxD — RxD Gnd — CTS RTS DTR RxD Gnd TxD Gnd DSR CTS 1 Linia PG zwykle połączona jest z obudową. Jako potencjał okdniesienia używana jest linia Gnd. 2 Identycznie jak w ComputOne, odwrócono tylko numerację stykków. 26 RS 232C — praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera Konwertery interfejsu RS 232C Istnieje wiele rodzajów konwerterów sygnałów interfejsu RS 232C na inne standardy RS. Do najczęściej stosowanych należą układy służące do łączenia urządzeń wyposa- żonych w interfejs RS 232C z urządzeniami wyposażonymi w interfejs RS 485 lub RS 422. Transmisja szeregowa w standardach 485 lub 422 jest dużo szybsza i bardziej odporna na zakłócenia, zapewnia ponadto większy zasięg treansmitowanych sygnałów. W standardzie RS 485 szeregowa transmisja danych cyfrowych odbywa się przez dwuprzewodową symetryczną linię transmisyjną, do której można dołączyć nawet 32 nadajniki i odbiorniki. Stosując odpowiednie powielacze sygnału, liczbę takich urzą- dzeń można znacznie zwiększyć. Interfejs ten umożliwia realizację wielopunktowej transmisji w trybie półdupleksowym. Standard elektryczny RS 422 nie różni się w istocie od RS 485. Różnica polega na możliwości dołączenia do jednej pary przewodów jednego nadajnika nawet do 10 odbiorników. W układzie RS 422 możliwa jest transmisja w trybie pełnego dupleksu, czyli w modzie jednoczesnego nadawania i oedbioru danych. Konwertery interfejsu RS 232C konstruowane są w postaci niewielkich pudełek zawiera- jących z jednej strony złącze DB-25 lub DB-9 do podłączenia do łącza RS 232C w kom- puterze, zaś z drugiej strony inne złącze, np. PHOENIX, do podłączenia linii i napięcia zasilającego. Układy te, zapewniając izolację galwaniczną łączonych urządzeń i linii transmisyjnej, z reguły zasilane są oddzielnym zasilaczem stabilizowanym. Stosując tego rodzaju konwertery sygnałów, możliwe jest uzyskanie szybkości transmisji w gra- nicach 2,5 Mb/s przy maksymalnej długości linii około 1200 m, co wydaje się rozwią- zaniem w pełni zadawalającym nawet w warunkach przemysłowych. Zestaw dwóch konwerterów może być z powodzeniem stosowany do realizacji połączenia pomiędzy dwoma urządzeniami zaopatrzonymi w interfejs RS 232C. Konwertery USB/RS 232C Konwertery tego typu pozwalają na podłączenie urządzeń zaopatrzonych w interfejs szeregowy RS 232C do portów USB w komputerze. Wśród dostępnych na rynku wy- soką kulturą działania oraz niezawodnością wyróżniają się urządzenia gliwickiej firmy YUKO. Konwertery takie posiadają złącze USB typu Am (A-mini) oraz DSUB 25 (port RS 323C), w którego obudowie znajduje się układ konwertera zasilanego z portu USB komputera. Złącza te połączone są odcinkiem kabla długości ok. 90 cm. Dostar- czane wraz z konwerterem sterowniki instalują się w 32 bitowych systemach Window- sowych (98, ME, NT, 2000 oraz XP), dzięki czemu uzyskujemy dostęp do dodatko- wego 8-bitowego portu o dowolnie zadeklarowanej wartości od COM1 do COM256, którego można używać tak jak portu standardowego. Należy zwrócić uwagę, iż jest to jednak port wirtualny, dlatego programy, które bezpośrednio obsługują porty komu- nikacyjne (np. MS DOS) nie będą działać poprawnie. W przeciwieństwie do standar- dowych portów COM, port konwertera jest bardzo szybki. Dostarczane sterowniki zapewniają transmisję danych do 921 kb/s z możliwością rozszerzenia w przypadku transmisji asynchronicznej nawet do wartości 2 Mb/s. Rozdział 2. ♦ Nowoczesna transmisja asynchroniczna oraz standard RS 232C 27 Na rysunkach 2.10, 2.11 oraz 2.12 pokazano odpowiednio schemat przekroju cztero- żyłowego kabla wykorzystywanego przez USB, wygląd złącza typu A wykorzysty- wanego do podłączenia urządzeń z komputerem (hostem, ang. upstream port) oraz numerację sygnałów USB, których wykaz zawiera tabela 2.6. Rysunek 2.10. Czterożyłowy kabel USB Rysunek 2.11. Złącze USB typu A Rysunek 2.12. Numeracja styków złącza USB typu A Tabela 2.6. Wykaz sygnałów wykorzystywanych w USB Numer Oznaczenie Opis sygnału Kolor przewodu 1 2 3 4 Shell VBUS Data−(D−) Data+(D+) GND Shield Przewód zasilania (max. +5,25 [V]) Czerwony Przewód symetrycznej skrętki sygnałowej Biały Przewód symetrycznej skrętki sygnałowej Przewód masy zasilania Ekran Zielony Czarny Protokół XON-XOFF Wiele urządzeń wymaga stosowania programowej kontroli przepływu danych z wy- korzystaniem tzw. protokołu XON-XOFF. Przykładem praktycznego wykorzystania niektórych znaków pokazanych w tabeli 2.1 jest właśnie ten protokół, czasami nazy- wany DC1-DC3 lub ^Q-^S. Jeżeli dane przychodzą zbyt szybko do odbiornika i urządzenie odbierające nie może ich tak szybko pobierać z bufora wejściowego, program sterujący może wysłać znak XOFF (DC3 lub dziesiętnie 19 albo Control + S). Urządzenie nadające zatrzymuje dalszą transmisję (jeżeli oczywiście „wie”, co to jest XOFF), dopóki od strony odbiornika nie nadejdzie znak XON (DC1 lub dziesiętnie 17 albo Control + Q). 28 RS 232C — praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera Jeżeli jednak XOFF zostanie wysłany zbyt późno, może nastąpić przepełnienie bufora wejściowego. Podobnie opóźnienie wysłania XON z reguły powoduje zablokowanie portu komunikacyjnego. We współczesnych, inteligentnych urządzeniach o wysokim stopniu wzajemnej syn- chronizacji protokół ten przewiduje wysłanie XOFF, jeżeli bufor wejściowy jest wy- pełniony powyżej ¾ deklarowanego rozmiaru. Program sterujący urządzeniem wysyła znak XON, jeżeli bufor jest wypełniony mniej niż w ½. W tym przypadku transmisja musi przebiegać w pełnym trybie dupleksowym. Dane przekazywane są jednocześnie w obu kierunkach niezależnie od siebie, po oddzielnych liniach transmisyjnych (patrz tabela 2.3). Wykorzystujemy tu dwie pary linii RxD i TxD (RTS i CTS nie mają zna- czenia), linia DTR może (ale nie musi) być wykorzystywana do włączania i wyłączania urządzenia. Windows podtrzymuje ten protokół, o czym Czytelnik może się przekonać, zaglądając do Panelu sterowania i Właściwości portów komunikacyjnych oraz czyta- jąc dalej tę książkę. Protokół ENQ-ACK Jest to obecnie jedna z rzadziej stosowanych metod kontroli przepływu danych w urzą- dzeniach pomiarowych. Urządzenie transmitujące wysyła regularnie zapytanie ENQ (patrz tabela 2.1) po każdej, wcześniej ustalonej porcji transmitowanych danych. Kiedy „odbierający” jest gotowy do przyjęcia kolejnego bloku informacji, wysyła do „nadają- cego” potwierdzenie ACK, sygnalizując tym samym gotowość przyjęcia następnej porcji danych. W metodzie tej z reguły nie kontroluje się stopnia wypełnienia bufora pamięci. Jeżeli „nadający” po wysłaniu kolejnej porcji informacji nie otrzyma potwierdzenia jej odbioru, zaczyna wysyłać przez pewien, ściśle ustalony czas, znak, np. LF, dając odbiornikowi możliwość ewentualnego przetworzenia wcześniej otrzymanych danych. Jeżeli po określonym czasie nie nadejdzie potwierdzenie ACK, nadajnik wstrzymuje dalszą transmisję do czasu jego otrzymania. Protokół ETX-ACK Protokół ten funkcjonuje nieco inaczej. Komputer wysyła cały blok danych zakończo- nych znakiem ETX. Odbiornik wysyła do komputera znak potwierdzenia ACK dopiero po całkowitym przetworzeniu odebranej porcji danych. Zastosowanie tego protokołu wymaga istnienia w odbiorniku wystarczająco dużego bufora pamięci, aby transmisja nie była zatrzymywana przed odebraniem całej porcji informacji. Protokół SOH-ETX Protokół SOH-ETX bywa coraz częściej wykorzystywany w tzw. urządzeniach wie- lozakresowych, gdzie zwracana informacja obejmuje nie tylko np. aktualną wartość mierzonego prądu przemiennego, ale jeszcze inne jego parametry. Początek nagłówka Rozdział 2. ♦ Nowoczesna transmisja asynchroniczna oraz standard RS 232C 29 tekstu lub aktualny adres odpytywanego urządzenia jednoznacznie określa znak SOH (ale nie STX, gdyż tekst taki może być poprzedzony specjalnymi znakami formatowania lub znakami nie będącymi tekstem). Koniec przesyłanej porcji danych wyraźnie określa znak ETX (End of Text por. tabela 2.1). Protokoły typu master-slave Wykorzystując protokoły typu master-slave tylko jednostka nadrzędna (ang. master) może inicjować transmisję danych w systemie, zaś jednostki podrzędne (ang. slave) jedynie odpowiadają na zdalne zapytania. Ciąg wykonywanych czynności, które pod groźbą utraty spójności danych muszą być wykonane w całości, tzw. transakcja, składa się z polecenia wysyłanego z jednostki master do slave oraz z odpowiedzi przesyłanej z jednostki slave do master. Odpowiedź zawiera dane żądane przez jednostkę nadrzędną lub potwierdzenie realizacji odebranego polecenia. Master może indywidualnie od- pytywać szereg jednostek podrzędnych lub też przesyłać wiadomości rozgłoszeniowe (ang. broadcast), przeznaczone dla wszystkich urządzeń podrzędnych w systemie. Na polecenia rozgłoszeniowe jednostki podrzędne z reguły nie przesyłają odpowiedzi. Proto- koły tego rodzaju wykorzystywane są obecnie m.in. przez interfejsy typu MODBUS, które wykorzystują asynchroniczną transmisję znakową zgodneą ze standardem RS 232C. Rola oprogramowania, a podstawowe funkcje interfejsu Aby zrealizować prawidłową wymianę informacji pomiędzy komputerem a urządze- niami zewnętrznymi, dla których pełnić on będzie rolę kontrolera, należy w pierwszej kolejności określić funkcje szeroko rozumianego interfejsu w etym systemie. W dobrze zaprojektowanym układzie interfejs powinien spełniać następeujące wymagania: 1. Zapewnienie właściwego sposobu inicjalizacji połączenia. Aby uzyskać dostęp do urządzenia przyłączonego do portu keomunikacyjnego, port ten należy fizycznie uaktywnić — otworzyć do transmisji. W estandardowym PC mamy z reguły do dyspozycji tylko dwa szeregowe porty komuenikacyjne. Często zachodzi jednak konieczność obsłużenia wielu urządzeń. eStosuje się wówczas specjalne karty lub konwertery, umożliwiające uzyskaniee dostępu do większej ich liczby. Przyrządy podłączone do portów komunikacyjnych muszą być rozróżnialne, jeżeli chcemy nimi naprawdę sterować. Będą takimi, jeżeli aplikacja będzie w stanie rozróżnić poszczególne porty sezeregowe i kierować do nich odpowiednie komunikaty oraz odbierać dane.e Właściwa inicjalizacja portu polega na nadaniu mu unikalnego identyfikaetora, którym można swobodnie operować w trakcie działania programu. 2. Zapewnienie właściwej synchronizacji transmitowanych danych pomiędzy komputerem i urządzeniami zewnętrznymi oraz udostępnienie meetod natychmiastowej i automatycznej korekty różnego rodzaju błędóew, pojawiających się w czasie transmisji. 30 RS 232C — praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera Większość standardowych interfejsów ma wbudowane funkcje synchreonizacji, które w pewnym stopniu mogą minimalizować pojawiające się opóźneienia w kanale transmisyjnym — jedną z głównych przyczyn powstawaniae błędów. Rolą oprogramowania będzie ich umiejętne wyzwalanie. Aplikacja ezarządzająca transmisją musi być skonstruowana w sposób zapewniający bezbłęedne funkcjonowanie systemu pomiarowego lub komunikacyjnego. Właściwae reakcja na pojawiające się w czasie transmisji błędy oraz możliwość ich eweentualnej korekcji są zawsze istotnymi elementami programu komunikacyjneego. 3. Zapewnienie właściwej kontroli transmisji oraz wyboru jej kiereunku. Kontrolowanie aktualnego kierunku transmisji może być realizoweane sprzętowo lub programowo. Na pewno bardziej przydaną jest umiejętnoeść programowej kontroli przepływu danych. Użytkownik danego systemu wie najelepiej, jakie dane i w jakim czasie chce otrzymać od urządzenia. Aplikacja oebsługująca dany interfejs musi być tak zaprojektowana, aby możliwym był „płynny”e wybór kierunku nadawanie-odbiór. W tym miejscu należy zwrócić szczególnąe uwagę na to, by nie tracić danych w momencie zmieniania kierunku transmiesji. Stosując metodę buforowania danych, program musi być wyczulony na możliwość odbierania swoich własnych komunikatów przy nagłej zamianie ról ze nadajnika na odbiornik. 4. Udostępnienie możliwości zatrzymania transmisji w dowolnym momenciee bez ryzyka utraty danych. Tę właściwość same interfejsy posiadają tylko w ograniczonym stoepniu. Program kontrolujący transmisję jest naprawdę funkcjonalny wówczas,e gdy zawiera opcje umożliwiające czasowe wstrzymanie operacji odbioru-nadawaenia bez ryzyka utraty informacji. Jest to szczególnie ważne w przyepadku aplikacji wielowątkowych lub generujących własne przerwania systemowe. Włeaściwość tę musi uwzględniać oprogramowanie sterujące jednocześnie peortem szeregowym oraz różnego rodzaju kartami przetwornikowymi zaopatrzonymi w przetworniki analogowo-cyfrowe. W obecnych komputerach procesor programuje zealedwie kilka rejestrów sterujących urządzenia, wysyłając rozkaz wykoenania pewnej operacji (np. odebranie znaku przez port szeregowy). Isetnieją przynajmniej dwa sposoby poinformowania procesora o tym, że dana operacjae właśnie się zakończyła. Po pierwsze można zastosować tzw. polling, gdzie procesor wysyła regularne zapytania do urządzenia. Częstotliwość tych zeapytań jest kontrolowana przez aktualnie działającą aplikację. Jednak ew praktyce bardzo trudno jest określić optymalną częstotliwość takiego odpytywaneia i z tego względu sposób ten jest bardzo niewygodny. Drugi sposób poelega na tym, że samo urządzenie zgłasza wykonanie danego zadania. W steosownym momencie procesor przerywa wykonywanie aktualnego programu, pamiętaejąc stan swoich rejestrów uaktywnia funkcje reagujące na zgłoszenie daneego urządzenia. Mówimy wówczas, że nastąpiło przerwanie sprzętowe interrupt pochodzące od urządzenia. Ten sposób sterowania przepływem danych w PCe jest stosowany wszędzie tam, gdzie mamy do czynienia z intensywnym i nieregularenym przepływem danych pomiędzy urządzeniami, a pamięcią operacyjną. W praktyce mamy możliwości programowej kontroli aktualnie występuejących przerwań. Jednak w rzeczywistości jest to zadanie uciążliwe i elepiej jest wykorzystać zalety programowania obiektowo-zdarzeniowego. Rozdział 2. ♦ Nowoczesna transmisja asynchroniczna oraz standard RS 232C 31 5. Zapewnienie możliwości odpowiedniego odbierania, przechowywania i wysyłania danych. Standardowe interfejsy mają możliwość buforowania danych. Jest eto zaleta, którą doceniamy wtedy, gdy nie jesteśmy w stanie w sposób ciągłye odbierać przychodzących danych lub nie możemy ich wysłać w ściśle określonym momencie. Oprogramowanie sterujące przepływem danych pełni w teakich przypadkach rolę wspomagającą. Aplikacja powinna umieć odczytaeć aktualny stan bufora wejściowego i zdecydować o pobraniu z niego inteeresujących nas danych. Odbierając informacje w sposób ciągły, należy nieustannie keontrolować bufor danych, nawet w sensie fizycznej ingerencji. Dobrze działaejący program nie może dopuścić do jego przepełnienia, gdyż grozi to całkowiteą utratą informacji. Rolą oprogramowania będzie również odpowiednie czyszczenie bufeora danych w trakcie transmisji. Jest to zawsze punkt newralgiczny sysetemu komunikacyjnego. W celu ujednolicenia i uproszczenia sposobów projektowania oprogramowania wyko- rzystywanego w różnych systemach pomiarowych stworzono standard opisujący ze- staw uniwersalnych instrukcji programujących urządzenia pomiarowe, tzw. język SCPI (ang. Standard Commands for Programmable Instruments). Zdefiniowane są tam wszyst- kie ujednolicone przez producentów urządzeń pomiarowych instrukcje (rozkazy) umożli- wiające zaprogramowanie nowoczesnego przyrządu w zależności od wykonywanego przezeń zadania. Programiści dostali więc do dyspozycji uniwersalny język zapytań i odpowiedzi, należy tylko umiejętnie go wykorzystać. Niestety, to niewątpliwe udogod- nienie nie zwalnia nas z konieczności samodzielnego stworzenia (lub kupna) aplikacji, potrafiącej wykorzystać zalety SCPI. Czytelników pragnących poszerzyć swoje wia- domości na ten temat odsyłam do książki Wojciecha Mielczarka Urządzenia pomiarowe i systemy kompatybilne ze standardem SCPI, wyd. Helion (1999). Podsumowanie W rozdziale tym zostały zaprezentowane podstawowe wiadomości dotyczące szeregowej transmisji asynchronicznej oraz standardu RS 232C. Tematy te zostały potraktowane w sposób zwięzły, ale zupełnie wystarczający do zrozumienia zagadnień związanych z programową kontrolą łączy szeregowych. Przedstawione też zostały rzadko spotykane przykłady nowoczesnych sposobów połączeń coraz częściej stosowane w szeregowej transmisji danych. Omówiono również najważniejsze stosowane obecnie protokoły kontroli transmisji danych. Wymieniono też, jakimi cechami powinny charakteryzować się aplikacje, obsługujące transmisję szeregową. W książce tej, wraz z wprowadzaniem konkretnych algorytmów mogących obsługiwać komunikację szeregową, omówione zagadnienia będą stopniowo uzupełniane. Bardziej szczegółowe informacje dotyczące standardu RS 323C Czytelnik może znaleźć w bogatej literaturze przedmiotu oraz na licznych stronach WWW. Osobom pragnącym poszerzyć swoje wiadomości na temat szeregowych interfejsów cyfrowych polecamy książkę Wojciecha Mielczarka Szeregowe interfejsy cyfrowe, wyd. Helion (1994).
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

RS 232C - praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera. Wydanie II
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: