Praktična upotreba USB interfejsa u PIC kontrolerima. Programiranje najjednostavnijih USB uređaja u Delphiju Promijenite naziv uređaja u svoj

Kao što je spomenuto, Windows operativni sistemi pružaju softversku podršku za USB uređaje. Obradu tokova podataka USB uređaja na nivou operativnog sistema vrši skup standardnih drajvera koji obavljaju osnovne funkcije kontrole i razmene podataka između svih USB uređaja i sistema.

Ako trebate napisati softver za USB uređaj koji bi proširio njegove mogućnosti obrade podataka, tada možete odabrati jedan od tri moguća puta:

napišite vlastiti drajver uređaja koji bi pružao sve potrebne funkcije kontrole i razmjene podataka, te program koji bi komunicirao sa ovim drajverom u korisničkom modu. U ovom slučaju možete potpuno bez standardnih sistemskih drajvera;

napišite upravljački program filtera koji pruža potrebnu funkcionalnost, ali se nalazi u stogu drajvera iznad sistemskih drajvera. Dakle, sve standardne funkcije obrade bi obavljali USB drajveri instalirani od strane sistema, a dodatne funkcije bi obezbedio vaš drajver filtera, sa kojima bi korisnički program bio u interakciji;

koristite besplatne biblioteke funkcija i drajvera

za pristup USB uređaju.

U većini slučajeva može biti potreban softverski pristup USB uređaju ako uređaj obavlja vrlo specifičnu funkciju. Na primjer, na bazi USB-a su razvijeni "elektronski osciloskopi" ili sistemi za akviziciju podataka, za rad sa kojima je potrebno imati pristup samom uređaju. U većini ovih slučajeva možete koristiti besplatne biblioteke funkcija koje će raditi u gotovo svim popularnim programskim okruženjima. Na primjer, pod okriljem GNU-a, razvijen je softver poznat kao LibUsb, koji uključuje neophodne drajvere i biblioteke funkcija za rad na Windows i Linux operativnim sistemima. Ove biblioteke funkcija su veoma popularne i omogućavaju vam da brzo razvijete programe koji komuniciraju sa vašim uređajem kroz skup standardnih funkcija. Ovo eliminira potrebu za pisanjem vlastitog drajvera uređaja, što značajno štedi vrijeme.

Osim toga, većina korisnika nije upoznata s metodologijom razvoja drajvera,

a ovo je vrlo složeno područje programiranja, tako da će dostupnost takvog softvera koji se može slobodno distribuirati biti od neprocjenjive pomoći širokom krugu korisnika. Na osnovu projekta LibUsb razvijeni su omoti za rad sa Visual Basic .NET i C# .NET, od kojih je najpopularniji LibUsbDotNet, takođe razvijen pod okriljem slobodnog softvera. Unatoč naizgled složenosti programiranja USB uređaja, navedeni softver čini ovaj zadatak toliko lakim da ga mogu obaviti čak i početnici. Pogledajmo praktične primjere kako raditi s vašim USB uređajima i počnimo sa softverskim paketom LibUsb. Inače, gore navedeni softver može se besplatno preuzeti sa www.sourceforge.net ili sa brojnih duplikata sajtova.

Kako raditi sa LibUsb USB bibliotekama funkcija? Biblioteka je izgrađena na ovaj način

zom tako da možete obavljati osnovne operacije vezane za USB uređaj:

identifikacija ili, drugim riječima, nabrajanje. Kada se izvrši ova operacija, detektuju se uređaji povezani na USB magistralu, što se izvodi pomoću odgovarajućih funkcija biblioteke libusb;

dobijanje parametara uređaja (identifikatora uređaja, podataka proizvođača i karakteristika uređaja), za koje postoji niz funkcija u biblioteci;

otvaranje, zatvaranje, čitanje i pisanje podataka, slanje komandi. USB uređaj, baš kao i drugi objekti u sistemu datoteka, može biti dostupan za čitanje-upisivanje, što se radi pomoću odgovarajućih bibliotečkih funkcija.

Sve gore navedene karakteristike mogu se implementirati pozivanjem odgovarajućih libusb funkcija, ali one neće biti navedene ovdje, jer bi zauzele previše prostora; vidjet ćemo kako koristiti neke od ovih funkcija

Rice. 6.10

Lokacija drajvera libusb0.sys u stogu drajvera uređaja

cije na praktičnim primjerima. Čitaoci mogu pronaći opis svih funkcija u odgovarajućoj dokumentaciji. Da vas podsjetim da razmatramo upotrebu libusb funkcija u Windows operativnim sistemima.

Prilikom instaliranja distributivnog kompleta sa libusb-om u Windows operativni sistem, libusb0.sys drajver filtera je instaliran u sistemu. Ovaj drajver će se nalaziti na vrhu steka drajvera sistema, što je lako videti, na primer, gledanjem informacija o drajveru za bilo koji USB uređaj (Slika 6.10).

Osim toga, za pristup drajveru iz korisničkih programa, u sistem se instalira biblioteka libusb0.dll koja se može koristiti za razvoj korisničkih programa.

Rice. 6.17

Prikaz prozora aplikacije tokom deinstalacije

USB uređaji iz sistema

