Praktinis USB sąsajos naudojimas PIC valdikliuose. Paprastų USB įrenginių programavimas Delphi Pakeiskite įrenginio pavadinimą į savo

Kaip jau minėta, „Windows“ operacinės sistemos teikia programinės įrangos palaikymą įrenginių, prijungtų prie USB magistralės, veikimui. Duomenų srautų apdorojimas USB įrenginiai lygiu Operacinė sistemaįdiegia šūsnį standartinių tvarkyklių, kurios atlieka pagrindines visų USB įrenginių valdymo ir duomenų mainų tarp jų ir sistemos funkcijas.

Jei reikia parašyti programinė įranga Bet kuriam USB įrenginiui, kuris praplėstų duomenų apdorojimo galimybes, galite pasirinkti vieną iš trijų galimų kelių:

parašyti savo įrenginio tvarkyklę, kuri teiktų visas reikalingas valdymo ir duomenų mainų funkcijas bei programą, kuri sąveikautų su šia tvarkykle vartotojo režimu. Tokiu atveju galite visiškai atsisakyti standartinių sistemos tvarkyklių;

parašyti filtro tvarkyklę, kuri suteiktų reikiamą funkcionalumą, bet būtų tvarkyklių krūvoje virš sistemos tvarkyklių. Taigi visas standartines apdorojimo funkcijas atliktų USB tvarkyklės, įdiegta sistemos, o papildomų funkcijų suteiktų Jūsų filtro tvarkyklė, su kuria sąveikautų vartotojo programa;

pasinaudokite laisvai platinamų funkcijų ir tvarkyklių bibliotekomis

mi, kad pasiektumėte USB įrenginį.

Daugeliu atvejų programinė prieiga prie USB įrenginio gali prireikti, jei įrenginys atlieka kokią nors labai specifinę funkciją. Pavyzdžiui, buvo sukurti USB pagrindu sukurti „elektroniniai osciloskopai“ arba duomenų rinkimo sistemos, kurių veikimui reikalinga prieiga prie paties įrenginio. Daugeliu šių atvejų galite naudoti laisvai paskirstytas funkcijų bibliotekas, kurios veiks beveik visose populiariose programavimo aplinkose. Pavyzdžiui, globojant GNU, buvo sukurta programinė įranga, žinoma kaip LibUsb, kuri apima reikiamas tvarkykles ir funkcijų bibliotekas, skirtas veikti Windows ir Linux operacinėse sistemose. Šios funkcijų bibliotekos yra labai populiarios ir leidžia greitai sukurti programas, kurios sąveikauja su jūsų įrenginiu naudojant standartinių funkcijų rinkinį. Tai pašalina poreikį rašyti savo įrenginio tvarkyklę, o tai sutaupo daug laiko.

Be to, dauguma vartotojų nėra susipažinę su tvarkyklių kūrimo būdais,

Tai labai sudėtinga programavimo sritis, todėl tokios laisvai platinamos programinės įrangos prieinamumas suteiks neįkainojamą pagalbą plačiam vartotojų ratui. Remiantis LibUsb projektu, buvo sukurti vyniotuvai, su kuriais galima dirbti Visual Basic.NET ir C# .NET, iš kurių populiariausias yra LibUsbDotNet, taip pat sukurtas laisvos programinės įrangos globoje. Nepaisant akivaizdaus USB įrenginių programavimo sudėtingumo, išvardinta programinė įranga taip supaprastina šią užduotį, kad net pradedantiesiems gali tai padaryti. Pažvelkime į praktinius pavyzdžius, kaip dirbti su USB įrenginiais, ir pradėkime nuo „LibUsb“ programinės įrangos paketo. Beje, aukščiau nurodytą programinę įrangą galima nemokamai atsisiųsti iš www.sourceforge.net arba iš daugybės pasikartojančių svetainių.

Kaip dirbti su LibUsb USB funkcijų bibliotekomis? Taip buvo pastatyta biblioteka

kad galėtumėte atlikti pagrindines su USB įrenginiu susijusias operacijas:

identifikavimas arba, kitaip tariant, surašymas. Atliekant šią operaciją, aptinkami įrenginiai, prijungti prie USB magistralės, kuri atliekama naudojant atitinkamas libusb bibliotekos funkcijas;

gauti įrenginio parametrus (įrenginio identifikatorius, duomenis apie gamintoją ir įrenginio charakteristikas), kuriems biblioteka turi nemažai funkcijų;

duomenų atidarymas, uždarymas, skaitymas ir rašymas, komandų siuntimas. USB įrenginį, kaip ir kitus failų sistemos objektus, galima pasiekti rašymo ir skaitymo būdu, o tai daroma naudojant atitinkamas bibliotekos funkcijas.

Visas aukščiau paminėtas funkcijas galima įgyvendinti iškvietus atitinkamas libusb bibliotekos funkcijas, tačiau jos čia nebus išvardytos, nes tai užimtų per daug vietos; pažiūrėsime, kaip naudoti kai kurias iš šių funkcijų

Ryžiai. 6.10

Libusb0.sys tvarkyklės vieta įrenginio tvarkyklių krūvoje

praktiniais pavyzdžiais. Visų funkcijų aprašymus skaitytojai gali rasti atitinkamoje dokumentacijoje. Priminsiu, kad svarstome galimybę naudoti libusb bibliotekos funkcijas Windows operacinėse sistemose.

Diegiant paskirstymą su libusb Windows operacinėje sistemoje, sistemoje įdiegiama libusb0.sys filtro tvarkyklė. Ši tvarkyklė bus sistemos tvarkyklių krūvos viršuje, kurią lengva pamatyti, pavyzdžiui, pažvelgus į bet kurio USB įrenginio tvarkyklės informaciją (6.10 pav.).

Be to, norint pasiekti tvarkyklę iš vartotojo programų, sistemoje yra įdiegta libusb0.dll biblioteka, kurią naudodami galite kurti vartotojo programas.

Ryžiai. 6.17

Programos lango vaizdas pašalinant

USB įrenginiai iš sistemos

