RS 232C - praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera. Wydanie III.pdf

(416 KB) Pobierz
RS 232C - praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera. Wydanie III
RS 232C – praktyczne
programowanie. Od Pascala
i C++ do Delphi i Buildera.
Wydanie III
Autor: Andrzej Daniluk
ISBN: 978-83-246-0778-5
Format: B5, stron: 504
Na uczelniach, w szko³ach i biurach pojawia siê coraz wiêcej zaawansowanych
urz¹dzeñ komputerowych pod³¹czanych przez port szeregowy. Czy koniecznie trzeba
p³aciæ wysokie stawki informatykom, aby wykorzystaæ pe³niê mo¿liwoœci tych
nowoczesnych narzêdzi? Na szczêœcie nie. Obs³uga transmisji szeregowej przy u¿yciu
standardu RS 232C mo¿e byæ na tyle ³atwa, ¿e uczniowie, studenci, nauczyciele,
pracownicy naukowi czy in¿ynierowie mog¹ samodzielnie tworzyæ potrzebne im
oprogramowanie.
Dziêki ksi¹¿ce „RS 232C — praktyczne programowanie. Od Pascala i C++ do Delphi
i Buildera. Wydanie III” tak¿e i Ty szybko nauczysz siê pisaæ programy steruj¹ce
urz¹dzeniami pod³¹czanymi przez port szeregowy. Dowiesz siê, jak dzia³a transmisja
asynchroniczna oraz czym jest standard RS 232C. Poznasz interfejs RS 232C dla
systemu Windows i nauczysz siê go u¿ywaæ w œrodowiskach programistycznych
Builder i Delphi, co pozwoli Ci pisaæ potrzebne oprogramowanie w jêzyku Pascal lub
C++. Najnowsze, poprawione wydanie zawiera jeszcze wiêcej przyk³adów, dziêki którym
b³yskawicznie bêdziesz móg³ sprawdziæ nabyt¹ wiedzê w praktyce.
• Standard RS 232C
• Transmisja asynchroniczna
• Obs³uga RS 232C w systemach MS-DOS i Windows
• Wykorzystanie elementów interfejsu Windows API w œrodowiskach Builder i Delphi
• Testowanie programów do obs³ugi transmisji szeregowej
• Tworzenie aplikacji wielow¹tkowych
• Narzêdzia graficzne
• Przyk³adowe aplikacje i ich analiza
• Specyfikacje najwa¿niejszych funkcji
Wydawnictwo Helion
ul. Koœciuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
119562269.006.png 119562269.007.png 119562269.008.png 119562269.009.png 119562269.001.png 119562269.002.png 119562269.003.png 119562269.004.png 119562269.005.png
Spis treści
5
Spis treści
Przedmowa do wydania trzeciego ...................................................... 9
Wprowadzenie ................................................................................ 11
Rozdział 1. Definicja interfejsu ......................................................................... 15
Rozdział 2. Nowoczesna transmisja asynchroniczna oraz standard RS 232C ...... 19
RTS-CTS handshaking .................................................................................................... 24
Konwertery interfejsu RS 232C ...................................................................................... 28
Konwertery USB/RS 232C .............................................................................................. 29
Właściwości portu konwertera .................................................................................. 31
Protokół XON-XOFF ...................................................................................................... 33
Protokół ENQ-ACK ........................................................................................................ 33
Protokół ETX-ACK ......................................................................................................... 34
Protokół SOH-ETX ......................................................................................................... 34
Protokoły typu master-slave ............................................................................................ 34
Rola oprogramowania a podstawowe funkcje interfejsu ................................................. 36
Podsumowanie ................................................................................................................. 38
Rozdział 3. Jak testować programy do transmisji szeregowej? ........................... 39
Mirror w MS-DOS ........................................................................................................... 39
Terminal dla Windows .................................................................................................... 41
Podsumowanie ................................................................................................................. 43
Rozdział 4. Transmisja szeregowa w MS-DOS .................................................... 45
Borland C++ ....................................................................................................................45
Borland Pascal .................................................................................................................53
Funkcja 00h ............................................................................................................... 55
Funkcja 01h ............................................................................................................... 56
Funkcja 02h ............................................................................................................... 56
Funkcja 03h ............................................................................................................... 56
Podsumowanie ................................................................................................................. 58
Ćwiczenia ........................................................................................................................ 58
Rozdział 5. Programowa obsługa interfejsu RS 232C w Windows ...................... 59
Typy danych Windows .................................................................................................... 61
Proces projektowania oprogramowania ........................................................................... 64
Wykorzystanie elementów Windows API w C++Builderze. Część I ............................. 64
Struktura DCB ........................................................................................................... 65
Funkcja CreateFile() .................................................................................................. 65
 