Uvod
Za koga je ova knjiga
Šta ćete naći u knjizi
Softverski zahtjevi
Hardverski zahtjevi
O programskom kodu
Sažetak poglavlja
Oznake
Priznanja
Povratne informacije
Dio I. Uvod u USB
Poglavlje 1. USB specifikacija
1.1. Šta je USB i zašto je potreban
1.1.1. Uobičajena USB arhitektura
1.1.2. USB fizička i logička arhitektura
1.1.3. USB komponente
1.1.4. Svojstva USB uređaja
1.1.5. Principi prijenosa podataka
1.1.6. Mehanizam prekida
1.1.7. Načini prijenosa podataka
1.1.8. Logički nivoi razmjene podataka
1.1.8.1. Nivo klijentskog softvera
1.1.8.2. Nivo upravljačkog programa USB sistema
1.1.8.3. Interfejs sloja host kontrolera
1.1.8.4. Nivo USB periferne magistrale
1.1.8.5. Nivo USB logičkog uređaja
1.1.8.6. Funkcionalni nivo USB uređaja
1.1.9. Prijenos podataka po sloju
1.1.10. Vrste prijenosa podataka
1.1.11. Osoblje
1.1.12. Krajnje tačke
1.1.13. Kanali
1.1.14. Paketi
1.1.14.1. Format token paketa IN, OUT, SETUP i PING
1.1.14.2. SOF format paketa
1.1.14.3. Format paketa podataka
1.1.14.4. Format paketa potvrde
1.1.14.5. SPLIT format paketa
1.1.15. Čekovni zbroj
1.1.15.1. CRC algoritam izračunavanja
1.1.15.2. Softverski CRC proračun
1.1.16. Transakcije
1.1.16.1. Vrste transakcija
1.1.16.2. Potvrda transakcije i kontrola toka
1.1.16.3. Transaction Protocols
1.2. Zahtjevi prema USB uređajima
1.2.1. Konfiguracijski paket
1.2.2. Standardni zahtjevi za USB uređaje
1.2.2.1. Dobivanje stanja GET_STATUS
1.2.2.2. Resetiranje svojstva CLEAR_FEATURE
1.2.2.3. SET_FEATURE Rezolucija svojstva
1.2.2.4. Postavljanje adrese na SET_ADDRESS sabirnici
1.2.2.5. Dobivanje deskriptora GET_DESCRIPTOR
1.2.2.6. Prenošenje deskriptora SET_DESCRIPTOR
1.2.2.7. Dobivanje konfiguracijskog koda GET_CONFIGURATION
1.2.2.8. Postavljanje konfiguracijskog koda SET_CONFIGURATION
1.2.2.9. Dobivanje koda za konfiguraciju GET_INTERFACE sučelja
1.2.2.10. Postavljanje koda za podešavanje interfejsa SET_INTERFACE
1.2.2.11. Postavljanje broja okvira SYNC_FRAME
1.2.2.12. Obrada standardnih zahtjeva
1.2.3. Deskriptor uređaja
1.2.3.1. Deskriptor uređaja
1.2.3.2. Kvalificirajući deskriptor uređaja
1.2.3.3. Deskriptor konfiguracije
1.2.3.4. Deskriptor interfejsa
1.2.3.5. Deskriptor krajnje tačke
1.2.3.6. Deskriptor niza
1.2.3.7. Specifični deskriptori
1.2.3.8. Redoslijed dobijanja deskriptora
1.3. Plug and Play (PnP) sistem
1.3.1. Konfigurisanje USB uređaja
1.3.2. Numerisanje USB uređaja
1.3.3. PnP identifikatori za USB uređaje
1.3.4. Simbolični nazivi uređaja
1.4. WDM model
Poglavlje 2. Programiranje u jeziku C za mikrokontroler
2.1. Opće informacije o jeziku C za mikrokontrolere
2.2. Korištenje standardnih biblioteka
2.3. Programiranje za AT89C5131
2.3.1. Datoteka za inicijalizaciju
2.3.2. Deskriptorske strukture
2.3.3. Struktura projekta
Poglavlje 3. Alati
3.1. Programeri
3.1.1. Flip programer
3.1.2. ER-Tronik programator
3.2. Alati za kreiranje drajvera
3.2.1. NuMega Driver Studio
3.2.2. Jungo windriver
3.2.3. Jungo KernelDriver
3.3. Microsoft Visual Studio Tools
3.3.1. Ovisi (Dependency Walker)
3.3.2. Error Lookup
3.3.3. GuidGen
3.4. Microsoft DDK alati
3.4.1. DeviceTree
3.4.2. DevCon
3.4.2.1. Ključ za klase
3.4.2.2. Driverfiles ključ
3.4.2.3. Hwids ključ
3.4.2.4. Ponovno skeniranje ključa
3.4.2.5. Stack ključ
3.4.2.6. Statusni ključ
3.4.3. Chklnf i Genlnf
3.5. Alati kompanije CompuWare Corporation
3.5.1. Monitor
3.5.2. SymLink
3.5.3. EzDriverlnstaller
3.5.4. WdmSniff
3.6. Syslnternals Tools
3.6.1. WinObj
3.7. USB Forum Tools
3.7.1. HID deskriptor alat
3.8. USB Command Verifier
3.9. HDD softverski alati
3.10. Sourceforge Tools
3.11. Program za praćenje autobusa
Poglavlje 4. Principi korištenja Win32 funkcija u .NET-u
4.1. Opće informacije
4.2. Uvoz Win32 funkcija
4.3. Strukture
4.3.1. StructLayout Attribute
4.3.2. MarshalAs Attribute
4.4. Direktan pristup podacima
4.5. Rukovanje Windows porukama
4.6. Razumijevanje WMI
4.7. Online resursi za ovo poglavlje
Dio II. USB Classes
Poglavlje 5. CDC klasa
5.1. Metode za pretvaranje USB / RS-232 interfejsa
5.2. Opšte informacije o RS-232 interfejsu
5.2.1. Razmjena linija
5.2.1.1. Preneseni podaci (BA / TxD / TD)
5.2.1.2. Primljeni podaci (BB / RxD / RD)
5.2.1.3. Zahtjev za slanje (CA / RTS)
5.2.1.4. Spremno za slanje (CB / CTS)
5.2.1.5. DCE spremnost (CC / DSR)
5.2.1.6. DTE spreman (CD / DTR)
5.2.1.7. Indikator poziva (CE / RI)
5.2.1.8. Otkrivanje nosioca (CF / DCD)
5.2.1.9. Spremnost za primanje (CJ)
5.3. CDC specifikacija
5.3.1. Standardni deskriptori
5.3.2. Funkcionalni deskriptori
5.3.2.1. Deskriptor funkcije zaglavlja
5.3.2.2. Deskriptor komandnog režima
5.3.2.3. Apstraktni deskriptor uređaja
5.3.2.4. Deskriptor grupisanja
5.3.3. Posebni zahtjevi
5.3.3.1. SET_LINE_CODING upit
5.3.3.2. Zahtjev GET_LINE_CODING
5.3.3.3. SET_CONTROL_LINE_STATE upit
5.3.3.4. SEND_BREAK zahtjev
5.3.4. Obavještenja
5.3.4.1. RING ^ DETECT obavještenje
5.3.4.2. SERIAL_STATE obavještenje
5.4. Windows CDC podrška
5.4.1. Pregled funkcija Windows serijskog porta
5.4.1.1. Osnovne lučke operacije
5.4.1.2. Funkcije podešavanja porta
5.4.1.3. Prilagođeno podešavanje porta
5.4.1.4. Dobivanje statusa modemskih linija
5.4.1.5. Rad sa CDC-om na platformi. NET
5.4.2. Korespondencija između Windows funkcija i USB zahtjeva
Poglavlje 6. HID klasa
6.1. HID specifikacija uređaja
6.2. Procedura za razmjenu podataka sa HID uređajem
6.3. Instaliranje upravljačkog programa HID uređaja
6.4. Identifikacija HID uređaja
6.4.1. Identifikacija uređaja za pokretanje
6.4.2. Deskriptor konfiguracije HID uređaja
6.4.3. HID deskriptor
6.4.4. Deskriptor izvještaja
6.5. Struktura deskriptora izvještaja
6.5.1. Elementi izvještaja
6.5.1.1. Elementi kratkog tipa
6.5.1.2. Elementi dugačkog tipa
6.5.2. Izvještaj o tipovima stavki
6.5.2.1. Glavni elementi
6.5.2.2. Globalni elementi
6.5.2.3. Lokalni elementi
6.5.3. Primjeri deskriptora
6.6. Zahtjevi prema HID uređaju
6.6.1. GET_REPORT zahtjev
6.6.2. SET_REPORT zahtjev
6.6.3. GET_IDLE zahtjev
6.6.4. SET_IDLE upit
6.6.5. GET_PROTOCOL zahtjev
6.6.6. SET_PROTOCOL upit
6.7. Instrumenti
6.8. Drajveri za HID uređaje u Windows-u
Poglavlje 7. Druge USB klase
Dio III. Praksa USB programiranja
Poglavlje 8. Kreiranje USB uređaja zasnovanog na AT89C5131
8.1. Opće informacije o AT89C5131
8.2. Strukturni dijagram AT89S5131
8.3. USB registri AT89C5131
8.3.1. USBCON registar
8.3.2. USBADDR registar
8.3.3. USBINT registar
8.3.4. USBIEN registar
8.3.5. UEPNUM registar
8.3.6. UEPCONX registar
8.3.7. UEPSTAX registar
8.3.8. UEPRST registar
8.3.9. UEPINT registar
8.3.10. UEPIEN registar
8.3.11. UEPDATX registar
8.3.12. UBYCTLX registar
8.3.13. UFNUML registar
8.3.14. UFNUMH registar
8.4. Krug AT89S5131
8.5. Osnovni dizajn za AT89C5131
8.5.1. Prva verzija programa za AT89C5131
8.5.2. Dodavanje string deskriptora
8.5.3. Dodavanje krajnjih tačaka
8.6. Preuzimanje programa
Poglavlje 9. Implementacija CDC klase
9.1. Implementacija CDC-a
9.2. Deskriptori uređaja
9.2.1. Inicijalizacija krajnje tačke
9.2.2. Obrada CDC zahtjeva
9.2.3. Konfigurisanje RS-porta i CDC-linije
9.2.4. Prijem i prijenos podataka
9.3. Instalacija drajvera
9.4. Programiranje razmjene podataka sa CDC uređajem u Delphiju
9.5. Programiranje razmjene sa CDC uređajem u C #
9.5.1. Korištenje MSCOMM komponente
9.5.2. Korištenje Win32 funkcija
9.6. CDC problemi
Poglavlje 10. Implementacija HID klase
10.1. Implementacija HID-a na AT89C5131
10.2. Prijenos više bajtova
10.3. Izvještaji o značajkama
10.4. Prijenos podataka sa hosta (SET_REPORT)
10.5. Instalacija HID uređaja
10.6. Komunikacija sa HID uređajem
10.6.1. Dobivanje imena HID uređaja
10.6.2. Dobivanje atributa uređaja i čitanje izvještaja
10.6.3. Prijenos podataka od hosta do HID-a
10.7. Primjeri HID uređaja
10.7.1. Implementacija uređaja miša
10.7.2. Implementacija tastaturnog uređaja
10.8. Korištenje HID protokola
10.8.1. Interpretiranje podataka
10.8.2. Zbirke
10.8.3. Nizovi i dugmad
10.9. HID uređaj sa više izvještaja
Poglavlje 11. Posebne Windows funkcije
11.1. Postavljanje API funkcija
11.1.1. Nabrajanje USB uređaja
11.1.2. Dobijanje statusa USB uređaja
11.2. Nabrajanje USB uređaja koristeći WMI
11.3. Posebne karakteristike Windows XP-a
11.3.1. HidD_GetInputReport - čitanje HID izvještaja
11.3.2. Primanje sirovih ulaznih podataka
11.4. DirectX funkcije
11.5. Dijalog za dodavanje nove opreme
11.6. Rad sa simboličkim nazivima uređaja
11.7. Bezbjedno uklonite fleš diskove
11.8. Detekcija dodavanja i uklanjanja uređaja
11.9. Internet resursi
Poglavlje 12. Razvoj drajvera
12.1. Osnovne procedure WDM drajvera
12.1.1. DriverEntry procedura
12.1.2. AddDevice procedura
12.1.3. Postupak istovara
12.1.4. Operativne procedure drajvera
12.1.4.1. Zaglavlje paketa
12.1.4.2. I/O stek ćelije
12.4.1.3. Operativne procedure drajvera
12.1.5. Usluživanje IOCTL zahtjeva
12.2. Učitavanje drajvera i pristup procedurama za drajver
12.2.1. Procedura vozača
12.2.2. Registracija vozača
12.2.2.1. Registracija kod SCM menadžera
12.2.2.2. Parametri drajvera u registru
12.2.3. Pozivajući se na operativne procedure
12.2.4. Pohranjivanje drajvera unutar izvršne datoteke
12.3. Kreiranje drajvera sa Driver Studio-om
12.3.1. Nekoliko riječi o biblioteci Driver Studio
12.3.1.1. KDriver class
12.3.1.2. Klasa KDevice
12.3.1.3. Klrp class
12.3.1.4. Klasa KRegistryKey
12.3.1.5. KLowerDevice Class
12.3.1.6. USB Classes
12.3.2. Druge klase vozačkog studija
12.3.3. Kreiranje predloška drajvera sa Driver Studio-om
12.3.3.1. Korak 1. Postavljanje imena i putanje projekta
12.3.3.2. Korak 2. Odabir arhitekture drajvera
12.3.3.3. Korak 3. Odabir gume
12.3.3.4. Korak 4. Postavljanje skupa krajnjih tačaka
12.3.3.5. Korak 5. Postavljanje klase i naziva datoteke
12.3.3.6. Korak 6. Odaberite funkcije drajvera
12.3.3.7. Korak 7. Odabir načina obrade zahtjeva
12.3.3.8. Korak 8. Kreirajte sačuvane postavke drajvera
12.3.3.9. Korak 9. Svojstva drajvera
12.3.3.10. Korak 10. Postavljanje IOCTL kodova
12.3.3.11. Korak 11. Dodatne postavke
12.3.4. Izmjena predloška drajvera
12.3.5. Metode osnovne klase uređaja
12.3.6. Implementacija čitanja podataka
12.3.7. Instalacija drajvera
12.3.8. Čitač podataka
12.3.9. Čitanje podataka sa drugih tipova krajnjih tačaka
12.3.10. Očistite upravljački program USB uređaja
dio IV. Imenik
Poglavlje 13. INF format datoteke
13.1. Struktura INF datoteke
13.1.1. Odjeljak verzija
13.1.2. Sekcija proizvođača
13.1.3. Odjeljak DestinationDirs
13.1.3.1. DefaultDescDir ključ
13.1.3.2. Tipke za sekciju liste datoteka
13.1.3.3. Dirid ključ
13.1.3.4. Poddir ključ
13.1.4. Odjeljak opisa modela
13.1.5. Odjeljak xxx. AddRegw xxx. DelReg
13.1.6. Odjeljak xxx. LogConfig
13.1.7. Odjeljak xxx. CopyFiles
13.1.8. Strings dio
13.1.9. Veze sekcija
13.2. Kreiranje i testiranje INF fajlova
13.3. Instaliranje uređaja pomoću INF datoteke
13.4. USB grane registra
Poglavlje 14. Osnovne Windows funkcije
14.1. Funkcije CreateFile i CloseHandle: Otvaranje i zatvaranje objekta
14.1.1. Dodatne informacije
14.1.2. Povratna vrijednost
14.1.3. Nazovi primjer
14.2. ReadFile funkcija: čitanje podataka
14.2.1. Dodatne informacije
14.2.2. Povratna vrijednost
14.2.3. Nazovi primjer
14.3. Funkcija Write File: prijenos podataka
14.3.1. Dodatne informacije
14.3.2. Povratna vrijednost
14.3.3. Nazovi primjer
14.4. ReadFileEx funkcija. APC čita podatke
14.4.1. Povratna vrijednost
14.4.2. Dodatne informacije
14.4.3. Nazovi primjer
14.5. WriteFiieEx funkcija: APC prijenos podataka
14.5.1. Povratna vrijednost
14.5.2. Pozovite primjer
14.6. WaitForSingieObject funkcija čeka stanje signala objekta
14.6.1. Povratna vrijednost
14.7. WaitForMultipleObjects Funkcija: Čeka se stanje signala objekata
14.7.1. Povratna vrijednost
14.8. Funkcija GetOverlapped Result: rezultat asinkrone operacije
14.8.1. Povratna vrijednost
14.9. DeviceloControl funkcija: direktna kontrola vozača
14.9.1. Povratna vrijednost
14.10. Otkaži / o funkcija: prekinuti operaciju
14.10.1. Povratna vrijednost
14.11. Upit Dos Device funkcija, dobivanje naziva uređaja po njegovom DOS imenu
14.11.1. Povratna vrijednost
14.11.2. Nazovi primjer
14.12. Definiši funkciju Dos uređaja: operacije sa imenom DOS uređaja
14.12.1. Povratna vrijednost
14.12.2. Nazovi primjer
Poglavlje 15. Windows strukture i funkcije za serijske portove
15.1. Struktura postavki porta COMMCONFIG
15.2. COMMPROP Struktura svojstava porta
15.3. COMMTIMEOUTS struktura vremenskog ograničenja
15.4. Struktura statusa porta COMSTAT
15.5. DCB struktura
15.6. BuildCommDCB funkcija: Izgradite DCB strukturu iz niza
15.6.1. Dodatne informacije
15.6.2. Povratna vrijednost
15.6.3. Pozovite primjer
15.7. Funkcija BuildCommDCBAndTimeouts: Izgradite DCB strukturu i vremenska ograničenja iz niza
15.8. Funkcije SetCommBreak i ClearCommBreak: Kontrola izlaza podataka
15.8.1. Povratna vrijednost
15.9. ClearCommError funkcija: Get and Reset Port Errors
15.9.1. Povratna vrijednost
15.10. EscapeCommFunction: kontrola porta
15.10.1. Povratna vrijednost
15.11. Funkcije GetCommMask i SetCommMask: maska ​​poziva događaja
15.11.1. Povratna vrijednost
15.12. WaitCommEvent funkcija čeka na događaj COM porta
15.12.1. Povratna vrijednost
15.12.2. Dodatne informacije
15.12.3. Nazovi primjer
15.13. Funkcije GetCommConfig i SetCommConfig: Konfiguriranje parametara porta
15.13.1. Povratna vrijednost
15.13.2. Pozovite primjer
15.14. CommConfigDialog Funkcija: Dijalog za konfiguraciju porta
15.14.1. Povratna vrijednost
15.14.2. Dodatne informacije
15.14.3. Pozovite primjer
15.15. Funkcija GetCommProperties: čitanje svojstava porta
15.15.1. Povratna vrijednost
15.15.2. Nazovi primjer
15.16. GetCommState i SetCommState funkcije: Port State
15.16.1. Povratna vrijednost
15.16.2. Nazovi primjer
15.17. Funkcije GetCommTimeouts i SetComniTimeouts: Vremenska ograničenja porta
15.17.1. Povratna vrijednost
15.17.2. Nazovi primjer
15.18. Funkcija PurgeComm: ispiranje bafera portova
15.18.1. Povratna vrijednost
15.18.2. Nazovi primjer
15.19. Funkcija SetupComm: Konfiguriranje veličina bafera
15.19.1. Povratna vrijednost
15.20. Funkcije GetDefaultCommConfig i SetDefaitltCommConfig: Podrazumevane postavke porta
15.20.1. Povratna vrijednost
15.21. Funkcija TransmitCommChar. prijenos posebnih znakova
15.21.1. Povratna vrijednost
15.22. Funkcija GetCommModemStatus: status modema
15.22.1. Povratna vrijednost
15.22.2. Nazovi primjer
15.23. Funkcija EnumPorts: nabrajanje portova
15.23.1. Dodatne informacije
15.23.2. Povratna vrijednost
15.23.3. Nazovi primjer
Poglavlje 16. Strukture i funkcije Windows Setup API-ja
16.1. Podešavanje DiGetCiassDevs: Enumerate Devices
16.1.1. Povratna vrijednost
16.2. Funkcija SetupDiDestroyDevicelnfoList oslobađa blok opisa uređaja
16.2.1. Povratna vrijednost
16.3. Funkcija SetupDiEnumDevicelinterfaces: informacije o uređaju
16.3.1. Povratna vrijednost
16.4. Funkcija SetupDiGetDevicelnterfaceDetaii: detalji o uređaju
16.5. Funkcija SetupDiEnumDevicelnfo: informacije o uređaju
16.6. Funkcija SetupDiGetDeviceRegistryProperty: Dobijte svojstva Plug and Play uređaja
16.7. CM_Get_DevNode_Status funkcija: status uređaja
16.8. CM_Request_Device_Eject funkcija za sigurno uklanjanje uređaja
Poglavlje 17. Windows HID API strukture i funkcije
17.1. HidD_Hello funkcija: provjeravanje biblioteke
17.2. Funkcija HidD_JetHidGuid: dobivanje GUID-a
17.3. Funkcija HidD_GetPreparsedData: kreirajte deskriptor uređaja
17.4. HidD_EreePreparsedData funkcija: oslobađanje ručke uređaja
17.5. Funkcija HidD_Get Feature: dobivanje izvještaja o značajkama
17.6. Funkcija HidD_SetFeature: prijenos Feature-reporta
17.7. Funkcija HidD_GetNumlnputBuffers: dobivanje broja bafera
17.8. Funkcija HidD_SetNumlnputBuffers: postavljanje broja bafera
17.9. Funkcija HidD_GetAttributes: dobivanje atributa uređaja
17.10. Funkcija HidD_GetManufacturerString. dobiti proizvođački niz
17.11. Funkcija HidD_GetProductString dobiva niz proizvoda
17.12. Funkcija HidD_GetSerialNumberString. dobijanje niza serijskih brojeva
17.13. Funkcija HidD_GetIndexedString. dobijanje niza po indeksu
17.14. HidD_Jetlnput Report funkcija dobivanje ulaznog izvještaja
17.15. Funkcija HidD_SetOutputReport. prijenos izlaznog izvještaja
17.16. Funkcija HidP_GetCaps: dobivanje svojstava uređaja
17.17. Funkcija HidP_MaxDataListLength: dobivanje veličina izvještaja
17.18. HidD_FIushQueue funkcija: ispiranje bafera
17.19. Funkcija HidP_GetLinkColiectionNodes: stablo kolekcije
17.20. Funkcije HidP_GetScaledUsageValue u HidP_SetScaledUsage Value: Dobijte i postavite transformirane vrijednosti
17.21. Funkcija HidF_MaxUsageListLength: veličina bafera za šifre ključeva
17.22. Funkcija HidP_UsageListDifference: razlika između nizova
Prijave
Dodatak 1. Dodatne funkcije
Dodatak 2. Kompilacija primjera u drugim Delphi verzijama
Dodatak 3. Tabela identifikatora jezika (LangID)
Dodatak 4. Tabela kodova proizvođača (ID dobavljača, ID uređaja)
Dodatak 5. Kako kreirati prečicu za upravitelja uređaja
Dodatak 6. Često postavljana pitanja
Dodatak 7. Opis CD-a
Književnost
Predmetni indeks