Įvadas
Kam skirta ši knyga?
Ką rasite knygoje
Programinės įrangos reikalavimai
Techninės įrangos reikalavimai
APIE programos kodas
Trumpi skyrių aprašymai
Pavadinimai
Padėkos
Atsiliepimas
I dalis: USB supratimas
1 skyrius. USB specifikacija
1.1. Kas yra USB ir kam jis reikalingas?
1.1.1. Bendra USB architektūra
1.1.2. USB fizinė ir loginė architektūra
1.1.3. USB komponentai
1.1.4. USB įrenginio ypatybės
1.1.5. Duomenų perdavimo principai
1.1.6. Pertraukimo mechanizmas
1.1.7. Duomenų perdavimo režimai
1.1.8. Loginiai duomenų mainų lygiai
1.1.8.1. Kliento programinės įrangos lygis
1.1.8.2. USB sistemos tvarkyklės lygis
1.1.8.3. Pagrindinio kompiuterio sąsajos valdiklio sluoksnis
1.1.8.4. USB periferinės magistralės lygis
1.1.8.5. USB loginio įrenginio lygis
1.1.8.6. USB įrenginio funkcinis lygis
1.1.9. Duomenų perkėlimas tarp sluoksnių
1.1.10. Duomenų perdavimo tipai
1.1.11. Personalas
1.1.12. Galiniai taškai
1.1.13. Kanalai
1.1.14. Paketai
1.1.14.1. IN, OUT, SETUP ir PING prieigos raktų paketų formatas
1.1.14.2. SOF paketo formatas
1.1.14.3. Duomenų paketo formatas
1.1.14.4. Patvirtinimo paketo formatas
1.1.14.5. SPLIT paketo formatas
1.1.15. Patikrinkite sumą
1.1.15.1. CRC skaičiavimo algoritmas
1.1.15.2. Programinė įranga CRC skaičiavimas
1.1.16. Sandoriai
1.1.16.1. Sandorių tipai
1.1.16.2. Sandorio patvirtinimas ir srauto valdymas
1.1.16.3. Sandorių protokolai
1.2. Užklausos USB įrenginiams
1.2.1. Konfigūracijos paketas
1.2.2. Standartinės USB įrenginių užklausos
1.2.2.1. Gaunama būsena GET_STATUS
1.2.2.2. Iš naujo nustatoma ypatybė CLEAR_FEATURE
1.2.2.3. Išsprendžiama SET_FEATURE nuosavybė
1.2.2.4. Adreso nustatymas magistralėje SET_ADDRESS
1.2.2.5. Gaunama rankena GET_DESCRIPTOR
1.2.2.6. Perduodama SET_DESCRIPTOR deskriptorius
1.2.2.7. Gaunamas konfigūracijos kodas GET_CONFIGURATION
1.2.2.8. Konfigūracijos kodo nustatymas SET_CONFIGURATION
1.2.2.9. Gaunamas sąsajos konfigūracijos kodas GET_INTERFACE
1.2.2.10. Sąsajos konfigūracijos kodo SET_INTERFACE nustatymas
1.2.2.11. Sinchronizavimo kadro numerio SYNC_FRAME nustatymas
1.2.2.12. Standartinių užklausų apdorojimas
1.2.3. Įrenginio aprašas
1.2.3.1. Įrenginio aprašas
1.2.3.2. Tinkamo įrenginio aprašas
1.2.3.3. Konfigūracijos aprašas
1.2.3.4. Sąsajos aprašas
1.2.3.5. Galinio taško rankena
1.2.3.6. Stygos rankena
1.2.3.7. Konkretūs aprašai
1.2.3.8. Deskriptorių gavimo tvarka
1.3. Plug and Play (PnP) sistema
1.3.1. USB įrenginių konfigūravimas
1.3.2. USB įrenginių numeracija
1.3.3. PnP USB įrenginio identifikatoriai
1.3.4. Simboliniai įrenginių pavadinimai
1.4. WDM modelis
2 skyrius: C Mikrovaldiklio programavimas
2.1. Bendra informacija apie C kalbą mikrovaldikliams
2.2. Naudojimas standartines bibliotekas
2.3. Programavimas AT89S5131
2.3.1. Inicializacijos failas
2.3.2. Deskriptorių struktūros
2.3.3. Projekto struktūra
3 skyrius. Įrankiai
3.1. Programuotojai
3.1.1. Programuotojas Flip
3.1.2. Programuotojas ER-Tronik
3.2. Tvarkyklės kūrimo įrankiai
3.2.1. NuMega tvarkyklių studija
3.2.2. Jungo WinDriver
3.2.3. Jungo KernelDriver
3.3. Microsoft įrankiai Visual Studio
3.3.1. Priklausomybė Walker
3.3.2. Klaidų paieška
3.3.3. GuidGen
3.4. Microsoft DDK įrankiai
3.4.1. DeviceTree
3.4.2. DevCon
3.4.2.1. Pagrindinės klasės
3.4.2.2. tvarkyklės failų raktas
3.4.2.3. hwids klavišas
3.4.2.4. pakartotinio nuskaitymo raktas
3.4.2.5. Raktų krūva
3.4.2.6. Rakto būsena
3.4.3. Chklnf ir Genlnf
3.5. „CompuWare Corporation“ įrankiai
3.5.1. Monitorius
3.5.2. SymLink
3.5.3. EzDriverlninstaller
3.5.4. WdmSniff
3.6. Syslnternals įrankiai
3.6.1. WinObj
3.7. USB forumo įrankiai
3.7.1. HID deskriptoriaus įrankis
3.8. USB komandų tikrintuvas
3.9. HDD programinės įrangos įrankiai
3.10. Sourceforge įrankiai
3.11. Autobusų skalikų stebėjimo programa
Skyrius 4. Win32 funkcijų naudojimo .NET principai
4.1. Bendra informacija
4.2. Win32 funkcijų importavimas
4.3. Struktūros
4.3.1. StructLayout atributas
4.3.2. Maršalo atributas
4.4. Tiesioginė prieiga prie duomenų
4.5. Gydymas „Windows“ pranešimai
4.6. Bendra informacija apie WMI
4.7. Internetiniai šio skyriaus ištekliai
II dalis. USB klasės
5 skyrius. CDC klasė
5.1. USB/RS-232 sąsajų konvertavimo metodai
5.2. Bendra informacija apie RS-232 sąsają
5.2.1. Mainų linijos
5.2.1.1. Perduoti duomenys (BA / TxD / TD)
5.2.1.2. Gauti duomenys (BB/RxD/RD)
5.2.1.3. Prašymas perkelti (CA/RTS)
5.2.1.4. Paruošta perduoti (CB/CTS)
5.2.1.5. DCE parengtis (CC / DSR)
5.2.1.6. DTE parengtis (CD / DTR)
5.2.1.7. Skambučio indikatorius (CE/RI)
5.2.1.8. Vežėjo aptikimas (CF / DCD)
5.2.1.9. Paruošta priimti (CJ)
5.3. CDC specifikacija
5.3.1. Standartiniai aprašai
5.3.2. Funkciniai aprašai
5.3.2.1. Antraštės funkcijos aprašas
5.3.2.2. Komandų režimo aprašas
5.3.2.3. Abstrakti įrenginio rankena
5.3.2.4. Grupavimo aprašas
5.3.3. Specialūs prašymai
5.3.3.1. SET_LINE_CODING užklausa
5.3.3.2. GET_LINE_CODING užklausa
5.3.3.3. SET_CONTROL_LINE_STATE užklausa
5.3.3.4. SEND_BREAK užklausą
5.3.4. Pranešimai
5.3.4.1. RING^DETECT pranešimas
5.3.4.2. SERIAL_STATE pranešimas
5.4. CDC palaikymas sistemoje „Windows“.
5.4.1. „Windows“ funkcijų, skirtų darbui, apžvalga nuoseklieji prievadai
5.4.1.1. Pagrindinės uosto operacijos
5.4.1.2. Prievado nustatymo funkcijos
5.4.1.3. Specialus prievado nustatymas
5.4.1.4. Gauti modemo linijų būseną
5.4.1.5. Darbas su CDC platformoje. NET
5.4.2. „Windows“ funkcijų ir USB užklausų atitikimas
6 skyrius. HID klasė
6.1. HID įrenginio specifikacija
6.2. Kaip bendrauti su HID įrenginiu
6.3. HID įrenginio tvarkyklės įdiegimas
6.4. HID įrenginio identifikavimas
6.4.1. Identifikavimas įkrovos įrenginiai
6.4.2. HID įrenginio konfigūracijos aprašas
6.4.3. HID deskriptorius
6.4.4. Ataskaitos aprašas
6.5. Ataskaitos deskriptoriaus struktūra
6.5.1. Ataskaitos elementai
6.5.1.1. Trumpo tipo elementai
6.5.1.2. Ilgo tipo elementai
6.5.2. Ataskaitų elementų tipai
6.5.2.1. Esminiai elementai
6.5.2.2. Globalūs elementai
6.5.2.3. Vietiniai elementai
6.5.3. Deskriptorių pavyzdžiai
6.6. Užklausos HID įrenginiui
6.6.1. GET_REPORT užklausa
6.6.2. SET_REPORT užklausa
6.6.3. GET_IDLE užklausa
6.6.4. SET_IDLE užklausa
6.6.5. GET_PROTOCOL užklausa
6.6.6. SET_PROTOCOL užklausa
6.7. Įrankiai
6.8. HID įrenginių tvarkyklės sistemoje Windows
7 skyrius. Kitos USB klasės
III dalis. USB programavimo praktika
8 skyrius. USB įrenginio kūrimas pagal AT89S5131
8.1. Bendra informacija apie AT89S5131
8.2. Struktūrinė schema AT89S5131
8.3. USB registruoja AT89C5131
8.3.1. USBCON registras
8.3.2. USBADDR registras
8.3.3. USBINT registras
8.3.4. USBIEN registras
8.3.5. UEPNUM registras
8.3.6. UEPCONX registras
8.3.7. UEPSTAX registras
8.3.8. UEPRST registras
8.3.9. UEPINT registras
8.3.10. Registruotis UEPIEN
8.3.11. UEPDATX registras
8.3.12. UBYCTLX registras
8.3.13. UFNUML registras
8.3.14. UFNUMH registras
8.4. Grandinė AT89S5131
8.5. Pagrindinis AT89S5131 projektas
8.5.1. Pirmoji programos versija, skirta AT89S5131
8.5.2. Eilučių aprašų pridėjimas
8.5.3. Galinių taškų pridėjimas
8.6. Programos atsisiuntimas
9 skyrius CDC klasės įgyvendinimas
9.1. CDC įgyvendinimas
9.2. Įrenginių aprašai
9.2.1. Inicijuojami galutiniai taškai
9.2.2. CDC užklausų apdorojimas
9.2.3. RS prievado ir CDC linijos konfigūravimas
9.2.4. Duomenų priėmimas ir perdavimas
9.3. Tvarkyklės diegimas
9.4. Duomenų mainų programavimas su CDC įrenginiu Delphi
9.5. Programavimo mainai su CDC įrenginiu C#
9.5.1. Naudojant MSCOMM komponentą
9.5.2. „Win32“ funkcijų naudojimas
9.6. CDC problemos
10 skyrius. HID klasės įgyvendinimas
10.1. HID diegimas AT89S5131
10.2. Kelių baitų perkėlimas
10.3. Funkcijos ataskaitos
10.4. Duomenų perkėlimas iš prieglobos (SET_REPORT)
10.5. HID įrenginio įdiegimas
10.6. Ryšys su HID įrenginiu
10.6.1. Kaip gauti HID įrenginio pavadinimą
10.6.2. Įrenginio atributų gavimas ir ataskaitų skaitymas
10.6.3. Duomenų perkėlimas iš pagrindinio kompiuterio į HID įrenginį
10.7. HID įrenginių pavyzdžiai
10.7.1. Pelės įrenginio įdiegimas
10.7.2. „Klaviatūros“ įrenginio įdiegimas
10.8. Naudojant HID protokolą
10.8.1. Duomenų interpretavimas
10.8.2. Kolekcijos
10.8.3. Masyvai ir mygtukai
10.9. HID įrenginys su keliomis ataskaitomis
11 skyrius. Specialusis „Windows“ funkcijos
11.1. Nustatykite API funkcijas
11.1.1. USB įrenginių išvardijimas
11.1.2. USB įrenginio būsenos gavimas
11.2. USB įrenginių skaičiavimas naudojant WMI
11.3. Ypatumai Windows XP
11.3.1. HidD_GetInputReport – HID ataskaitų skaitymas
11.3.2. Kvitas Neapdoroti duomenysĮvestis
11.4. „DirectX“ funkcijos
11.5. Dialogas dėl naujos įrangos pridėjimo
11.6. Darbas su simboliniais įrenginių pavadinimais
11.7. Saugus „flash drives“ pašalinimas
11.8. Prietaisų papildymų ir pašalinimų aptikimas
11.9. Interneto ištekliai
12 skyrius. Tvarkyklės kūrimas
12.1. WDM tvarkyklės pagrindinės procedūros
12.1.1. Vairuotojo įėjimo procedūra
12.1.2. „AddDevice“ procedūra
12.1.3. Iškrovimo procedūra
12.1.4. Vairuotojo darbo procedūros
12.1.4.1. Paketo antraštė
12.1.4.2. I/O kamino ląstelės
12.4.1.3. Vairuotojo darbo procedūros
12.1.5. IOCTL užklausų aptarnavimas
12.2. Vairuotojo įkėlimas ir prieiga prie vairuotojo procedūrų
12.2.1. Darbo su vairuotoju tvarka
12.2.2. Vairuotojo registracija
12.2.2.1. Registracija naudojant SCM tvarkyklę
12.2.2.2. Tvarkyklės nustatymai registre
12.2.3. Atsižvelgiant į veikimo procedūras
12.2.4. Tvarkyklės saugojimas vykdomajame faile
12.3. Sukurti vairuotoją su naudojant tvarkyklę Studija
12.3.1. Keletas žodžių apie Driver Studio biblioteką
12.3.1.1. KDriver klasė
12.3.1.2. KDevice klasė
12.3.1.3. Klrp klasė
12.3.1.4. KRegistryKey klasė
12.3.1.5. KLowerDevice klasė
12.3.1.6. USB klasės
12.3.2. Kitos Driver Studio klasės
12.3.3. Tvarkyklės šablono kūrimas naudojant Driver Studio
12.3.3.1. 1 veiksmas: nustatykite projekto pavadinimą ir kelią
12.3.3.2. 2 veiksmas. Pasirinkite tvarkyklės architektūrą
12.3.3.3. 3 veiksmas. Padangų pasirinkimas
12.3.3.4. 4 veiksmas: apibrėžkite galinių taškų rinkinį
12.3.3.5. 5 veiksmas: nurodykite klasę ir failo pavadinimą
12.3.3.6. 6 veiksmas: pasirinkite tvarkyklės funkcijas
12.3.3.7. 7 veiksmas. Užklausos apdorojimo būdo pasirinkimas
12.3.3.8. 8 veiksmas: sukurkite nuolatinius tvarkyklės nustatymus
12.3.3.9. 9 veiksmas: tvarkyklės ypatybės
12.3.3.10. 10 veiksmas: IOCTL kodų nustatymas
12.3.3.11. 11 veiksmas: Išplėstiniai nustatymai
12.3.4. Tvarkyklės šablono užbaigimas
12.3.5. Pagrindiniai prietaisų klasės metodai
12.3.6. Duomenų skaitymo įgyvendinimas
12.3.7. Tvarkyklės diegimas
12.3.8. Duomenų skaitytuvas
12.3.9. Duomenų skaitymas iš kitų tipų galinių taškų
12.3.10. „Išvalykite“ USB įrenginio tvarkyklę
IV dalis. Katalogas
13 skyrius. INF failo formatas
13.1. INF failo struktūra
13.1.1. Versijos skyrius
13.1.2. Gamintojo skyrius
13.1.3. Skyrius „Dirs“ į paskirties vietą
13.1.3.1. Key DefaultDescDir
13.1.3.2. Failų sąrašo skyriaus klavišai
13.1.3.3. Dirid raktas
13.1.3.4. Raktų poskyris
13.1.4. Modelio aprašymo skyrius
13.1.5. xxx skyrius. AddRegw xxx. DelReg
13.1.6. xxx skyrius. LogConfig
13.1.7. xxx skyrius. Kopijuoti failus
13.1.8. Stygų skyrius
13.1.9. Sekcijos jungtys
13.2. INF failų kūrimas ir testavimas
13.3. Įrenginių diegimas naudojant INF failą
13.4. USB registro filialai
14 skyrius: Pagrindinės „Windows“ funkcijos
14.1. CreateFile ir CloseHandle funkcijos: objekto atidarymas ir uždarymas
14.1.1. Papildoma informacija
14.1.2. Grąžinimo vertė
14.1.3. Skambučio pavyzdys
14.2. ReadFile funkcija: nuskaito duomenis
14.2.1. Papildoma informacija
14.2.2. Grąžinimo vertė
14.2.3. Skambučio pavyzdys
14.3. Write File funkcija: duomenų perdavimas
14.3.1. Papildoma informacija
14.3.2. Grąžinimo vertė
14.3.3. Skambučio pavyzdys
14.4. ReadFileEx funkcija. APC duomenų skaitymas
14.4.1. Grąžinimo vertė
14.4.2. Papildoma informacija
14.4.3. Skambučio pavyzdys
14.5. WriteFiieEx funkcija: APC duomenų perdavimas
14.5.1. Grąžinimo vertė
14.5.2. Skambučio pavyzdys
14.6. WaitForSingieObject funkcija laukia objekto signalo būsenos
14.6.1. Grąžinimo vertė
14.7. WaitForMultipleObjects funkcija: laukiama objektų signalo būsenos
14.7.1. Grąžinimo vertė
14.8. Funkcija GetOverlapped Result: asinchroninės operacijos rezultatas
14.8.1. Grąžinimo vertė
14.9. DeviceloControl funkcija: tiesioginis vairuotojo valdymas
14.9.1. Grąžinimo vertė
14.10. Atšaukimo/išjungimo funkcija: nutraukia operaciją
14.10.1. Grąžinimo vertė
14.11. Užklausa Dos Device funkcija, gaunant įrenginio pavadinimą pagal jo DOS pavadinimą
14.11.1. Grąžinimo vertė
14.11.2. Skambučio pavyzdys
14.12. Apibrėžkite Dos įrenginio funkciją: operacijos su DOS įrenginio pavadinimu
14.12.1. Grąžinimo vertė
14.12.2. Skambučio pavyzdys
15 skyrius. „Windows“ nuosekliųjų prievadų struktūros ir funkcijos
15.1. COMMCONFIG prievado nustatymų struktūra
15.2. COMMPROP prievado ypatybių struktūra
15.3. COMMTIMEOUTS skirtojo laiko struktūra
15.4. COMSTAT prievado būsenos struktūra
15.5. DCB struktūra
15.6. BuildCommDCB funkcija: sukurkite DCB struktūrą iš eilutės
15.6.1. Papildoma informacija
15.6.2. Grąžinimo vertė
15.6.3. Skambučio pavyzdys
15.7. BuildCommDCBAndTimeouts funkcija: sukurkite DCB struktūrą ir skirtąjį laiką iš eilutės
15.8. SetCommBreak ir ClearCommBreak funkcijos: duomenų išvesties valdymas
15.8.1. Grąžinimo vertė
15.9. Funkcija ClearCommError: gaukite ir išvalykite prievado klaidas
15.9.1. Grąžinimo vertė
15.10. „EscapeCommFunction“: prievado valdymas
15.10.1. Grąžinimo vertė
15.11. Funkcijos GetCommMask ir SetCommMask: įvykių iškvietimo kaukė
15.11.1. Grąžinimo vertė
15.12. Funkcija WaitCommEvent laukia COM prievado įvykio
15.12.1. Grąžinimo vertė
15.12.2. Papildoma informacija
15.12.3. Skambučio pavyzdys
15.13. Funkcijos GetCommConfig ir SetCommConfig: konfigūruokite prievado parametrus
15.13.1. Grąžinimo vertė
15.13.2. Skambučio pavyzdys
15.14. CommConfigDialog funkcija: prievado konfigūracijos dialogas
15.14.1. Grąžinimo vertė
15.14.2. Papildoma informacija
15.14.3. Skambučio pavyzdys
15.15 val. Funkcija GetCommProperties: skaitykite prievado ypatybes
15.15.1. Grąžinimo vertė
15.15.2. Skambučio pavyzdys
15.16. Funkcijos GetCommState ir SetCommState: Uosto būsena
15.16.1. Grąžinimo vertė
15.16.2. Skambučio pavyzdys
15.17 val. Funkcijos GetCommTimeouts ir SetComniTimeouts: prievado laikas
15.17.1. Grąžinimo vertė
15.17.2. Skambučio pavyzdys
15.18 val. PurgeComm funkcija: prievadų buferių praplovimas
15.18.1. Grąžinimo vertė
15.18.2. Skambučio pavyzdys
15.19 val. SetupComm funkcija: buferio dydžių konfigūravimas
15.19.1. Grąžinimo vertė
15.20 val. Funkcijos GetDefaultCommConfig ir SetDefaitltCommConfig: numatytieji prievado nustatymai
15.20.1. Grąžinimo vertė
15.21 val. TransmitCommChar funkcija. transliacija specialieji simboliai
15.21.1. Grąžinimo vertė
15.22 val. Funkcija GetCommModemStatus: modemo būsena
15.22.1. Grąžinimo vertė
15.22.2. Skambučio pavyzdys
15.23 val. EnumPorts funkcija: prievadų surašymas
15.23.1. Papildoma informacija
15.23.2. Grąžinimo vertė
15.23.3. Skambučio pavyzdys
16 skyrius. Windows sąrankos API struktūros ir funkcijos
16.1. Nustatykite DiGetCiassDevs funkciją: surašykite įrenginius
16.1.1. Grąžinimo vertė
16.2. Funkcija SetupDiDestroyDevicelnfoList, atlaisvinanti įrenginio aprašymo bloką
16.2.1. Grąžinimo vertė
16.3. SetupDiEnumDevicelnterfaces funkcija: įrenginio informacija
16.3.1. Grąžinimo vertė
16.4. Funkcijos SetupDiGetDevicelnterfaceDetaii: Detali informacija apie įrenginį
16.5. SetupDiEnumDevicelnfo funkcija: įrenginio informacija
16.6. SetupDiGetDeviceRegistryProperty funkcija: gauti Plug and Play įrenginio ypatybes
16.7. Funkcija CM_Get_DevNode_Status: įrenginio būsena
16.8. Funkcija CM_Request_Device_Eject, kad saugiai pašalintumėte įrenginį
17 skyrius. Windows HID API struktūros ir funkcijos
17.1. HidD_Hello funkcija: bibliotekos patikrinimas
17.2. Funkcija HidD_JetHidGuid: gauti GUID
17.3. HidD_GetPreparsedData funkcija: sukuria įrenginio rankenėlę
17.4. HidD_EreePreparsedData funkcija: atlaisvina įrenginio rankenėlę
17.5. Funkcija „HidD_Get Feature“: funkcijos ataskaitos gavimas
17.6. Funkcija HidD_SetFeature: funkcijos ataskaitos siuntimas
17.7. HidD_GetNumlnputBuffers funkcija: gauti buferių skaičių
17.8. HidD_SetNumlnputBuffers funkcija: nustato buferių skaičių
17.9. Funkcija HidD_GetAttributes: gauti įrenginio atributus
17.10 val. Funkcija HidD_GetManufacturerString. gauti gamintojo eilutę
17.11. Funkcija HidD_GetProductString gauna produkto eilutę
17.12 val. Funkcija HidD_GetSerialNumberString. gauti eilutę serijos numeris
17.13 val. Funkcija HidD_GetIndexedString. gauti eilutę pagal indeksą
17.14 val. Funkcija HidD_Jetlnput Ataskaita gauna įvesties ataskaitą
17.15 val. Funkcija HidD_SetOutputReport. produkcijos ataskaitos perdavimas
17.16 val. HidP_GetCaps funkcija: įrenginio savybių gavimas
17.17 val. Funkcija HidP_MaxDataListLength: gauti ataskaitos dydžius
17.18 val. HidD_FIushQueue funkcija: buferių praplovimas
17.19 val. HidP_GetLinkColiectionNodes funkcija: kolekcijos medis
17.20 val. Funkcijos HidP_GetScaledUsageValue ir HidP_SetScaledUsage Value: konvertuotų verčių gavimas ir nustatymas
17.21 val. HidF_MaxUsageListLength funkcija: raktų kodų buferio dydis
17.22 val. HidP_UsageListDifference funkcija: skirtumas tarp masyvų
Programos
Priedas 1. Papildomos funkcijos
2 priedas. Pavyzdžių rinkimas kitose Delphi versijose
3 priedas. Kalbos identifikatorių lentelė (LangID)
4 priedas. Gamintojo kodų lentelė (tiekėjo ID, įrenginio ID)
Priedas 5. Kaip sukurti įrenginių tvarkytuvės nuorodą
6 priedas. Dažniausiai užduodami klausimai
7 priedas. Kompaktinio disko aprašymas
Literatūra
Dalyko rodyklė

