E-book details

USB. Praktyczne programowanie z Windows API w C++. Wydanie II

USB. Praktyczne programowanie z Windows API w C++. Wydanie II

Andrzej Daniluk

Ebook

USB dobre na wszystko — wykorzystaj jego moc!

  • Standardy USB 2.0 i 3.0 oraz połączone urządzenia, czyli sprzętowa podstawa transmisji danych
  • Transmisja danych w standardzie USB, czyli komunikacja i współdziałanie zasobów systemowych różnych urządzeń
  • Biblioteki i programy wielowątkowe, czyli szczegółowe aspekty programowania transmisji danych w USB

Mniej więcej pod koniec lat 90. standard USB utrwalił się w świadomości użytkowników komputerów na całym świecie i stał się dla nich jednym z najwygodniejszych narzędzi zapewniających komunikację oraz wymianę danych między urządzeniami. Liczba gniazd USB, do których można podłączyć dosłownie wszystko — mysz, pendrive’a, dysk zewnętrzny czy kartę sieciową — stała się jednym z ważnych kryteriów przy zakupie nowego komputera, a czołowi wytwórcy ani myślą zastępować go czymkolwiek innym. Jednak USB ma także swoje wady. Zalicza się do nich konieczność używania bardziej złożonego sprzętu i oprogramowania w porównaniu ze starszymi protokołami transmisji danych. Te kłopoty pomoże Ci rozwiązać niniejsza książka, o ile nieobcy jest Ci język C/C++ w zakresie programowania strukturalnego i proceduralnego. Pokaże Ci ona całą architekturę standardu USB oraz implikacje jego stosowania dla różnych urządzeń. Dzięki niej poznasz także podstawy zasad programowania transmisji USB z wykorzystaniem zasobów systemów operacyjnych Windows oraz współistniejących bibliotek programistycznych. W dodatku autor tego wyczerpującego podręcznika nie poprzestaje na suchym wyliczeniu typów danych czy funkcji, lecz zamieszcza mnóstwo wskazówek dotyczących konkretnych, działających aplikacji. Jeśli myślisz o programowaniu transmisji danych w USB, nie znajdziesz nic lepszego!

  • Standardy bazowe USB 2.0 oraz 3.0
  • Informacje o urządzeniach
  • Wstęp do transmisji danych
  • Urządzenia klasy HID
  • Detekcja i identyfikacja różnych klas urządzeń dołączonych do magistrali USB
  • Odblokowanie urządzenia do transmisji
  • Odczyt i zapis danych
  • Biblioteki WinUSB oraz LibUSB
  • Podstawy programowania obiektowego transmisji USB
  • Wewnętrzne struktury danych
  • Podstawy programowania wielowątkowego transmisji USB
  • Adaptery USB

Poznaj jeden z najpopularniejszych standardów wszech czasów!

Wstęp (7)

Rozdział 1. Standard USB (11)

  • Środowisko fizyczne i sygnałowe USB (13)
    • USB 2.0 (13)
    • USB 3.0 (15)
    • Złącza Mini i Micro (19)
  • Ramki i mikroramki (24)
  • Transfer danych (24)
  • Pakiety USB 2.0 (28)
  • Transakcje USB 2.0 (33)
  • Pakiety w trybie Super Speed (38)
  • Operacje transakcyjne USB 3.0 (46)
    • Porównanie standardów USB 2.0 oraz 3.0 (53)
  • Wireless USB (54)
  • Podsumowanie (56)

Rozdział 2. Informacje o urządzeniach (57)

  • Identyfikatory urządzenia (57)
    • Identyfikatory sprzętu (58)
    • Identyfikatory zgodności (58)
    • Ocena i selekcja pakietów sterowników (58)
  • Klasy instalacji urządzeń (58)
  • Menedżer urządzeń (59)
  • Rejestr systemowy (63)
    • Klucz tematyczny HKEY_LOCAL_MACHINE (64)
    • Podklucz tematyczny \Class (65)
    • Podklucz podklucza tematycznego \Class (66)
    • Identyfikatory GUID (67)
  • Pliki .inf (69)
  • Podsumowanie (71)

Rozdział 3. Wstęp do transmisji danych (73)

  • Struktura systemu USB 2.0 (73)
    • Warstwa funkcjonalna (73)
    • Warstwa fizyczna (74)
    • Warstwa logiczna (75)
  • Struktura systemu USB 3.0 (76)
  • Potoki danych (77)
  • Urządzenia i deskryptory urządzeń USB (80)
  • Koncentratory i deskryptory koncentratorów USB (84)
  • Punkty końcowe i deskryptory punktu końcowego (89)
  • Interfejsy i deskryptory interfejsów urządzeń USB (95)
  • Konfiguracje i deskryptory konfiguracji (100)
  • Deskryptory tekstowe (104)
  • Komunikacja programu użytkownika z urządzeniem (104)
  • Podsumowanie (110)