USB programiranje

Programiranje uređaja za podešavanje satelitskih antena SF-50 preko USB porta razlikuje se od programiranja preko RS-232 porta samo po načinu prenosa podataka sa uređaja na računar i sa računara na uređaj. Prilikom programiranja preko USB-a koristi se prijenosni USB uređaj za pohranu (fleš disk). Ovo je zgodno kada, na primjer, vaš računar ili, češće, laptop (netbook) nema serijski RS-232 port na svom kućištu.
Za programiranje uređaja pomoću USB sticka trebat će vam:
- USB uređaj za skladištenje (fleš disk) formatiran u sistemu datoteka FAT-32;
- AliEditor editor program, koji se nalazi u folderu Database_editor_new u odeljku softvera OPENBOX SF-50.

Prije početka programiranja potrebno je prenijeti bazu podataka sa uređaja na računar. Da biste to učinili, uključite uređaj, spojite USB fleš disk na USB priključak. Izvrši MENU - Sistem - Sačuvaj na USB,

Izađite iz menija pritiskom na dugme MENU dok se ne pojavi trenutni kanal, ili dok se ne pojavi slika glavnog menija, ako još nema kanala, i uklonite USB fleš disk. Umetnite USB fleš disk u računar.
Pokrenite program Editor.exe iz mape Database_editor_new i otvorite sliku na USB fleš disku u njoj.