Programavimas per USB jungtis

Įrenginio programavimas sąrankai palydovinės antenos SF-50 per USB skiriasi nuo programavimo per RS-232 tik tuo, kaip duomenys perduodami iš prietaiso į kompiuterį ir iš kompiuterio į instrumentą. Programuojant per USB, naudojamas nešiojamasis USB diskas (flash drive). Tai patogu, kai, pavyzdžiui, jūsų kompiuteris arba, dažniau, nešiojamasis kompiuteris (netbook) neturi serijinio RS-232 prievado ant korpuso.
Norėdami programuoti įrenginį naudodami USB atmintinę, jums reikės:
- USB atmintinė (flash drive), suformatuota Failų sistema RIEBALAI-32;
- Redagavimo programa AliEditor, esanti OPENBOX SF-50 įrenginio programinės įrangos skyriaus aplanke Database_editor_new.

Prieš programuodami turite perkelti duomenų bazę iš įrenginio į kompiuterį. Norėdami tai padaryti, įjunkite įrenginį, prijunkite prie prievado USB atmintinė. Vykdykite MENIU – Sistema – Išsaugoti USB,

Išeikite iš meniu spausdami MENU mygtuką, kol pasirodys dabartinis kanalas arba iki pagrindinio meniu paveikslėlio, jei kanalų dar nėra, ir išimkite „flash drive“. Įdėkite „flash drive“ į kompiuterį.
Paleiskite programą Editor.exe iš aplanko Database_editor_new ir atidarykite jame esantį atvaizdą „flash drive“.