Rozdział 4. Urządzenia klasy HID (111)

  • Deskryptor raportu (111)
    • Pozycje Collection i End Collection (112)
    • Rodzaje raportów (113)
    • Zawartość raportów (114)
    • Format danych (115)
    • Zakresy wartości danych (115)
    • Jednostki miar (115)
  • Podstawowe funkcje urządzeń klasy HID (116)
    • Funkcje rodziny HidD_Xxx() (117)
    • Funkcje rodziny HidP_Xxx() (125)
  • Biblioteka HID.dll (144)
  • Podsumowanie (147)

Rozdział 5. Detekcja i identyfikacja urządzeń dołączonych do magistrali USB (149)

  • Podstawowe zasoby systemowe (151)
    • Funkcja SetupDiGetClassDevs() (152)
    • Funkcja SetupDiEnumDeviceInterfaces() (152)
    • Struktura SP_DEVINFO_DATA (153)
    • Struktura SP_DEVICE_INTERFACE_DATA (154)
    • Struktura SP_DEVICE_INTERFACE_DETAIL_DATA (155)
    • Funkcja SetupDiGetDeviceInterfaceDetail() (155)
    • Funkcja SetupDiDestroyDeviceInfoList() (157)
    • Detekcja interfejsów urządzeń (157)
    • Zliczanie interfejsów urządzeń (161)
  • Funkcja SetupDiGetDeviceRegistryProperty() (163)
  • Struktury danych (168)
  • Moduł usbiodef.h (174)
  • Moduł cfgmgr32.h (176)
  • Biblioteka Setupapi (182)
  • Powiadamianie o dołączaniu i odłączaniu urządzeń (185)
  • Podsumowanie (189)

Rozdział 6. Odblokowanie urządzenia do transmisji. Odczyt i zapis danych (191)

  • Odblokowanie urządzenia do transmisji (191)
    • Funkcja CreateFile() (192)
    • Funkcja CloseHandle() (194)
    • Przykładowy program środowiska tekstowego (194)
  • Odczyt danych w formie raportu (198)
    • Funkcja ReadFile() (199)
    • Odczyt długości bufora danych (203)
    • Funkcja HidD_GetInputReport() (207)
    • Odczyt własności przycisków (208)
    • Odczyt własności wartości (213)
    • Aplikacja środowiska graficznego (218)
  • Zapis danych w formie raportu (225)
    • Funkcja WriteFile() (225)
    • Funkcje HidD_SetOutputReport() oraz HidD_SetFeature() (226)
  • Struktura OVERLAPPED (227)
    • Funkcje xxxEx (230)
  • Struktura COMMTIMEOUTS (234)
    • Funkcje GetCommTimeouts() i SetCommTimeouts() (235)
  • Funkcja DeviceIoControl() (236)
    • Rozkazy z modułu hidclass.h (242)
  • Rozkazy z modułu usbioctl.h (245)
    • Identyfikacja urządzeń przyłączonych do koncentratora USB (247)
  • Struktura URB (262)
    • Funkcja UsbBuildGetDescriptorRequest() (267)
  • Podsumowanie (268)
  • Ćwiczenia (268)

Rozdział 7. Biblioteki WinUSB oraz LibUSB (271)

  • Biblioteka WinUSB (271)
    • Przygotowanie pakietu instalacyjnego (272)
    • Funkcje eksportowe biblioteki WinUSB (277)
  • Biblioteka LibUSB (289)
    • Funkcje jądra biblioteki (292)
    • Funkcje do zarządzania urządzeniem libusb (293)
    • Funkcje realizujące transfer masowy (300)
    • Funkcje realizujące transfer przerwaniowy (301)
    • Funkcje asynchroniczne (301)
  • Podsumowanie (305)

Rozdział 8. Programowanie obiektowe transmisji USB (307)

  • Obiektowość (307)
  • Wzorce projektowe (314)
    • Singleton (314)
  • Interfejsy (319)
    • Zliczanie odwołań do interfejsu (326)
    • Identyfikator interfejsu (327)
  • Komponenty wizualne (336)
  • Podsumowanie (340)
  • Ćwiczenia (340)

Rozdział 9. Wewnętrzne struktury danych (351)

  • Program proceduralny (352)
  • Program obiektowy (359)
  • Aplikacja środowiska graficznego (366)
  • Podsumowanie (375)
  • Ćwiczenia (375)

Rozdział 10. Programy wielowątkowe (379)

  • Wątki i procesy (379)
  • Funkcja CreateThread() (381)
  • Klasa TThread (389)
  • Podsumowanie (397)
  • Ćwiczenia (397)

Rozdział 11. Adaptery USB (401)

  • Adaptery USB/RS 232C (401)
    • Właściwości portu adaptera (402)
  • Adaptery USB/IEEE-488 (404)
  • Adaptery USB/Bluetooth (405)
  • Podsumowanie (413)

Literatura (415)

Skorowidz (417)

  • Title: USB. Praktyczne programowanie z Windows API w C++. Wydanie II
  • Author: Andrzej Daniluk
  • ISBN: 978-83-246-7499-2, 9788324674992
  • Date of issue: 2013-06-07
  • Format: Ebook
  • Item ID: usbpro
  • Publisher: Helion