Kada se od vas zatraži da odaberete bazu podataka, odaberite Baza podataka korisnika.

Kliknite OK. Odaberite Sve usluge, otvorit će se lista svih skeniranih i sačuvanih TV, radio i servisnih kanala dostupnih u bazi podataka.

Uredite kanale kako vam odgovara, na primjer, ostavite otvorene samo kanale.
Na tastaturi računara držite pritisnuto dugme Shift, pritisnite "strelicu nadole" i izaberite kanale koje želite da izbrišete. Pritisnite Delete da obrišete izbor.

Da biste uredili postavke satelita, odaberite Sve usluge - Satelitske informacije - EUTELSAT W4, W7, pritisnite ENTER.

Po potrebi uredite vrijednosti u anteni 1.
Za brisanje transpondera idite na nepotreban i pritisnite dugme Delete na tastaturi računara, potvrdite izabranu akciju.

Da dodate transponder, stanite na ime satelita, pritisnite desnu tipku miša i odaberite Dodaj informaciju (ili označavanjem satelita pritisnite tipku Insert na tastaturi).

Unesite podatke za novi transponder, uzimajući ih, na primjer, na web stranicu lyngsat.com.

Kliknite OK, provjerite je li transponder registriran.

Da biste dodali satelit, idite na liniju Satellite Information, pritisnite tipku Insert na tastaturi i unesite parametre novog satelita.

zatvorite program za uređivanje, uklonite disk.
Umetnite drajv u OPENBOX SF-50 uređaj, pratite redosled MENU - Sistem - Ažuriranje sa USB-a, izaberite režim "SAT & TP lista".

Odaberite Start. Potvrdite svoje namjere.