Kai būsite paraginti pasirinkti duomenų bazę, pasirinkite Vartotojo duomenų bazė.

Spustelėkite Gerai. Pasirinkite Visos paslaugos, atsidarys visų duomenų bazėje nuskaitytų ir išsaugotų TV, radijo ir paslaugų kanalų sąrašas.

Redaguokite kanalus kaip norite, pavyzdžiui, palikite tik atvirus kanalus.
Kompiuterio klaviatūroje laikykite nuspaudę Shift mygtuką, paspauskite rodyklę žemyn ir pažymėkite norimus ištrinti kanalus. Spustelėkite Ištrinti, kad ištrintumėte pasirinktą.

Norėdami redaguoti palydovo nustatymus, pasirinkite Visos paslaugos – Palydovinė informacija – EUTELSAT W4, W7, paspauskite mygtuką ENTER.

Jei reikia, redaguokite 1 antenos reikšmes.
Norėdami ištrinti atsakiklį, pasirinkite nereikalingą ir paspauskite kompiuterio klaviatūros mygtuką Delete, patvirtinkite pasirinktą veiksmą.

Norėdami pridėti atsakiklį, eikite į palydovo pavadinimą, paspauskite dešinysis mygtukas pelę ir pasirinkite Pridėti informaciją (arba pažymėkite palydovą ir paspauskite klaviatūros mygtuką Įterpti).

Įveskite naujo atsakiklio duomenis, paimdami juos, pavyzdžiui, iš svetainės lyngsat.com.

Spustelėkite Gerai ir įsitikinkite, kad atsakiklis užregistruotas.

Norėdami pridėti palydovą, eikite į eilutę Palydovo informacija, paspauskite klaviatūros mygtuką Insert ir įveskite naujo palydovo parametrus.

uždarykite redaktorių programą ir pašalinkite diską.
Įdėkite diską į OPENBOX SF-50 įrenginį, vykdykite seką MENIU – Sistema – Atnaujinimas iš USB, pasirinkite režimą „SAT&TP List“.