6
RS 232C — praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera
Funkcja GetCommState() .......................................................................................... 70
Funkcja SetCommState() .......................................................................................... 71
Funkcja CloseHandle() .............................................................................................. 71
Testowanie portu szeregowego ....................................................................................... 74
Struktura COMMPROP ............................................................................................ 78
Funkcja GetCommProperties() ................................................................................. 82
Struktura COMMCONFIG ....................................................................................... 88
Funkcje GetCommConfig() i SetCommConfig() ...................................................... 88
Funkcja CommConfigDialog() ................................................................................. 89
Struktura COMMTIMEOUTS .................................................................................. 90
Funkcje GetCommTimeouts() i SetCommTimeouts() .............................................. 91
Nawiązanie połączenia. Wariant I ................................................................................... 91
Segment inicjalizująco-konfiguracyjny ..................................................................... 92
Segment wysyłający komunikaty. Funkcja WriteFile() ............................................ 92
Segment odbierający komunikaty. Funkcja ReadFile() ............................................ 93
Przykładowa aplikacja ............................................................................................... 94
Nawiązanie połączenia. Wariant II .................................................................................. 97
Funkcja SetupComm() .............................................................................................. 98
Funkcja ClearCommError() ...................................................................................... 98
Struktura COMSTAT .............................................................................................. 100
Przykładowa aplikacja ............................................................................................. 102
Zamknięcie portu komunikacyjnego ....................................................................... 106
Nawiązanie połączenia. Wariant III .............................................................................. 107
Funkcje GetCommMask() i SetCommMask() ........................................................ 107
Funkcja WaitCommEvent() .................................................................................... 109
Przykładowa aplikacja działająca w środowisku tekstowym .................................. 110
Przykładowa aplikacja działająca w środowisku graficznym ................................. 118
Nawiązanie połączenia. Wariant IV .............................................................................. 123
Funkcja BuildCommDCB() .................................................................................... 123
Funkcja BuildCommDCBAndTimeouts() .............................................................. 125
Inne użyteczne funkcje .................................................................................................. 126
Podsumowanie ............................................................................................................... 128
Ćwiczenia ...................................................................................................................... 128
Wykorzystanie elementów Windows API w C++Builderze. Część II .......................... 129
Wysyłamy znak po znaku. Funkcja TransmitCommChar() .................................... 129
Wysyłamy pliki. Funkcje _lopen, _lread(), _lwrite(), _lclose() .............................. 133
Wykorzystanie komponentu klasy TTimer ............................................................. 143
Aplikacja nie lubi milczeć. Funkcja GetLastError() ............................................... 162
Break Time — czas oczekiwania aplikacji ............................................................. 167
Podsumowanie ........................................................................................................ 176
Ćwiczenia ................................................................................................................ 176
Wykorzystanie elementów Windows API w Delphi. Część I ....................................... 177
Testowanie portu szeregowego — inaczej .............................................................. 177
Rekord TCOMMPROP ........................................................................................... 183
Nawiązanie połączenia ............................................................................................ 191
Przykładowe aplikacje ............................................................................................. 194
Podsumowanie ........................................................................................................ 203
Ćwiczenia ................................................................................................................ 203
Wykorzystanie elementów Windows API w Delphi. Część II ...................................... 203
Wysyłamy znak po znaku ....................................................................................... 204
Wysyłamy pliki ....................................................................................................... 209
Timer w Delphi ....................................................................................................... 224
Podsumowanie ............................................................................................................... 238
Ćwiczenia ...................................................................................................................... 239
Spis treści
7
Rozdział 6. Aplikacje wielowątkowe ............................................................... 241
Najważniejszy jest użytkownik ..................................................................................... 242
Użytkownik steruje programem .............................................................................. 242
Możliwość anulowania decyzji ............................................................................... 243
Możliwość odbioru komunikatu nawet w trakcie wysyłania danych ..................... 243
Możliwość wysłania odrębnej informacji w trakcie transmisji pliku ..................... 243
Delphi ............................................................................................................................ 244
Funkcja BeginThread() ........................................................................................... 244
Konkurencja dla Timera .......................................................................................... 256
Klasa TThread ......................................................................................................... 264
Wielowątkowość i DLL-e ............................................................................................. 272
C++Builder .................................................................................................................... 280
Zamiast Timera ....................................................................................................... 289
Zamiast Timera. Inny sposób .................................................................................. 296
Klasa TThread ......................................................................................................... 304
Podsumowanie ............................................................................................................... 315
Ćwiczenia ...................................................................................................................... 315
Rozdział 7. Wykorzystanie niektórych narzędzi graficznych .............................. 317
Komponent klasy TChart ............................................................................................... 318
Podsumowanie ............................................................................................................... 328
Ćwiczenia ...................................................................................................................... 328
Rozdział 8. Przykładowe aplikacje wykorzystywane
w systemach pomiarowych ........................................................... 329
Kontroler temperatury ................................................................................................... 330
Aplikacja obsługująca kilka urządzeń ........................................................................... 347
Programowanie inteligentne .......................................................................................... 358
Brak powtarzalności kodu ....................................................................................... 359
Czytelność kodu ...................................................................................................... 360
Łatwość testowania ................................................................................................. 364
Podsumowanie ............................................................................................................... 366
Ćwiczenia ...................................................................................................................... 366
Rozdział 9. Tworzenie komponentów .............................................................. 369
Komponent TOpenSerialPort. Realizacja w Delphi ...................................................... 369
Testowanie komponentu ......................................................................................... 374
Komponent TOpenSerialPort. Realizacja w C++Builderze .......................................... 380
Testowanie komponentu ......................................................................................... 386
Komponenty aktywne .................................................................................................... 389
Kompilacja projektu zawierającego komponent aktywny ...................................... 393
Odczytywanie i modyfikacja wartości własności komponentu aktywnego ............ 395
Komponenty w BDS 2006 ............................................................................................. 397
Podsumowanie ............................................................................................................... 398
Ćwiczenia ...................................................................................................................... 398
Rozdział 10. Modelowanie oprogramowania sterującego portem szeregowym .... 399
Schematy dziedziczenia ................................................................................................. 400
Ukrywanie konstruktora ................................................................................................ 405
Interfejsy ........................................................................................................................ 409
Delegowanie operacji .................................................................................................... 415
Delegowanie realizacji interfejsu do własności ............................................................. 422
Podsumowanie ............................................................................................................... 426
Ćwiczenia ...................................................................................................................... 427
8
RS 232C — praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera
Rozdział 11. POSIX .......................................................................................... 435
Polecenie stty ................................................................................................................. 436
Ustawienia kontroli przesyłu danych (sterowanie transmisją) ................................ 437
Ustawienia wejściowe ............................................................................................. 437
Ustawienia wyjściowe ............................................................................................. 439
Ustawienia czasów oczekiwania ............................................................................. 439
Ustawienia lokalne .................................................................................................. 440
Specjalne znaki sterujące ........................................................................................ 441
Łączenie atrybutów ................................................................................................. 442
Podstawowe funkcje obsługi portu szeregowego .......................................................... 442
Funkcja open() ......................................................................................................... 442
Funkcja read() ......................................................................................................... 443
Funkcja write() ........................................................................................................ 443
Funkcja close() ........................................................................................................ 443
Struktura termios ........................................................................................................... 444
Funkcja tcgetattr() ................................................................................................... 448
Funkcja tcsetattr() .................................................................................................... 448
Funkcje cfgetispeed() i cfgetospeed() ..................................................................... 449
Funkcje cfsetispeed() i cfsetospeed() ...................................................................... 449
Funkcja tcflush() ..................................................................................................... 450
Funkcja tcdrain() ..................................................................................................... 451
QNX ............................................................................................................................... 451
Funkcja dev_insert_chars() ..................................................................................... 453
Funkcja dev_ischars() ............................................................................................. 453
Funkcja dev_read() .................................................................................................. 454
Funkcja Receive() ................................................................................................... 455
Funkcja Send() ........................................................................................................ 455
Funkcja Creceive() .................................................................................................. 455
Funkcja Reply() ....................................................................................................... 456
Funkcja qnx_proxy_attach() ................................................................................... 456
Funkcja qnx_proxy_detach() ................................................................................... 456
Podsumowanie ............................................................................................................... 457
Ćwiczenia ...................................................................................................................... 457
Dodatek A Specyfikacja funkcji CreateFile() — operacje plikowe ................... 461
Dodatek B Specyfikacja struktur MODEMDEVCAPS, MODEMSETTINGS
oraz funkcji GetCommModemStatus() ........................................... 467
MODEMDEVCAPS ...................................................................................................... 467
MODEMSETTINGS ..................................................................................................... 470
GetCommModemStatus() .............................................................................................. 471
Dodatek C Transmisja asynchroniczna. Funkcje rozszerzone ........................... 473
Funkcja WriteFileEx() ................................................................................................... 473
Funkcja ReadFileEx() .................................................................................................... 474
Funkcja FileIOCompletionRoutine() ............................................................................. 474
Funkcja SleepEx() ......................................................................................................... 475
Funkcja WaitForSingleObjectEx() ................................................................................ 475
Dodatek D Zamiana liczb z postaci dziesiętnej na binarną .............................. 477
Dodatek E Funkcje CreateThread(), CreateMutex() i CreateSemaphore() ....... 481
Skorowidz .................................................................................... 487
Zgłoś jeśli naruszono regulamin