Uređaj će ažurirati bazu i ponovo se pokrenuti. Nakon ponovnog pokretanja, morat ćete podesiti ruski jezik menija na novi način u postavkama. Vratite uređaj na tvorničke postavke.
Izađite iz menija podešavanja tako što ćete dvaput pritisnuti dugme MENU. Pritisnite dugme OK na trenutnom kanalu i proverite da li je lista kanala uređena.

Također možete provjeriti da li je lista transpondera i satelita također uređena.
Programiranje je završeno.

USB (Universal Serial Bus) magistrala pojavila se 15. januara 1996. godine, kada su prvu verziju standarda odobrili Intel, DEC, IBM, NEC, Northen Telecom i Compaq.

Glavni cilj standardnog seta za njegove programere je stvoriti mogućnost za korisnike da rade u Plug & Play modu sa perifernim uređajima. To znači da bi trebalo da postoji odredba za povezivanje uređaja sa računarom koji radi, automatski ga prepoznaje odmah nakon povezivanja i zatim instalira odgovarajuće drajvere. Osim toga, poželjno je napajati uređaje male snage iz same magistrale. Brzina sabirnice bi trebala biti dovoljna za veliku većinu perifernih uređaja. USB kontroler treba da zauzme samo jedan prekid, bez obzira na broj uređaja povezanih na magistralu, odnosno da riješi problem nedostatka resursa na internim magistralama IBM PC-a kompatibilnog računala.

Gotovo svi zadaci su riješeni u USB standardu, a u proljeće 1997. počeli su se pojavljivati ​​računari opremljeni konektorima za povezivanje USB uređaja. Sada je USB postao toliko aktivno implementiran od strane proizvođača kompjuterske periferije da, na primjer, u Apple Computers iMAC postoji samo USB kao eksterna magistrala.

Karakteristike USB 1.0 su sljedeće:

1.velika brzina razmjene podataka (puna brzina) - 12 Mb to/with;

2. maksimalna dužina kabla za visoku stopu razmene je 5 metara;

3.niska brzina razmjene podataka (mala brzina) - 1,5 Mb to/with;

4. maksimalna dužina kabla za niski kurs je 3 metra;

5. maksimalan broj priključenih uređaja je 127;

6. Moguće istovremeno povezivanje uređaja sa različitim kursevima;

8. Maksimalna potrošnja struje po uređaju je 500 mA.

Stoga je preporučljivo povezati gotovo sve periferne uređaje na USB 1.0, osim digitalnih video kamera i brzih tvrdih diskova. Ovo sučelje je posebno pogodno za povezivanje uređaja koji se često povezuju/isključuju kao što su digitalni fotoaparati.
Mogućnost korištenja samo dvije brzine prijenosa ograničava korištenje magistrale, ali značajno smanjuje broj linija interfejsa i pojednostavljuje implementaciju hardvera.
Napajanje direktno sa USB-a moguće je samo za uređaje male snage kao što su tastature, miševi, džojstici itd.

USB signali se prenose preko 4-žičnog kabla, šematski prikazanog na donjoj slici:

Slika 2.6.1 - USB signalne žice

Ovdje je GND zajednički žičani krug za napajanje perifernih uređaja, Vbus - +5 V također za krugove napajanja. D + sabirnica služi za prenos podataka na magistralu, a D- sabirnica za prijem podataka.
Kabl za podršku sabirnice pune brzine je upredena parica, oklopljena i može se koristiti i za rad pri malim brzinama. Kabel za rad samo pri minimalnoj brzini (na primjer, za povezivanje miša) može biti bilo koji i neoklopljen.
Konektori koji se koriste za povezivanje perifernih uređaja podijeljeni su u serije: konektori serije “A” (utikač i utičnica) namijenjeni su samo za povezivanje sa izvorom kao što je kompjuter, konektori serije “B” (utikač i utičnica) su samo za povezivanje na periferni uređaj.

USB konektori imaju sledeći broj pinova prikazan u tabeli 2.6.1.

Tabela 2.6.1 - Svrha i označavanje USB kontakata

Godine 1999. isti konzorcij kompjuterskih kompanija koji je inicirao razvoj prve verzije standarda za USB sabirnicu počeo je aktivno razvijati verziju 2.0 USB-a, koja se odlikuje uvođenjem dodatne brze (Hi-speed) način rada. Propusni opseg magistrale je povećan 40 puta, do 480 Mbps, što je omogućilo prijenos video podataka putem USB-a.
Svi prethodno objavljeni periferni uređaji i kablovi velike brzine su potpuno kompatibilni. Kontroler standarda 2.0 je već integriran u skup sistemske logike programabilnih uređaja (na primjer, matična ploča osobnog računala).

Intel, Microsoft, Hewlett-Packard, Texas Instruments, NEC i NXP Semiconductors su 2008. godine kreirali USB 3.0 standard. U specifikaciji USB 3.0, konektori i kablovi ažuriranog standarda su fizički i funkcionalno kompatibilni sa USB 2.0, ali pored četiri komunikacione linije, dodane su još četiri. Međutim, novi kontakti u USB 3.0 konektorima nalaze se odvojeno od starih u drugom redu kontakata. USB 3.0 specifikacija podiže maksimalnu brzinu prijenosa podataka na 5 Gbps - redova veličine više od 480 Mbps koje USB 2.0 može pružiti. Uz to, maksimalna jačina struje je povećana sa 500 mA na 900 mA po uređaju, što omogućava napajanje nekih uređaja koji su prethodno zahtijevali zasebno napajanje.

Pretpostavimo da ste razvili USB uređaj koji želite da radite sa računarom. To se može postići na najmanje dva načina:

1. razvoj potpuno opremljenog drajvera operativnog sistema;

2. korištenjem posebne klase USB interfejsa - uređaja koji se nazivaju HID (Human Interface Device) uređaji.

Prva metoda je univerzalna: imajući dovoljno znanja u području pisanja upravljačkih programa, možete programirati za rad s bilo kojim uređajem bilo kojom brzinom koju podržava USB. Ali to nije lak zadatak.

Drugi način je sljedeći. Postoji interfejs podržan od strane modernih operativnih sistema za uređaje za interakciju između čoveka i računara ili HID uređaje, kao što su:

1. tastature, miševi, džojstici;

2. razni senzori i čitači;

3. upravljanje i pedale za igru;

4. dugmad, prekidači, regulatori.

Svaki takav uređaj, ako ispunjava zahtjeve za HID uređaje, sistem će automatski prepoznati i ne zahtijeva pisanje posebnih drajvera. Osim toga, njihovo programiranje je obično mnogo lakše od pisanja specijaliziranog drajvera uređaja. Nažalost, metoda ima značajan nedostatak: brzina razmjene informacija sa HID uređajem je vrlo ograničena i iznosi maksimalno 64 kB/s.

U osnovi, na bazi HID tehnologije moguće je organizovati interakciju sa bilo kojim uređajem, čak i ako to nije, u užem smislu, uređaj interfejs čovek-računar. Ovo eliminiše dugotrajan razvoj jedinstvenog drajvera uređaja i štedi vreme na razvoju novog USB uređaja. Na strani domaćina, komunikacija sa uređajem će biti kontrolisana standardnim HID drajverom koji je uključen u operativni sistem. Samo trebate ispuniti minimalne zahtjeve USB-HID protokola na strani uređaja.

Vrijedi napomenuti da mnogi USB uređaji koji na prvi pogled ne potpadaju pod definiciju uređaja za interakciju s ljudima, logičnije ih je implementirati kao HID uređaje. Ovaj fenomen je uobičajen u oblasti proizvodne opreme, koja je nedavno doživjela masovno usvajanje USB tehnologije. Na primjer, uzmite u obzir laboratorijsko napajanje s mogućnošću postavljanja parametara njegovih izlaznih signala s računala pomoću USB sučelja. Sam izvor energije nesumnjivo nije sredstvo interakcije s ljudima. Međutim, u ovom slučaju, funkcije implementirane putem USB veze dupliraju tastaturu, kontrole i indikatore instalirane na samom uređaju. A ove kontrole jednostavno potpadaju pod definiciju HID-a. Shodno tome, jedinicu za napajanje sa ovim USB funkcijama najlogičnije je organizirati kao HID uređaj.