Pasirinkite Pradėti. Patvirtinkite savo ketinimus.

Įrenginys atnaujins duomenų bazę ir paleis iš naujo. Po perkrovimo turėsite nauju būdu nustatyti meniu kalbą į rusų kalbą. Atkurkite įrenginio gamyklinius nustatymus.
Išeikite iš nustatymų meniu du kartus paspausdami MENU mygtuką. Paspauskite esamo kanalo mygtuką Gerai ir įsitikinkite, kad kanalų sąrašas yra redaguotas.

Taip pat galite įsitikinti, kad atsakiklių ir palydovų sąrašas yra redaguotas.
Programavimas baigtas.

USB magistralė (Universal Serial Bus) pasirodė 1996 m. sausio 15 d., kai pirmąją standarto versiją patvirtino Intel, DEC, IBM, NEC, Northen Telecom ir Compaq.

Pagrindinis jo kūrėjams nustatyto standarto tikslas – sukurti galimybę vartotojams dirbti Plug&Play režimu su periferiniais įrenginiais. Tai reiškia, kad įrenginys turi būti prijungtas prie veikiančio kompiuterio, automatinis atpažinimas iš karto po prijungimo ir vėlesnio atitinkamų tvarkyklių įdiegimo. Be to, patartina maitinti mažos galios įrenginius iš pačios magistralės. Magistralės greičio turėtų pakakti daugumai periferinių įrenginių. USB valdiklis turėtų užimti tik vieną pertrauką, neatsižvelgiant į prie magistralės prijungtų įrenginių skaičių, tai yra išspręsti resursų trūkumo su IBM PC suderinamo kompiuterio vidinių magistralių problemą.

Beveik visos užduotys buvo išspręstos naudojant USB standartą, o 1997 metų pavasarį kompiuteriai su jungtimis USB jungtys prietaisai. Dabar gamintojai taip aktyviai įdiegė USB kompiuterių periferiniai įrenginiai, kuri, pavyzdžiui, iMAC kompiuteryje Apple Kompiuteriai turi tik USB kaip išorinę magistralę.

USB 1.0 funkcijos yra šios:

1. didelė duomenų perdavimo sparta (visu greičiu) – 12 MB tai/Su;

2. maksimalus ilgis kabelis skirtas didelis greitis keitimas – 5 metrai;

3. mažas duomenų apsikeitimo greitis (maža sparta) – 1,5 MB tai/Su;

4. maksimalus kabelio ilgis mažam duomenų perdavimo greičiui yra 3 metrai;

5. maksimali suma prijungti įrenginiai – 127;

6. galimas vienu metu įrenginių su skirtingais valiutos kursais pajungimas;

8. Didžiausias srovės suvartojimas vienam įrenginiui yra 500 mA.

Todėl prie USB 1.0 patartina jungti beveik visus išorinius įrenginius, išskyrus skaitmenines vaizdo kameras ir didelės spartos kietieji diskai. Ši sąsaja ypač patogi prijungiant dažnai prijungtus/atjungiamus įrenginius, pavyzdžiui, skaitmeninius fotoaparatus.
Galimybė naudoti tik du duomenų perdavimo greičius riboja magistralės naudojimą, tačiau žymiai sumažina sąsajos linijų skaičių ir supaprastina aparatinės įrangos diegimą.
Maitinimas tiesiogiai iš USB galimas tik mažos galios įrenginiams, pvz., klaviatūroms, pelėms, vairasvirtėms ir kt.

USB signalai perduodami 4 laidų kabeliu, schematiškai parodyta paveikslėlyje žemiau:

2.6.1 pav. – USB signalo laidai

Čia GND yra bendra laidų grandinė, skirta maitinti išorinius įrenginius, Vbus yra +5 V taip pat maitinimo grandinėms. D+ magistralė skirta duomenims per magistralę perduoti, o D magistralė skirta duomenims priimti.
Viso greičio magistralės kabelis yra vytos poros kabelis, apsaugotas ekranu, taip pat gali būti naudojamas mažo greičio veikimui. Kabelis, skirtas veikti tik minimaliu greičiu (pavyzdžiui, norint prijungti pelę), gali būti bet koks ir neekranuotas.
Išoriniams įrenginiams prijungti naudojamos jungtys skirstomos į serijas: „A“ serijos jungtys (kištukas ir lizdas) yra skirtos tik prijungimui prie šaltinio, pvz., kompiuterio, „B“ serijos jungtys (kištukas ir lizdas) yra tik prijungimui. prie periferinio įrenginio.

USB jungtys turi tokią kaiščių numeraciją, parodytą 2.6.1 lentelėje.

2.6.1 lentelė – USB kontaktų paskirtis ir žymėjimas

1999 m. tas pats kompiuterių įmonių konsorciumas, kuris inicijavo pirmosios USB magistralės standarto versijos kūrimą, pradėjo aktyviai kurti 2.0 USB versiją, kuri išsiskyrė papildomo didelės spartos (Hi-speed) režimo įdiegimu. Magistralės pralaidumas padidintas 40 kartų iki 480 Mbit/s, o tai leido perduoti vaizdo duomenis per USB.
Visiškai išsaugomas visų anksčiau išleistų išorinių įrenginių ir didelės spartos kabelių suderinamumas. 2.0 standarto valdiklis jau integruotas į sistemos loginį programuojamų įrenginių rinkinį (pvz. pagrindinė plokštė Asmeninis kompiuteris).

2008 metais Intel kompanijos, Microsoft, Hewlett-Packard, Texas Instruments, NEC ir NXP Semiconductors sukūrė USB 3.0 standartinę specifikaciją. USB 3.0 specifikacijoje atnaujinto standarto jungtys ir laidai fiziškai ir funkciškai suderinami su USB 2.0, tačiau be keturių ryšio linijų pridėtos dar keturios. Tačiau atsirado naujų kontaktų USB jungtys 3.0 yra atskirai nuo senųjų kitoje kontaktinėje eilėje. Patobulinta USB 3.0 specifikacija Maksimalus greitis informacijos perdavimas iki 5 Gbit/s – tai yra eilės tvarka didesnis nei 480 Mbit/s, kurį gali užtikrinti USB 2.0. Be to, maksimali srovė padidinta nuo 500 mA iki 900 mA vienam įrenginiui, todėl galite maitinti kai kuriuos įrenginius, kuriems anksčiau reikėjo atskiro maitinimo šaltinio.

Tarkime, kad sukūrėte USB įrenginį, su kuriuo turite dirbti kompiuteriu. Tai galima pasiekti bent dviem būdais:

1. visų funkcijų operacinės sistemos tvarkyklės kūrimas;

2. specialios klasės USB sąsajos naudojimas – įrenginiai, vadinami HID (Human Interface Device) įrenginiais.

Pirmasis metodas yra universalus: turėdami pakankamai žinių tvarkyklių rašymo srityje, galite užprogramuoti jį darbui su bet kokiu įrenginiu bet kokiu USB palaikomu greičiu. Tačiau tai gana sudėtinga užduotis.

Antrasis būdas yra toks. Yra sąsaja, kurią palaiko šiuolaikinės operacinės sistemos, skirtos kompiuterio ir žmogaus sąsajos įrenginiams arba HID įrenginiams, pavyzdžiui:

1. klaviatūros, pelės, vairasvirtės;

2. įvairūs jutikliai ir skaitytojai;

3. žaidimų valdymas ir pedalai;

4. mygtukai, jungikliai, reguliatoriai.

Bet kuris toks įrenginys, jei jis atitinka HID įrenginiams keliamus reikalavimus, bus automatiškai atpažintas sistemos ir nereikės rašyti specialių tvarkyklių. Be to, juos programuoti dažniausiai yra daug paprasčiau nei parašyti pasirinktinę įrenginio tvarkyklę. Deja, šis metodas turi reikšmingą trūkumą: informacijos apsikeitimo HID įrenginiu greitis yra labai ribotas ir siekia maksimalią 64 kB/s.

Iš esmės, remiantis HID technologija, galima organizuoti sąveiką su bet kokiu įrenginiu, net jei tai nėra siaurąja prasme sąsajos įrenginys tarp žmogaus ir kompiuterio. Taip išvengiama daug laiko reikalaujančios unikalios įrenginio tvarkyklės kūrimo ir sutaupoma laiko kuriant naują USB įrenginį. Pagrindinio kompiuterio pusėje ryšį su įrenginiu valdys standartinė HID tvarkyklė, įtraukta į operacinę sistemą. Jums tereikia tai padaryti iš įrenginio pusės minimalūs reikalavimai USB-HID protokolas.