U razmatranom primjeru, niska brzina prijenosa podataka će biti dovoljna za normalan rad, u drugim slučajevima uređaji mogu biti vrlo zahtjevni za tečaj. Niska brzina prenosa je glavno ograničenje HID dizajna uređaja, što u poređenju sa 12 Mbit/s punom brzinom USB 1.0 magistrale izgleda kao veliki nedostatak HID tehnologije kada je u pitanju izbor specifične USB implementacije. Međutim, za mnoge komunikacijske zadatke ova brzina je sasvim dovoljna i HID arhitektura kao specijalizirani alat zauzima dostojno mjesto među metodama organizacije razmjene podataka.

HID uređaji su dva tipa: koji učestvuju (za pokretanje) i koji ne učestvuju u početnom pokretanju računara. Najupečatljiviji primjer USB-HID uređaja za pokretanje je tastatura, čiji rad počinje s pokretanjem računala.

Prilikom razvoja HID uređaja, moraju se ispuniti sljedeći zahtjevi koje nameće specifikacija:

1. HID uređaj pune brzine može prenijeti 64000 bajtova svake sekunde ili 64 bajta svaki 1ms; HID uređaj male brzine ima mogućnost prijenosa do 800 bajtova u sekundi ili 8 bajtova svakih 10 ms.

2. HID uređaj može dodijeliti svoju stopu prozivanja kako bi utvrdio da li ima svježe podatke za prijenos.

3. Razmjena podataka sa HID-uređajem vrši se kroz posebnu strukturu koja se zove izvještaj (Izvještaj). Svaki određeni izvještaj može sadržavati do 65535 bajtova podataka. Struktura izvještaja ima vrlo fleksibilnu organizaciju koja vam omogućava da opišete bilo koji format prijenosa podataka. Da bi određeni format izvještaja postao poznat domaćinu, mikrokontroler mora sadržavati poseban opis - deskriptor izvještaja.

USB komunikacija se implementira direktno na mikrokontroler na nekoliko načina:

1. Korištenje kontrolera sa hardverskom podrškom, na primjer AT90USB *, proizvođača atmega;

2. Korišćenje softverske emulacije usb interfejsa na bilo kom mikrokontroleru.

Za softversku implementaciju trenutno postoji niz gotovih rješenja za različite porodice mikrokontrolera. Za AVR mikrokontrolere, na primjer, Atmega8, moguće je koristiti sljedeće besplatne C biblioteke:

Oba su prilično laka za korištenje, pružaju potpunu emulaciju USB 1.1 uređaja male brzine s izuzetkom rukovanja komunikacijskim greškama i električnih performansi i rade na gotovo svim AVR kontrolerima s minimalno 2KB flash, 128 bajtova RAM-a i frekvencijom od 12 do 20 MHz.

Za pisanje aplikacija koje podržavaju Windows USB HID uređaje, potrebne su vam hid * datoteke zaglavlja uključene u Windows Driver Kit (WDK), ili možete koristiti besplatnu skrivenu biblioteku ili slično.

Dakle, u opštem slučaju, programiranje USB-a je prilično težak zadatak koji zahteva poseban mikrokontroler sa hardverskom podrškom i pisanjem drajvera operativnog sistema. Međutim, u praksi je pri razvoju uređaja moguće koristiti mnogo jednostavnije sučelje HID - uređaja, čija je podrška implementirana na nivou standardnog sistemskog drajvera, a programiranje je pojednostavljeno korištenjem postojećih knjižnica funkcija.

Kontrolna pitanja

  1. Koja je razlika između D- i GND žica u USB-u? Zašto ne možete koristiti jednu zajedničku žicu za napajanje i signal?
  2. Koliko USB režima brzine postoji danas (uključujući verziju 3.0)?
  3. Šta je HID uređaj? Zašto nije potrebno pisati drajvere za njihov rad u modernom OS?
  4. Da li je moguće implementirati USB uređaje sa mikroprocesorom koji nema ugrađenu podršku za interfejs?
  5. Koje su glavne razlike između USB 3.0 i prethodnih verzija?

Dobra knjiga, mnogo objašnjava. Dobro će doći onima koji žele razumjeti kako se podaci prenose preko USB magistrale.