Verta paminėti, kad daugelis USB įrenginių, kurie iš pirmo žvilgsnio nepatenka į žmonių sąveikos įrenginių apibrėžimą, vis tiek yra logiškiau įdiegti kaip HID įrenginius. Šis reiškinys yra įprastas gamybos įrangos srityje, kuri neseniai patyrė didžiulį USB technologijos pritaikymą. Pavyzdžiui, apsvarstykite laboratorinį maitinimo šaltinį su galimybe nustatyti jo išvesties signalų parametrus iš kompiuterio naudojant USB sąsają. Pats energijos šaltinis neabejotinai nėra sąveikos su žmogumi priemonė. Tačiau šiuo atveju per USB jungtį įgyvendinamos funkcijos dubliuoja pačiame įrenginyje įdiegtą klaviatūrą, valdiklius ir indikatorius. Ir šie valdikliai patenka į HID apibrėžimą. Atitinkamai logiškiausia yra organizuoti maitinimo šaltinį su šiomis USB funkcijomis kaip HID įrenginį.

Nagrinėtame pavyzdyje normaliam veikimui pakaks mažo duomenų perdavimo greičio, kitais atvejais įrenginiai gali būti labai reiklūs valiutos kursui. Mažas perdavimo greitis yra pagrindinis HID įrenginio dizaino pasirinkimo apribojimas, kuris, palyginti su 12 Mbit/s visu USB 1.0 magistralės greičiu, atrodo kaip didelis HID technologijos trūkumas renkantis konkretų USB diegimą. Tačiau daugeliui komunikacijos užduočių pakanka nurodyto greičio ir HID architektūra kaip specializuota priemonė užima deramą vietą tarp keitimosi duomenimis organizavimo metodų.

Yra dviejų tipų HID įrenginiai: dalyvaujantys (įkrovos) ir tie, kurie nedalyvauja pradiniame kompiuterio įkrovime. Ryškiausias paleidžiamo USB-HID įrenginio pavyzdys yra klaviatūra, kuri pradeda veikti paleidus kompiuterį.

Projektuojant HID įrenginį turi būti laikomasi šių specifikacijos reikalavimų:

1. Viso greičio HID įrenginys gali perduoti 64000 baitų kas sekundę arba 64 baitus kas 1ms; Mažos spartos HID įrenginys gali perduoti iki 800 baitų per sekundę arba 8 baitus kas 10 ms.

2. HID įrenginys gali suplanuoti savo apklausos dažnį, kad nustatytų, ar jis turi naujų duomenų, kuriuos reikia perduoti.

3. Duomenų mainai su HID įrenginiu vykdomi per specialią struktūrą, vadinamą ataskaita. Kiekvienoje apibrėžtoje ataskaitoje gali būti iki 65535 baitų duomenų. Ataskaitų struktūra yra labai lanksti, leidžianti apibūdinti bet kokį duomenų perdavimo formatą. Tam, kad konkretus ataskaitos formatas taptų žinomas šeimininkui, mikrovaldiklyje turi būti specialus aprašymas – ataskaitos aprašas.

USB sąveika tiesiogiai įgyvendinama mikrovaldiklyje keliais būdais:

1. naudojant valdiklį su techninės įrangos palaikymu, pavyzdžiui, AT90USB*, iš atmega;

2. naudojant bet kurio mikrovaldiklio USB sąsajos programinę įrangą.

Programinės įrangos diegimui šiuo metu yra nemažai paruoštų sprendimų įvairioms mikrovaldiklių šeimoms. Dėl AVR mikrovaldikliai, pavyzdžiui, Atmega8 galima naudoti šias nemokamas bibliotekas C kalba:

Abu yra gana paprasti naudoti, užtikrina visišką USB 1.1 mažos spartos įrenginių emuliaciją, išskyrus ryšio klaidų apdorojimą ir elektrines charakteristikas, ir veikia beveik visuose AVR valdikliuose, turinčiuose ne mažiau kaip 2 kilobaitus „flash“ atminties, 128 baitus RAM ir dažnis nuo 12 iki 20 MHz.

Rašyti programas, kurios palaiko Windows USB HID įrenginiams reikalingi hid* antraštės failai, įtraukti į WDK („Windows Driver Kit“), arba galite naudoti laisvai prieinamą hidlibrary biblioteką ar kitą panašią biblioteką.

Taigi apskritai USB programavimas yra gana sudėtinga užduotis, kuriai reikalingas specialus mikrovaldiklis su aparatūros palaikymu ir operacinės sistemos tvarkyklės rašymas. Tačiau praktiškai kurdami įrenginius galite naudoti daug paprastesnę HID įrenginių sąsają, kurios palaikymas įdiegtas lygiu standartinis vairuotojas sistemos, o programavimas supaprastinamas naudojant esamas funkcijų bibliotekas.

Kontroliniai klausimai

  1. Kuo skiriasi USB D ir GND laidai? Kodėl negalite naudoti vieno bendro maitinimo ir signalo laido?
  2. Kiek greičio režimų USB veikimas egzistuoja šiandien (įskaitant 3.0 versiją)?
  3. Kas yra HID įrenginys? Kodėl jie nereikalauja rašymo tvarkyklių, kad jie veiktų šiuolaikinėse operacinėse sistemose?
  4. Ar galima įdiegti USB įrenginius naudojant mikroprocesorių, kuriame nėra integruotos sąsajos palaikymo?
  5. Kokie yra pagrindiniai USB 3.0 ir ankstesnių versijų skirtumai?

Gera knyga, daug kas paaiškina. Tai bus naudinga tiems, kurie nori suprasti, kaip duomenys perduodami per USB magistralę.

Įvadas 1
Kam skirta ši knyga: 2
Ką rasite 2 knygoje
Programinės įrangos reikalavimai 3
Aparatinės įrangos reikalavimai 4
Apie 4 programos kodą
Trumpas 4 skyrių aprašymas
6 žymėjimas
Ačiū 7
I DALIS. ĮVADAS Į USB 9
1 skyrius. Kas yra USB 11
1.1. USB 11 istorija
1.2. USB palyginimas su kitomis sąsajomis 14
1.3. USB 16 sąvokos
1.3.1. Bendroji autobusų architektūra 16
1.3.2. 16 autobuso fizinė ir loginė architektūra
1.3.3. USB 18 komponentai
1.3.4. USB įrenginio ypatybės 18
1.3.5. Stebulės savybės 19
1.3.6. Prieglobos savybės 20
1.4. 20 USB įrenginių pavyzdžių
1.4.1. Pelė ir klaviatūra., 21
1.4.2. Monitoriai 21
1.4.3. USB į COM ir USB į LPT adapteriai 22
1.4.4. Skaitytuvai 23
1.4.5. Modemas 23
1.4.6. 24 garsiakalbiai
1.4.7. Flash diskai 25
1.4.8. Centrai 28
1.4.9. Matavimo technologija 28
1.4.10. Egzotiški prietaisai 29
1.5. Tinklo prisijungimas per USB 30
1.5.1. USB-Ethernet keitiklis 31
1.5.2. Tiesioginis prijungimas per USB prievadą 31
1.6. Duomenų perdavimas 31
1.6.1. Duomenų perdavimo principai 32
1.6.2. Pertraukimo mechanizmas 32
1.6.3. Pagrindinio kompiuterio adapterio sąsajos 32
1.6.4. DMA galimybė 34
1.6.5. Duomenų perdavimo režimai 34
1.7. USB įrenginių diegimas ir konfigūravimas 35
1.7.1. BIOS nustatymai, skirti USB 38
1.7.2. Trikčių šalinimas 41
1.8. USB 45 apribojimai
1.9. Jei perkate kompiuterį 46
1.9.1. HS ir USB 2.0 nėra tas pats dalykas! 46
1.9.2. Pagrindinė plokštė 47
1.9.3. 48 pastatas
1.9.4. USB „seniems“ kompiuterių modeliams 48
1.10. Internetiniai šio skyriaus ištekliai 49
2 skyrius. Aparatūra USB 51
2.1. Kabeliai ir jungtys 51
2.1.1. Kabelių tipai 52
2.1.2. Kabelio ilgis 53
2.1.3. Jungtys 53
2.2. Fizinė sąsaja 55
2.2.1. Duomenų kodavimas 57
2.2.2. Įrenginio identifikavimas 58
2.3. Mityba 59
2.3.1. USB maitinimo tipai 59
2.3.2. Energijos valdymas 60
2.3.3. Mažos galios režimo įjungimas 61
2.4. Internetiniai šio skyriaus ištekliai 61
II DALIS. VIDAUS ORGANIZACIJA USB 63
3 skyrius. Autobuso vidaus organizavimas 65
3.1. Loginio ryšio lygiai 65
3.1.1. 66 lygio kliento programinė įranga
3.1.2. USB sistemos tvarkyklės lygis 67
3.1.3. Sąsajos pagrindinio kompiuterio valdiklio sluoksnis 68
3.1.4. 68 lygio periferinė magistralė
3.1.5. 69 lygio USB loginis įrenginys
3.1.6. USB įrenginio funkcinis lygis 69
3.2. Duomenų perdavimas 69 lygiais
3.3. Duomenų perdavimo rūšys 71
3.4. Sinchronizavimas su izochronine transmisija 73
3.5. Personalas 77
3.6. Galiniai taškai 78
3.7. 79 kanalai
3.8. Pakuotės 81
3.8.1. IN, OUT, SETUP ir PING žymeklio paketų formatas 83
3.8.2. SOF 83 paketo formatas
3.8.3. Duomenų paketo formatas 84
3.8.4. Patvirtinimo paketo formatas< 84
3.8.5. Paketo formatas SPLIT * 84
3.9. Kontrolinė suma 85
3.9.1. CRC 86 skaičiavimo algoritmas
3.9.2. Programinė įranga CRC 87 skaičiavimas
3.10. Sandoriai 90
3.10.1. Sandorių tipai 91
3.10.2. Sandorio patvirtinimas ir srauto valdymas 92
3.10.3. Sandorių protokolai 93
4 skyrius. Vidinė įrenginio struktūra 96
4.1. Užklausos USB įrenginiams 96
4.1.1. 96 konfigūracijos paketas
4.1.2. Standartinės užklausos įrenginiams 99
4.1.3. Įrenginio aprašai 105
5 skyrius. Vidinė pagrindinio kompiuterio ir mazgų organizavimas 123
5.1. Stebulės 123
5.1.1. Pagrindinio kompiuterio valdiklio sąveika su šakotuvu 126
5.1.2. Centro aprašas 127
5.1.3. Centro užklausos 129
5.1.4. Prašyti CLEAR_HUB_FEATURE 130
5.1.5. Prašyti CLEAR PORT_FEATURE 130
5.1.6. Prašyti GET_BUS_STA TE 131
5.1.7. Prašyti GET_HUB_DESCRfPTOR 131
5.1.8. Užklausa GET_HUB_STATUS 131
5.1.9. Prašyti GET_PORT_STA TUS 132
5.1.10. Užklausa SET_HUB_DESCRIPTOR 134
5.1.11. Prašyti SET_HUB_FEATURE 134
5.1.12. NUSTATYTI UOSTOS FUNKCIJŲ užklausą. 134
5.2. Įrenginių bendradarbiavimas su skirtingu greičiu 135
6 skyrius. USB be kompiuterio 137
6.1. OTG 138 jungtys
6.2. OTG įrenginių tipai 138
6.3. OTG įrenginio aprašas 139
6.4. Internetiniai šio skyriaus ištekliai 140
III DALIS. PROGRAMAVIMO PRAKTIKA 141
7 skyrius. USB palaikymas„Windows 143“.
7.1. Modelis WDM 144
7.2. Sąveika su USB tvarkykle 146
8 skyrius. HID įrenginiai * 149
8.1. HID įrenginio ypatybės 149
8.2. Kaip susisiekti su HID įrenginiu 151
8.3. HID įrenginio įdiegimas 152
8.4. HID įrenginio identifikavimas 152
8.4.1. Įkrovos įrenginio identifikavimas 153
8.4.2. HID įrenginio konfigūracijos aprašas 153
8.4.3. HID deskriptorius 154
8.4.4. 156 ataskaitos aprašas
8.5. Ataskaitos deskriptoriaus struktūra 156
8.5.1. Ataskaitos elementų struktūra 156
8.5.2. Ataskaitos elementų tipai 157
8.5.3. Deskriptorių pavyzdžiai 165
8.6. HID įrenginio užklausos 168
8.6.1. GET_REPORT užklausa. 169
8.6.2. Užklausa SET_REPORT 169
8.6.3. GETJDLE užklausa. 170
8.6.4. Užklausa SETJDLE 170
8.6.5. Prašyti GET_PROTOCOL 171
8.6.6. Užklausa SET_PROTOCOL 171
8.7. Įrankiai 171
8.8. Sąveika su HID tvarkykle 172
9 skyrius. WDM 181 įvadas
9.1. Tvarkyklės sluoksniai 183
9.2. Simboliniai prietaisų pavadinimai 184
9.3. WDM tvarkyklės pagrindinės procedūros 189
9.3.1. Procedūra DriverEntry 190
9.3.2. 192 įrenginio pridėjimo procedūra
9.3.3. 194 iškrovimo procedūra
9.3.4. Vairuotojo darbo procedūros 196
9.3.5. IOCTL 203 užklausų aptarnavimas
9.4. Vairuotojo įkėlimas ir prieiga prie vairuotojo procedūrų 209
9.4.1. Darbo su vairuotoju tvarka 209
9.4.2. Vairuotojo registracija 210
9.4.3. Atsižvelgiant į naudojimo procedūras 217
9.4.4. Tvarkyklės saugojimas vykdomajame faile 218
9.5. Tvarkyklės kūrimo įrankiai 220
9.5.1. NuMega Driver Studio 220
9.5.2. Jungo WinDriver 220
9.5.3. Jungo branduolio tvarkyklė 220
10 skyrius. USB PnP specifikacija 221
10.1. Įvadas į „Plug and Play“ 221
10.1.1. „Plug and Play“ užduotys ir funkcijos 221
10.1.2. Vykdoma PnP procedūra 222
10.1.3. Programinės įrangos komponentai PnP 224
10.2. „Plug and Play“, skirta USB 225
10.2.1. USB 226 įrenginių konfigūravimas
10.2.2. USB įrenginio numeris 226
10.2.3. PnP USB įrenginio identifikatoriai 228
10.3. USB įrenginių sąrašo gavimas 229
10.4. INF failas 234
10.4.1. INF failo struktūra 234
10.4.2. Skyrius 235 versija
10.4.3. Skyrius Gamintojas 237
10.4.4. Skyrius DestinationDirs 239
10.4.5. Modelio aprašymo 241 skyrius
10.4.6. Skyrius xxx.AddReg ir xxx.DelReg. 242
10.4.7. Skyrius xxx.LogConfig 244
10.4.8. Skyrius xxx.CopyFiles 244
10.4.9. Skyrius Stygos 245
10.4.10. Sekcijos jungtys 246
10.4.11. INF failų kūrimas ir tikrinimas 247
10.4.12. Įrenginių diegimas naudojant INF failą 248
10.5. USB 249 registro filialai
11 skyrius. BIOS funkcijos 251
11.1. Serviso BIOS 1AN 251
11.1.1. Funkcija B101H - PCI BIOS 252 buvimo nustatymas
11.1.2. Funkcija В102Н - PCI įrenginio paieška pagal identifikatorius
prietaisas ir gamintojas 253
11.1.3. Funkcija B103H – ieškokite PCI įrenginio pagal klasės kodą 254
11.1.4. Funkcija B108N – nuskaito konfigūracijos registrą (baitas) 255
11.1.5. Funkcija VYu9N - konfigūracijos registro skaitymas (Word) 256
11.1.6. Funkcija B10AN – nuskaito konfigūracijos registrą (DWord) 256
11.1.7. Funkcija В10ВН - rašyti konfigūracijos registrą (baitas) 257
11.1.8. Funkcija B10CH - konfigūracijos registro įrašymas (Word) 257
11.1.9. Funkcija B10DH – konfigūracijos registro įrašymas (DWord) 258
11.2. Naudojimo pavyzdys 259
IV DALIS. USB ĮRENGINIŲ KŪRIMAS 283
12 skyrius. USB išoriniai įrenginiai 285
12.1. Atmel 286 lustai
12.1.1. Mikrovaldikliai su MSC-51 286 architektūra
12.1.2. Centro valdikliai 289
12.1.3. Hub mikroprocesoriai su AVR 289 branduoliu
12.1.4. Kiti Atmel 290 lustai
12.2. Cygnal 291 lustai
12.2.1. Mikroprocesoriai C8051F320 ir C8051F321 291
12.2.2. Kiti Cygnal 293 lustai
12.3. FTDI 296 lustai
12.3.1. Lustai FT232AM ir FT232BM 297
12.3.2. Lustai FT245AM ir FT245BM 298
12.3.3. Lustas FT2232BM 299
12.3.4. Lustas FT8U100AX 300
12.3.5. Derinimo rinkiniai ir moduliai 301
12.3.6. Vairuotojai 302
12.3.7. Papildomos komunalinės paslaugos 303
12.3.8. Kiti 304 moduliai
12.4. Intel 304 lustai
12.5. Mikroschema 308 lustai
12.6. „Motorola 308“ lustai
12.7. Philips 309 lustai
12.7.1. USB 310 lustai
12.7.2. Hubs 311
12.7.3. Kiti Philips 313 lustai
12.8. Texas Instruments 314 lustai
12.9. Trans Dimension 317 lustai
12.10. 318 galios apsaugos lustai
12.11. Internetiniai šio skyriaus ištekliai 319
13 skyrius. HID įrenginys, pagrįstas Atmel AT89C5131 322
13.1. Blokinė schema AT89S5131 322
13.2. USB registruoja AT89С5131 324
13.2.1. USBCON registras 324
13.2.2. USBADDR registras 326
13.2.3. USBINT registras 327
13.2.4. USBIEN 328 registras
13.2.5. UEPNUM registras. 329
13.2.6. Užregistruokite UEPCONX 330
13.2.7. UEPSTAX registras. 331
13.2.8. Registruotis UEPRST. 334
13.2.9. UEPINT registras. 335
13.2.10. Užsiregistruokite UEPIEN 336
13.2.11. Užregistruokite UEPDATX 337
13.2.12. Užsiregistruokite UBYCTLX 337
13.2.13. UFNUML registras 338
13.2.14. UFNUMH registras. 338
13.3. Grandinė AT89S5131 338
13.4. Programavimo įrankiai 339
13.4.1. Kompiliatorius 341
13.4.2. Programuotojas 342
13.5. Programa, skirta mikroprocesoriui 349
13.5.1. Pirmoji programos versija, skirta AT89S5131 349
13.5.2. Eilučių deskriptorių pridėjimas 369
13.5.3. Galinių taškų pridėjimas 374
13.5.4. HID įrenginio kūrimas 377
13.5.5. Ryšys su HID įrenginiu 381
13.6. Ataskaitų skaitymas sistemoje „Windows 388“.
13.7. Papildomos „Windows XP 396“ funkcijos
13.8. Įrenginys su keliomis ataskaitomis 397
14 skyrius. USB įrenginio kūrimas pagal ATMEL AT89C5131 402
14.1. Ne HID įrenginys 402
14.2. Tvarkyklės kūrimas naudojant Driver Studio 405
14.2.1. Keletas žodžių apie Driver Studio 407 biblioteką
14.2.2. Kitos Driver Studio 411 klasės
14.2.3. Tvarkyklės šablono kūrimas naudojant Driver Studio 412
14.2.4. Tvarkyklės šablono 422 tobulinimas
14.2.5. Pagrindiniai 423 įrenginių klasės metodai
14.2.6. Skaitymo duomenų įgyvendinimas 426
14.2.7. Įdiegti tvarkyklę 428
14.2.8. Duomenų skaitytuvas 429
14.2.9. Duomenų skaitymas iš kitų tipų galinių taškų 438
14.2.10. "Švarus" USB tvarkyklė 439
15 skyrius: FTDI 457 lustų naudojimas
15.1. Funkcinė diagrama FT232BM 457
15.2. Grandinės dizainas FT232BM 460
15.3. D2XX 460 funkcijos
15.4. Perėjimas iš COM į USB 465
15.4.1. 465 keitiklio grandinės aprašymas
15.4.2. Bodų spartos nustatymas 467
V DALIS. VADOVAS 469
16 skyrius: Pagrindinės „Windows“ funkcijos 471
16.1. CreateFile ir CloseHandle funkcijos: objekto atidarymas ir uždarymas.471
16.1.1. Papildoma informacija 472
16.1.2. Grąžinimo vertė 472
16.1.3. Pavyzdys skambinti 472
16.2. Skaitymo failo funkcija: duomenų skaitymas 473
16.2.1. Papildoma informacija 474
16.2.2. Grąžinimo vertė 474
16.2.3. Pavyzdys skambinti 474
16.3. WriteFile funkcija: duomenų perdavimas 475
16.3.1. Papildoma informacija 476
16.3.2. Grąžinimo vertė 476
16.3.3. Pavyzdys skambinti 476
16.4. ReadFileEx funkcija. APC duomenų skaitymas 477
16.4.1. Grąžinimo vertė 479
16.4.2. Papildoma informacija 479
16.4.3. Pavyzdys skambinti 479
16.5. WriteFileEx funkcija: APC duomenų perdavimas 480
16.5.1. Grąžinimo vertė 481
16.5.2. Pavyzdys skambinti 481
16.6. Funkcija WaitForSingleObject laukia signalo
objekto būsena 482
16.6.1. Grąžinimo vertė 482
16.7. WaitForMultipleObjects funkcija: laukia signalo
objekto būsenos 483
16.7.1. Grąžinimo vertė 484
16.8. Funkcijos GetOverlappedResult asinchroninės operacijos rezultatas 484
16.8.1. Grąžinimo vertė 485
16.9. „DeviceIoControl“ funkcija: tiesioginis vairuotojo valdymas 485
16.9.1. Grąžinimo vertė 487
16.10. QueryDosDevice funkcija: įrenginio pavadinimo gavimas
jo DOS vardu 487
16.10.1. Grąžinimo vertė 488
16.10.2. Pavyzdys skambinti 488
16.11: Apibrėžkite Dos įrenginio funkciją: operacijos su DOS įrenginio pavadinimu 489
16.11.1. Grąžinimo vertė 490
16.11.2. Pavyzdys skambinti 490
17 skyrius. HID API funkcijos. 492
17.1. HidD_Hello funkcija: tikrinama biblioteka 492
17.2. Funkcija HidD_GetHidGuid: gaunamas GUID 492
17.3. Funkcija HidD_GetPreparsedData: įrenginio rankenos kūrimas 493
17.4. HidD_FreePreparsedData funkcija: įrenginio rankenos atlaisvinimas 493
17.5. Funkcija HidD_GetFeature: gauna FEATURE ataskaitą 494
17.6. Funkcija HidD_SetFeature: siunčia FEATURE ataskaitą 494
17.7. HidD_GetNumInputBuffers funkcija: gauti buferių skaičių 495
17.8. Funkcija HidD_SetNumInputBuffers: buferių skaičiaus nustatymas iki 495
17.9. Funkcija HidD_GetAttribntes: įrenginio atributų gavimas 495
17.10 val. Funkcija HidD_GetMamifactnrerStnng. gauti gamintojo eilutę 496
17.11. Funkcija HidD_GetProductString. gauti 497 produktų liniją
17.12 val. Funkcija HidD_ Get Serial MumberString. gauti eilutę
Serijos numeris 497
17.13 val. Funkcija HidD_GetIndexedString. gauti eilutę ties 498 indeksu
17.14 val. Funkcija HidDjGetlnputReporr. gauna INPUT ataskaitą 498
17.15 val. Funkcija HidD_SetOutputReport. 499 išvesties ataskaitos siuntimas
17.16 val. Funkcija HidP_GetCaps: įrenginio savybių gavimas 499
17.17 val. Funkcija HidP_MaxDataListLength: gauti 500 ataskaitų dydžius
18 skyrius. UCH 502 pagrindinio kompiuterio valdiklis
18.1. Pagrindinio kompiuterio valdiklio valdymo registrai 502
18.1.1. USB komandų registras (USBCMD) ..504
18.1.2. USB būsenos registras (USBSTS) 506
18.1.3. Pertraukimų valdymo registras (USBINTR) 506
18.1.4. Rėmo numerių registras (FRNUM) 507
18.1.5. Frame Base Address Register (FLBASEADD) 508
18.1.6. Kadrų modifikatorių registro (SOFMOD) 508 pradžia
18.1.7. Uosto būklės ir kontrolės registras (PORTSC) 509
18.2. UCH 510 pagrindinio kompiuterio valdiklio duomenų struktūros
18.2.1. 510 kadrų sąrašas
18.2.2. Perkėlimo deskriptorius i 511
18.2.3. Eilės antraštė 514
18.3. Apdorojamas UCH 516 deskriptorių sąrašas
19 skyrius. Įrankiai 518
19.1. „Microsoft Visual Studio Tools 518“.
19.1.1. Priklauso nuo 518
19.1.2. Klaidų paieška 518
19.1.3. GuidGen 518
19.2. Microsoft DDK 520 įrankiai
19.2.1. „DeviceTree 520“.
19.2.2. DevCon.-521
19.2.3. Chklnf ir Genlnf. 526
19.3. CompuWare Corporation Tools 527
19.3.1. Monitorius 527
19.3.2. SymLink 527
19.3.3. EzDriverlninstaller 527
19.3.4. WdmSniff 527
19.4. Reiškia „Syslntemals 528“.
19.4.1. Winobj 528
19.5. USB įrankių forumas 531
19.5.1. HID deskriptoriaus įrankis 531
19.6. HDD programinė įranga 533
19.7. Sourceforge įrankiai 533
PARAIŠKOS 535
Priedas 1. Papildomos funkcijos 537
2 priedas. Kalbų identifikatorių lentelė (LangID) 539
3 priedas. Gamintojų kodų lentelė (tiekėjo ID, įrenginio ID) 543
4 priedas. CD 546 aprašymas
Literatūra 548
Dalyko rodyklė 549

Dalintis