Uvod 1
Za koga je ova knjiga: 2
Šta ćete naći u knjizi 2
Softverski zahtjevi 3
Hardverski zahtjevi 4
O kodu 4
Sažetak poglavlja 4
Legenda 6
Priznanja 7
DIO I. UVOD U USB 9
Poglavlje 1. Šta je USB 11
1.1. USB istorija 11
1.2. Poređenje USB-a sa drugim interfejsima 14
1.3. Osnovni USB koncepti 16
1.3.1. Opća arhitektura sabirnice 16
1.3.2. Arhitektura fizičke i logičke sabirnice 16
1.3.3. USB komponente 18
1.3.4. Svojstva USB uređaja 18
1.3.5. Svojstva čvorišta 19
1.3.6. Svojstva domaćina 20
1.4. Primjeri USB uređaja 20
1.4.1. Miš i tastatura., 21
1.4.2. Monitori 21
1.4.3. USB-to-COM i USB-to-LPT adapteri 22
1.4.4. Skeneri 23
1.4.5. Modemi 23
1.4.6. Zvučnici 24
1.4.7. Flash diskovi 25
1.4.8. Čvorišta 28
1.4.9. Tehnologija mjerenja 28
1.4.10. Egzotični uređaji 29
1.5. USB mrežna veza 30
1.5.1. USB-Ethernet konverter 31
1.5.2. Direktna USB veza 31
1.6. Prijenos podataka 31
1.6.1. Principi prenosa podataka 32
1.6.2. Mehanizam prekida 32
1.6.3. Sučelja adaptera za host 32
1.6.4. Mogućnost direktnog pristupa memoriji 34
1.6.5. Načini prijenosa podataka 34
1.7. Instalacija i konfiguracija USB uređaja 35
1.7.1. BIOS postavke za USB 38
1.7.2. Rješavanje problema 41
1.8. USB ograničenja 45
1.9. Ako kupite računar 46
1.9.1. HS i USB 2.0 nisu isto! 46
1.9.2. Matična ploča 47
1.9.3. Zgrada 48
1.9.4. USB za “stare” modele računara 48
1.10. Online resursi za ovo poglavlje 49
Poglavlje 2. USB hardver 51
2.1. Kablovi i konektori 51
2.1.1. Tipovi kablova 52
2.1.2. Dužina kabla 53
2.1.3. Konektori 53
2.2. Fizički interfejs 55
2.2.1. Kodiranje podataka 57
2.2.2. Identifikacija uređaja 58
2.3. Ishrana 59
2.3.1. Tipovi USB napajanja 59
2.3.2. Upravljanje energijom 60
2.3.3. Ulazak u režim niske potrošnje energije 61
2.4. Online resursi za ovo poglavlje 61
DIO II. INTERNI USB 63
Poglavlje 3. Unutrašnja organizacija autobusa 65
3.1. Logički nivoi komunikacije 65
3.1.1. Klijentski softver nivo 66
3.1.2. Nivo upravljačkog programa USB sistema 67
3.1.3. Sloj kontrolera sučelja domaćina 68
3.1.4. Nivo periferne magistrale 68
3.1.5. USB logički uređaj nivo 69
3.1.6. USB funkcionalni nivo 69
3.2. Prijenos podataka na nivou 69
3.3. Vrste prijenosa podataka 71
3.4. Sinhronizacija sa izohronim prijenosom 73
3.5. Osoblje 77
3.6. Krajnje tačke 78
3.7. Kanali 79
3.8. Paketi 81
3.8.1. Format IN, OUT, SETUP i PING token paketa 83
3.8.2. SOF 83 format paketa
3.8.3. Format paketa podataka 84
3.8.4. Format paketa potvrde< 84
3.8.5. SPLIT format paketa * 84
3.9. Kontrolni zbir 85
3.9.1. Algoritam za izračunavanje CRC-a 86
3.9.2. Softverski CRC proračun 87
3.10. Transakcije 90
3.10.1. Vrste transakcija 91
3.10.2. Potvrda transakcije i kontrola toka 92
3.10.3. Transakcioni protokoli 93
Poglavlje 4. Unutrašnja organizacija proizvoda 96
4.1. Zahtjevi prema USB uređajima 96
4.1.1. Konfiguracioni paket 96
4.1.2. Zahtjevi za standardni uređaj 99
4.1.3. Deskriptori uređaja 105
Poglavlje 5. Unutrašnja organizacija domaćina i čvorišta 123
5.1. Čvorišta 123
5.1.1. Interakcija glavnog kontrolera sa čvorištem 126
5.1.2. Deskriptor čvorišta 127
5.1.3. Zahtjevi čvorišta 129
5.1.4. CLEAR_HUB_FEATURE zahtjev 130
5.1.5. CLEAR PORT_FEATURE 130 zahtjev
5.1.6. Zahtjev GET_BUS_STA TE 131
5.1.7. Zahtjev GET_HUB_DESCRfPTOR 131
5.1.8. Zahtjev GET_HUB_STATUS 131
5.1.9. Zahtjev GET_PORT_STA TUS 132
5.1.10. SET_HUB_DESCRIPTOR 134 zahtjev
5.1.11. SET_HUB_FEATURE Zahtjev 134
5.1.12. Zahtjev SET PORT FEATURE. 134
5.2. Saradnja uređaja na različitim brzinama 135
Poglavlje 6. USB bez računara 137
6.1. OTG konektori 138
6.2. Vrste OTG uređaja 138
6.3. Deskriptor OTG uređaja 139
6.4. Online resursi za ovo poglavlje 140
DIO III. PRAKSA PROGRAMIRANJA 141
Poglavlje 7. Windows USB podrška 143
7.1. Model WDM 144
7.2. Interakcija sa USB drajverom 146
Poglavlje 8. HID uređaji * 149
8.1. Svojstva HID uređaja 149
8.2. Kako razmijeniti podatke sa HID uređajem 151
8.3. Instaliranje HID uređaja 152
8.4. Identifikacija HID uređaja 152
8.4.1. Identifikacija uređaja za pokretanje 153
8.4.2. Deskriptor konfiguracije HID uređaja 153
8.4.3. HID deskriptor 154
8.4.4. Deskriptor izvještaja 156
8.5. Struktura deskriptora izvještaja 156
8.5.1. Struktura elemenata izvještaja 156
8.5.2. Tipovi stavki izvještaja 157
8.5.3. Primjeri deskriptora 165
8.6. Zahtjevi HID uređaja 168
8.6.1. GET_REPORT zahtjev. 169
8.6.2. SET_REPORT Zahtjev 169
8.6.3. GETJDLE zahtjev. 170
8.6.4. SETJDLE 170 Zahtjev
8.6.5. Zahtjev GET_PROTOCOL 171
8.6.6. SET_PROTOCOL Zahtjev 171
8.7. Alati 171
8.8. Interakcija sa HID drajverom 172
Poglavlje 9. Uvod u WDM 181
9.1. Slojevi drajvera 183
9.2. Simbolički nazivi uređaja 184
9.3. Osnovne procedure WDM drajvera 189
9.3.1. DriverEntry 190 procedura
9.3.2. AddDevice Procedura 192
9.3.3. Postupak istovara 194
9.3.4. Operativne procedure vozača 196
9.3.5. Usluživanje IOCTL 203 zahtjeva
9.4. Učitavanje drajvera i pristup procedurama drajvera 209
9.4.1. Procedura vozača 209
9.4.2. Registracija vozača 210
9.4.3. Pozivajući se na Operativne procedure 217
9.4.4. Pohranjivanje drajvera unutar izvršne datoteke 218
9.5. Alati za kreiranje drajvera 220
9.5.1. NuMega Driver Studio 220
9.5.2. Jungo WinDriver 220
9.5.3. Jungo KernelDriver 220
Poglavlje 10. USB PnP specifikacija 221
10.1. Uvod u Plug and Play 221
10.1.1. Plug and Play zadaci i funkcije 221
10.1.2. Pokretanje PnP 222 procedure
10.1.3. PnP softverske komponente 224
10.2. Plug and Play za USB 225
10.2.1. Konfiguriranje USB uređaja 226
10.2.2. Numeracija USB uređaja 226
10.2.3. USB PnP identifikatori uređaja 228
10.3. Dobijanje liste USB uređaja 229
10.4. INF fajl 234
10.4.1. INF struktura datoteke 234
10.4.2. Odjeljak verzija 235
10.4.3. Odjeljak proizvođača 237
10.4.4. DestinationDirs, odjeljak 239
10.4.5. Opis modela Odjeljak 241
10.4.6. Odjeljak xxx.AddReg i xxx.DelReg. 242
10.4.7. Odjeljak xxx.LogConfig 244
10.4.8. Odjeljak xxx.CopyFiles 244
10.4.9. String odjeljak 245
10.4.10. Veze u odeljku 246
10.4.11. Kreiranje i testiranje INF datoteka 247
10.4.12. Instaliranje uređaja pomoću INF datoteke 248
10.5. Grane USB registra 249
Poglavlje 11. Funkcije BIOS-a 251
11.1. BIOS servis 1AN 251
11.1.1. Funkcija B101H - određivanje prisustva PCI BIOS 252
11.1.2. B102H funkcija - traženje PCI uređaja po identifikatorima
uređaji i proizvođači 253
11.1.3. Funkcija B103H - pretraga PCI uređaja prema šifri klase 254
11.1.4. B108H funkcija - čitanje registra konfiguracije (bajt) 255
11.1.5. Funkcija VÛ9N - čitanje konfiguracijskog registra (Word) 256
11.1.6. B10AN funkcija - čitanje registra konfiguracije (DWord) 256
11.1.7. B10BN funkcija - upišite konfiguracijski registar (bajt) 257
11.1.8. B10CH funkcija - upisati konfiguracijski registar (Word) 257
11.1.9. B10DH Funkcija - Upišite registar konfiguracije (DWord) 258
11.2. Studija slučaja 259
DIO IV. KREIRANJE USB UREĐAJA 283
Poglavlje 12. USB periferni uređaji 285
12.1. IC-ovi Atmel 286
12.1.1. Mikrokontroleri sa MSC-51 arhitekturom 286
12.1.2. Kontrolori čvorišta 289
12.1.3. Hub mikroprocesori sa AVR 289 jezgrom
12.1.4. Ostali čipovi Atmel 290
12.2. Mikročipovi Cygnal 291
12.2.1. Mikroprocesori C8051F320 i C8051F321 291
12.2.2. Ostali čipovi Cygnal 293
12.3. IC-ovi FTDI 296
12.3.1. IC-ovi FT232AM i FT232BM 297
12.3.2. IC-ovi FT245AM i FT245BM 298
12.3.3. Čip FT2232BM 299
12.3.4. Microchip FT8U100AX 300
12.3.5. Kompleti i moduli za otklanjanje grešaka 301
12.3.6. Vozači 302
12.3.7. Dodatni programi 303
12.3.8. Ostali moduli 304
12.4. Intel 304 mikročipovi
12.5. Microchip 308 mikročipovi
12.6. Mikročipovi Motorola 308
12.7. Mikročipovi Philips 309
12.7.1. Mikročipovi USB 310
12.7.2. Čvorišta 311
12.7.3. Ostali čipovi Philips 313
12.8. Mikročipovi Texas Instruments 314
12.9. Microchips Trans Dimension 317
12.10. IC za zaštitu napajanja 318
12.11. Online resursi za ovo poglavlje 319
Poglavlje 13. HID uređaj zasnovan na Atmel AT89C5131 322
13.1. Strukturni dijagram AT89S5131 322
13.2. USB registri AT89S5131 324
13.2.1. Registrirajte USBCON 324
13.2.2. Registrirajte USBADDR 326
13.2.3. USBINT 327 registar
13.2.4. USBIEN 328 registar
13.2.5. UEPNUM registar. 329
13.2.6. Registrirajte UEPCONX 330
13.2.7. Registrirajte UEPSTAX. 331
13.2.8. UEPRST registar. 334
13.2.9. UEPINT registar. 335
13.2.10. Registrirajte UEPIEN 336
13.2.11. Registrirajte UEPDATX 337
13.2.12. Registrirajte UBYCTLX 337
13.2.13. UFNUML 338 registar
13.2.14. UFNUMH registar. 338
13.3. Krug AT89S5131 338
13.4. Alati za programiranje 339
13.4.1. Prevodilac 341
13.4.2. Programer 342
13.5. Mikroprocesorski program 349
13.5.1. Prva verzija programa za AT89C5131 349
13.5.2. Dodavanje deskriptora nizova 369
13.5.3. Dodavanje krajnjih tačaka 374
13.5.4. Kreiranje HID uređaja 377
13.5.5. Komunikacija sa HID uređajem 381
13.6. Čitanje izvještaja u Windows 388
13.7. Dodatne funkcije Windows XP 396
13.8. Uređaj za više izvještaja 397
Poglavlje 14. Kreiranje USB uređaja zasnovanog na ATMEL AT89C5131 402
14.1. Uređaj koji nije HID 402
14.2. Kreiranje drajvera sa Driver Studio 405
14.2.1. Nekoliko riječi o biblioteci Driver Studio 407
14.2.2. Druge klase Driver Studio 411
14.2.3. Kreiranje predloška drajvera sa Driver Studio 412
14.2.4. Izmjena predloška drajvera 422
14.2.5. Osnovne metode klase uređaja 423
14.2.6. Implementacija čitanja podataka 426
14.2.7. Instalacija drajvera 428
14.2.8. Čitač podataka 429
14.2.9. Čitanje podataka s drugih tipova krajnjih tačaka 438
14.2.10. Očistite USB drajver 439
Poglavlje 15. Upotreba FTDI 457 IC-a
15.1. Funkcionalni dijagram FT232BM 457
15.2. Krug FT232BM 460
15.3. Karakteristike D2XX 460
15.4. Prelazak sa COM-a na USB 465
15.4.1. Opis kruga pretvarača 465
15.4.2. Podešavanje brzine prenosa 467
DIO V. REFERENCA 469
Poglavlje 16. Osnovne Windows funkcije 471
16.1. Funkcije CreateFile i CloseHandle: Otvaranje i zatvaranje objekta 471
16.1.1. Dodatne informacije 472
16.1.2. Povratna vrijednost 472
16.1.3. Pozivanje primjera 472
16.2. Funkcija čitanja datoteke: Čitanje podataka 473
16.2.1. Dodatne informacije 474
16.2.2. Povratna vrijednost 474
16.2.3. Pozivanje primjera 474
16.3. Funkcija WriteFile: Prenošenje podataka 475
16.3.1. Dodatne informacije 476
16.3.2. Povratna vrijednost 476
16.3.3. Pozivanje primjera 476
16.4. ReadFileEx funkcija. APC čita podatke 477
16.4.1. Povratna vrijednost 479
16.4.2. Dodatne informacije 479
16.4.3. Pozovite primjer 479
16.5. WriteFileEx funkcija: APC prijenos podataka 480
16.5.1. Povratna vrijednost 481
16.5.2. Pozivanje primjera 481
16.6. WaitForSingleObject funkcija čeka signal
stanja objekta 482
16.6.1. Povratna vrijednost 482
16.7. WaitForMultipleObjects funkcija: čeka se signal
stanja objekta 483
16.7.1. Povratna vrijednost 484
16.8. GetOverlappedResult funkcija rezultat asinkrone operacije 484
16.8.1. Povratna vrijednost 485
16.9. DeviceIoControl funkcija: 485 direktna kontrola vozača
16.9.1. Povratna vrijednost 487
16.10. Funkcija QueryDosDevice: dobiti naziv uređaja
pod imenom DOS 487
16.10.1. Povratna vrijednost 488
16.10.2. Pozivanje primjera 488
16.11: Definirajte funkciju Dos uređaja: operacije s imenom DOS uređaja 489
16.11.1. Povratna vrijednost 490
16.11.2. Pozivanje primjera 490
Poglavlje 17. HID API funkcije. 492
17.1. HidD_Hello funkcija: Provjera biblioteke 492
17.2. Funkcija HidD_GetHidGuid: Dobijte GUID 492
17.3. Funkcija HidD_GetPreparsedData: Kreirajte deskriptor uređaja 493
17.4. Funkcija HidD_FreePreparsedData: oslobađanje deskriptora uređaja 493
17.5. Funkcija HidD_GetFeature: Dobivanje izvještaja FEATURE 494
17.6. Funkcija HidD_SetFeature: prijenos FEATURE izvještaja 494
17.7. Funkcija HidD_GetNumInputBuffers: dobijete broj bafera 495
17.8. Funkcija HidD_SetNumInputBuffers: postavljanje broja bafera na 495
17.9. Funkcija HidD_GetAttribntes: Dobijanje atributa uređaja 495
17.10. Funkcija HidD_GetMamifactnrerStnng. nabavite proizvođački niz 496
17.11. Funkcija HidD_GetProductString. dobijanje linije proizvoda 497
17.12. HidD_ Get Serial MumberString funkciju. dobijanje niza
serijski broj 497
17.13. Funkcija HidD_GetIndexedString. dobivanje niza na indeksu 498
17.14. Funkcija HidDjGetlnputReporr. prijem INPUT izvještaja 498
17.15. Funkcija HidD_SetOutputReport. OUTPUT prijenos izvještaja 499
17.16. Funkcija HidP_GetCaps: Dobivanje svojstava uređaja 499
17.17. Funkcija HidP_MaxDataListLength: dobijete 500 veličina izvještaja
Poglavlje 18. UCH 502 Host Controller
18.1. Host Controller 502 Kontrolni registri
18.1.1. USB komandni registar (USBCMD) 504
18.1.2. USB statusni registar (USBSTS) 506
18.1.3. Registar kontrole prekida (USBINTR) 506
18.1.4. Registar broja okvira (FRNUM) 507
18.1.5. Registar osnovne adrese okvira (FLBASEADD) 508
18.1.6. Početak registra modifikatora okvira (SOFMOD) 508
18.1.7. Status porta i kontrolni registar (PORTSC) 509
18.2. Strukture podataka UCH 510 Host Controller
18.2.1. Lista okvira 510
18.2.2. Deskriptor prijenosa i 511
18.2.3. Zaglavlje reda 514
18.3. Obrada UCH liste deskriptora 516
Poglavlje 19. Alati 518
19.1. Alati Microsoft Visual Studio 518
19.1.1. Zavisi 518
19.1.2. Traženje greške 518
19.1.3. GuidGen 518
19.2. Microsoft DDK alati 520
19.2.1. DeviceTree 520
19.2.2. DevCon .- 521
19.2.3. Chklnf i Genlnf. 526
19.3. Alati kompanije CompuWare Corporation 527
19.3.1. Monitor 527
19.3.2. SymLink 527
19.3.3. EzDriverlnstaller 527
19.3.4. WdmSniff 527
19.4. Syslntemals Alati 528
19.4.1. WinObj 528
19.5. USB Forum 531 Alati
19.5.1. Alat HID deskriptora 531
19.6. HDD softverski alati 533
19.7. Sourceforge alati 533
PRILOZI 535
Dodatak 1. Dodatne funkcije 537
Dodatak 2. Tabela identifikatora jezika (LangID) 539
Dodatak 3. Tabela kodova proizvođača (ID dobavljača, ID uređaja) 543
Dodatak 4. Opis CD-a 546
Literatura 548
Indeks 549

Podijelite ovo