USB ინტერფეისის პრაქტიკული გამოყენება PIC კონტროლერებში. უმარტივესი USB მოწყობილობების დაპროგრამება Delphi-ში შეცვალეთ მოწყობილობის სახელი საკუთარი სახელით

როგორც აღვნიშნეთ, Windows ოპერაციული სისტემები უზრუნველყოფენ პროგრამულ მხარდაჭერას USB მოწყობილობებისთვის. USB მოწყობილობების მონაცემთა ნაკადების დამუშავება ოპერაციული სისტემის დონეზე ხორციელდება სტანდარტული დრაივერების დასტაებით, რომლებიც ასრულებენ ყველა USB მოწყობილობის მართვის ძირითად ფუნქციებს და მათ და სისტემას შორის მონაცემთა გაცვლის.

თუ გჭირდებათ პროგრამული უზრუნველყოფის დაწერა USB მოწყობილობისთვის, რომელიც გააფართოვებს მონაცემთა დამუშავების შესაძლებლობებს, მაშინ შეგიძლიათ აირჩიოთ სამი შესაძლო გზადან ერთი:

დაწერეთ თქვენი საკუთარი მოწყობილობის დრაივერი, რომელიც უზრუნველყოფს ყველა საჭირო კონტროლის და მონაცემთა გაცვლის ფუნქციას და პროგრამას, რომელიც ურთიერთქმედებს ამ დრაივერთან მომხმარებლის რეჟიმში. ამ შემთხვევაში, თქვენ შეგიძლიათ მთლიანად გააკეთოთ სტანდარტული სისტემის დრაივერების გარეშე;

დაწერეთ ფილტრის დრაივერი, რომელიც უზრუნველყოფს საჭირო ფუნქციონირებას, მაგრამ ზის დრაივერების დასტაში სისტემის დრაივერების ზემოთ. ამრიგად, ყველა სტანდარტული დამუშავების ფუნქცია შესრულდება სისტემის მიერ დაინსტალირებული USB დრაივერებით, ხოლო დამატებითი ფუნქციები უზრუნველყოფილი იქნება თქვენი ფილტრის დრაივერის მიერ, რომელთანაც მომხმარებლის პროგრამა ურთიერთქმედებს;

გამოიყენეთ ფუნქციების და დრაივერების უფასო ბიბლიოთეკები

USB მოწყობილობაზე წვდომისთვის.

უმეტეს შემთხვევაში, USB მოწყობილობაზე პროგრამული უზრუნველყოფის წვდომა შეიძლება საჭირო გახდეს, თუ მოწყობილობა ასრულებს ძალიან სპეციფიკურ ფუნქციას. მაგალითად, USB-ის ბაზაზე შემუშავებულია „ელექტრონული ოსცილოსკოპები“ ან მონაცემთა შეგროვების სისტემები, რომლებთან მუშაობისთვის საჭიროა თავად მოწყობილობაზე წვდომა. უმეტეს შემთხვევაში, შეგიძლიათ გამოიყენოთ ფუნქციების უფასო ბიბლიოთეკები, რომლებიც იმუშავებს თითქმის ყველა პოპულარულ პროგრამირების გარემოში. მაგალითად, GNU-ს ეგიდით შეიქმნა პროგრამული უზრუნველყოფა, რომელიც ცნობილია როგორც LibUsb, რომელიც მოიცავს აუცილებელ დრაივერებს და ფუნქციების ბიბლიოთეკებს Windows და Linux ოპერაციულ სისტემებზე გასაშვებად. ეს ფუნქციების ბიბლიოთეკები ძალიან პოპულარულია და საშუალებას გაძლევთ სწრაფად განავითაროთ პროგრამები, რომლებიც ურთიერთქმედებენ თქვენს მოწყობილობასთან სტანდარტული ფუნქციების ნაკრების მეშვეობით. ეს გამორიცხავს თქვენი მოწყობილობის დრაივერის ჩაწერის აუცილებლობას, რაც მნიშვნელოვნად დაზოგავს დროს.

გარდა ამისა, მომხმარებელთა უმეტესობა არ იცნობს დრაივერის განვითარების მეთოდოლოგიას,

და ეს არის პროგრამირების ძალიან რთული სფერო, ამიტომ ასეთი თავისუფლად გადანაწილებული პროგრამული უზრუნველყოფის ხელმისაწვდომობა ფასდაუდებელი დახმარება იქნება მომხმარებელთა ფართო სპექტრისთვის. LibUsb პროექტის საფუძველზე შემუშავდა wrapper-ები Visual Basic .NET-თან და C#.NET-თან მუშაობისთვის, რომელთაგან ყველაზე პოპულარულია LibUsbDotNet, რომელიც ასევე შეიქმნა უფასო პროგრამული უზრუნველყოფის ეგიდით. USB მოწყობილობების პროგრამირების ერთი შეხედვით სირთულის მიუხედავად, ჩამოთვლილი პროგრამული უზრუნველყოფა ამ ამოცანას იმდენად აადვილებს, რომ დამწყებთათვისაც კი შეუძლიათ ამის გაკეთება. მოდით გადავხედოთ თქვენს USB მოწყობილობებთან მუშაობის პრაქტიკულ მაგალითებს და დავიწყოთ LibUsb პროგრამული პაკეტით. სხვათა შორის, ზემოაღნიშნული პროგრამული უზრუნველყოფის ჩამოტვირთვა შესაძლებელია უფასოდ www.sourceforge.net-დან ან მრავალი დუბლიკატი საიტიდან.

როგორ ვიმუშაოთ LibUsb USB ფუნქციების ბიბლიოთეკებთან? ბიბლიოთეკა აგებულია ასე

მასშტაბირება, რათა შეასრულოთ USB მოწყობილობასთან დაკავშირებული ძირითადი ოპერაციები:

იდენტიფიკაცია ან სხვა სიტყვებით რომ ვთქვათ, ჩამოთვლა. ამ ოპერაციის შესრულებისას გამოვლენილია USB ავტობუსთან დაკავშირებული მოწყობილობები, რომელიც ხორციელდება libusb ბიბლიოთეკის შესაბამისი ფუნქციების გამოყენებით;

მოწყობილობის პარამეტრების (მოწყობილობის იდენტიფიკატორები, მწარმოებლის მონაცემები და მოწყობილობის მახასიათებლები) მიღება, რისთვისაც ბიბლიოთეკაში არის მთელი რიგი ფუნქციები;

მონაცემების გახსნა, დახურვა, წაკითხვა და ჩაწერა, ბრძანებების გაგზავნა. USB მოწყობილობაზე, ისევე როგორც ფაილურ სისტემაში არსებულ სხვა ობიექტებზე, წვდომა შესაძლებელია წერით კითხვით, რაც ხდება ბიბლიოთეკის შესაბამისი ფუნქციების გამოყენებით.

ყველა ზემოაღნიშნული მახასიათებლის დანერგვა შესაძლებელია შესაბამისი libusb ფუნქციების გამოძახებით, მაგრამ ისინი აქ არ იქნება ჩამოთვლილი, რადგან ამას ძალიან დიდი ადგილი დასჭირდება; ჩვენ ვნახავთ როგორ გამოვიყენოთ ზოგიერთი ფუნქცია.

ბრინჯი. 6.10

libusb0.sys დრაივერის მდებარეობა მოწყობილობის დრაივერის დასტაში

მაგალითები პრაქტიკულ მაგალითებზე. მკითხველს შეუძლია ყველა ფუნქციის აღწერა შესაბამის დოკუმენტაციაში. შეგახსენებთ, რომ ჩვენ განვიხილავთ libusb ფუნქციების გამოყენებას Windows ოპერაციულ სისტემებში.

Windows ოპერაციულ სისტემაში libusb-ით განაწილების ნაკრების დაყენებისას სისტემაში დამონტაჟებულია libusb0.sys ფილტრის დრაივერი. ეს დრაივერი დაჯდება სისტემის დრაივერების დასტაზე, რაც ადვილი შესამჩნევია, მაგალითად, ნებისმიერი USB მოწყობილობის დრაივერის ინფორმაციის დათვალიერებით (სურათი 6.10).

გარდა ამისა, მომხმარებლის პროგრამებიდან დრაივერზე წვდომისთვის, სისტემაში დამონტაჟებულია libusb0.dll ბიბლიოთეკა, რომლის გამოყენებით შეგიძლიათ განავითაროთ მომხმარებლის პროგრამები.

ბრინჯი. 6.17

აპლიკაციის ფანჯრის ხედი დეინსტალაციის დროს

USB მოწყობილობები სისტემიდან

შესავალი
ვისთვის არის ეს წიგნი?
რას იპოვით წიგნში
პროგრამული უზრუნველყოფის მოთხოვნები
ტექნიკის მოთხოვნები
პროგრამის კოდის შესახებ
თავების შეჯამება
აღნიშვნები
მადლიერებები
კავშირი
ნაწილი I. შესავალი USB
თავი 1. USB სპეციფიკაცია
1.1. რა არის USB და რატომ არის საჭირო
1.1.1. საერთო USB არქიტექტურა
1.1.2. USB ფიზიკური და ლოგიკური არქიტექტურა
1.1.3. USB კომპონენტები
1.1.4. USB მოწყობილობის თვისებები
1.1.5. მონაცემთა გადაცემის პრინციპები
1.1.6. შეფერხების მექანიზმი
1.1.7. მონაცემთა გადაცემის რეჟიმები
1.1.8. მონაცემთა გაცვლის ლოგიკური დონეები
1.1.8.1. კლიენტის პროგრამული დონე
1.1.8.2. USB სისტემის დრაივერის დონე
1.1.8.3. ჰოსტის კონტროლერის ფენის ინტერფეისი
1.1.8.4. USB პერიფერიული ავტობუსის დონე
1.1.8.5. USB ლოგიკური მოწყობილობის დონე
1.1.8.6. USB მოწყობილობის ფუნქციონალური დონე
1.1.9. მონაცემთა გადაცემა ფენით
1.1.10. მონაცემთა გადაცემის სახეები
1.1.11. Პერსონალის
1.1.12. ბოლო წერტილები
1.1.13. არხები
1.1.14. პაკეტები
1.1.14.1. ტოკენის პაკეტების ფორმატი IN, OUT, SETUP და PING
1.1.14.2. SOF პაკეტის ფორმატი
1.1.14.3. მონაცემთა პაკეტის ფორმატი
1.1.14.4. დადასტურების პაკეტის ფორმატი
1.1.14.5. SPLIT პაკეტის ფორმატი
1.1.15. შეამოწმეთ ჯამი
1.1.15.1. CRC გაანგარიშების ალგორითმი
1.1.15.2. პროგრამული უზრუნველყოფის CRC გაანგარიშება
1.1.16. გარიგებები
1.1.16.1. ტრანზაქციის ტიპები
1.1.16.2. ტრანზაქციის დადასტურება და ნაკადის კონტროლი
1.1.16.3. გარიგების ოქმები
1.2. მოთხოვნები USB მოწყობილობებზე
1.2.1. კონფიგურაციის პაკეტი
1.2.2. სტანდარტული მოთხოვნები USB მოწყობილობებზე
1.2.2.1. მიიღეთ GET_STATUS მდგომარეობა
1.2.2.2. მიმდინარეობს CLEAR_FEATURE თვისების გადატვირთვა
1.2.2.3. SET_FEATURE საკუთრების გარჩევადობა
1.2.2.4. მისამართის დაყენება SET_ADDRESS ავტობუსში
1.2.2.5. GET_DESCRIPTOR აღწერის მიღება
1.2.2.6. გადის SET_DESCRIPTOR აღმწერი
1.2.2.7. მიმდინარეობს კონფიგურაციის კოდი GET_CONFIGURATION
1.2.2.8. SET_CONFIGURATION კონფიგურაციის კოდის დაყენება
1.2.2.9. კოდის მიღება GET_INTERFACE ინტერფეისის კონფიგურაციისთვის
1.2.2.10. SET_INTERFACE ინტერფეისის დაყენების კოდის დაყენება
1.2.2.11. სინქრონიზაციის ჩარჩოს ნომრის SYNC_FRAME დაყენება
1.2.2.12. სტანდარტული მოთხოვნების დამუშავება
1.2.3. მოწყობილობის აღმწერი
1.2.3.1. მოწყობილობის აღმწერი
1.2.3.2. საკვალიფიკაციო მოწყობილობის აღმწერი
1.2.3.3. კონფიგურაციის აღმწერი
1.2.3.4. ინტერფეისის აღმწერი
1.2.3.5. ბოლო წერტილის აღმწერი
1.2.3.6. სიმებიანი აღმწერი
1.2.3.7. სპეციფიკური აღწერები
1.2.3.8. აღწერების მიღების რიგი
1.3. Plug and Play (PnP) სისტემა
1.3.1. USB მოწყობილობების კონფიგურაცია
1.3.2. USB მოწყობილობების ნუმერაცია
1.3.3. PnP იდენტიფიკატორები USB მოწყობილობებისთვის
1.3.4. მოწყობილობის სიმბოლური სახელები
1.4. WDM მოდელი
თავი 2. C პროგრამირება მიკროკონტროლერისთვის
2.1. ზოგადი ინფორმაცია მიკროკონტროლერებისთვის C ენის შესახებ
2.2. სტანდარტული ბიბლიოთეკების გამოყენება
2.3. პროგრამირება AT89C5131-ისთვის
2.3.1. ინიციალიზაციის ფაილი
2.3.2. აღწერის სტრუქტურები
2.3.3. პროექტის სტრუქტურა
თავი 3. ხელსაწყოები
3.1. პროგრამისტები
3.1.1. გადაატრიალეთ პროგრამისტი
3.1.2. ER-Tronik პროგრამისტი
3.2. დრაივერის შექმნის ინსტრუმენტები
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. დამოკიდებულია (დამოკიდებულების უოკერი)
3.3.2. შეცდომის ძიება
3.3.3. გიდგენი
3.4. Microsoft DDK ინსტრუმენტები
3.4.1. DeviceTree
3.4.2. DevCon
3.4.2.1. კლასების გასაღები
3.4.2.2. დრაივერის ფაილების გასაღები
3.4.2.3. Hwids გასაღები
3.4.2.4. ხელახლა სკანირების გასაღები
3.4.2.5. დასტის გასაღები
3.4.2.6. სტატუსის გასაღები
3.4.3. ჩკლნფ და გენლნფ
3.5. CompuWare Corporation Tools
3.5.1. მონიტორი
3.5.2. SymLink
3.5.3. EzDriverlnstaller
3.5.4. WdmSniff
3.6. Syslnternals Tools
3.6.1. WinObj
3.7. USB ფორუმის ინსტრუმენტები
3.7.1. HID აღწერის ხელსაწყო
3.8. USB ბრძანების შემმოწმებელი
3.9. HDD პროგრამული ინსტრუმენტები
3.10. Sourceforge Tools
3.11. ავტობუსის ძაღლების მონიტორინგის პროგრამა
თავი 4. Win32 ფუნქციების გამოყენების პრინციპები .NET-ში
4.1. Ზოგადი ინფორმაცია
4.2. Win32 ფუნქციების იმპორტი
4.3. სტრუქტურები
4.3.1. StructLayout ატრიბუტი
4.3.2. მარშალი როგორც ატრიბუტი
4.4. პირდაპირი მონაცემების წვდომა
4.5. Windows შეტყობინებების დამუშავება
4.6. WMI-ის გაგება
4.7. ონლაინ რესურსები ამ თავისთვის
ნაწილი II. USB კლასები
თავი 5. CDC კლასი
5.1. USB / RS-232 ინტერფეისების კონვერტაციის მეთოდები
5.2. ზოგადი ინფორმაცია RS-232 ინტერფეისის შესახებ
5.2.1. გაცვლის ხაზები
5.2.1.1. გადაცემული მონაცემები (BA / TxD / TD)
5.2.1.2. მიღებული მონაცემები (BB / RxD / RD)
5.2.1.3. გაგზავნის მოთხოვნა (CA / RTS)
5.2.1.4. მზად არის გაგზავნისთვის (CB / CTS)
5.2.1.5. DCE მზადყოფნა (CC / DSR)
5.2.1.6. DTE Ready (CD / DTR)
5.2.1.7. ზარის ინდიკატორი (CE/RI)
5.2.1.8. ოპერატორის ამოცნობა (CF / DCD)
5.2.1.9. მიღების მზადყოფნა (CJ)
5.3. CDC სპეციფიკაცია
5.3.1. სტანდარტული აღწერები
5.3.2. ფუნქციური აღწერები
5.3.2.1. ჰედერის ფუნქციის აღმწერი
5.3.2.2. ბრძანების რეჟიმის აღმწერი
5.3.2.3. აბსტრაქტული მოწყობილობის აღმწერი
5.3.2.4. დაჯგუფების აღმწერი
5.3.3. სპეციალური მოთხოვნები
5.3.3.1. SET_LINE_CODING მოთხოვნა
5.3.3.2. GET_LINE_CODING მოთხოვნა
5.3.3.3. SET_CONTROL_LINE_STATE მოთხოვნა
5.3.3.4. SEND_BREAK მოთხოვნა
5.3.4. შეტყობინებები
5.3.4.1. RING ^ DETECT შეტყობინება
5.3.4.2. SERIAL_STATE შეტყობინება
5.4. Windows CDC მხარდაჭერა
5.4.1. Windows სერიული პორტის მახასიათებლების მიმოხილვა
5.4.1.1. ძირითადი პორტის ოპერაციები
5.4.1.2. პორტის დაყენების ფუნქციები
5.4.1.3. მორგებული პორტის დაყენება
5.4.1.4. მოდემის ხაზების სტატუსის მიღება
5.4.1.5. CDC-თან მუშაობა პლატფორმაზე. NET
5.4.2. კორესპონდენცია Windows ფუნქციებსა და USB მოთხოვნებს შორის
თავი 6. HID კლასი
6.1. HID მოწყობილობის სპეციფიკაცია
6.2. HID მოწყობილობით მონაცემთა გაცვლის პროცედურა
6.3. HID მოწყობილობის დრაივერის დაყენება
6.4. HID მოწყობილობის იდენტიფიკაცია
6.4.1. ჩატვირთვის მოწყობილობის იდენტიფიკაცია
6.4.2. HID მოწყობილობის კონფიგურაციის აღმწერი
6.4.3. HID დესკრიპტორი
6.4.4. ანგარიშის აღმწერი
6.5. ანგარიშის აღწერის სტრუქტურა
6.5.1. მოხსენების ელემენტები
6.5.1.1. მოკლე ტიპის ელემენტები
6.5.1.2. გრძელი ტიპის ელემენტები
6.5.2. მოხსენება ერთეულის ტიპებზე
6.5.2.1. არსებითი ელემენტები
6.5.2.2. გლობალური ელემენტები
6.5.2.3. ლოკალური ელემენტები
6.5.3. აღწერების მაგალითები
6.6. მოთხოვნები HID მოწყობილობაზე
6.6.1. GET_REPORT მოთხოვნა
6.6.2. SET_REPORT მოთხოვნა
6.6.3. GET_IDLE მოთხოვნა
6.6.4. SET_IDLE მოთხოვნა
6.6.5. GET_PROTOCOL მოთხოვნა
6.6.6. SET_PROTOCOL მოთხოვნა
6.7. ხელსაწყოები
6.8. დრაივერები HID მოწყობილობებისთვის Windows-ში
თავი 7. სხვა USB კლასები
III ნაწილი. USB პროგრამირების პრაქტიკა
თავი 8. USB მოწყობილობის შექმნა AT89C5131-ზე დაფუძნებული
8.1. ზოგადი ინფორმაცია AT89C5131-ის შესახებ
8.2. AT89S5131-ის სტრუქტურული დიაგრამა
8.3. USB რეგისტრი AT89C5131
8.3.1. USBCON რეგისტრი
8.3.2. USBADDR რეგისტრი
8.3.3. USBINT რეგისტრი
8.3.4. USBIEN რეგისტრაცია
8.3.5. UEPNUM რეგისტრაცია
8.3.6. UEPCONX რეგისტრაცია
8.3.7. UEPSTAX რეგისტრაცია
8.3.8. UEPRST რეგისტრაცია
8.3.9. UEPINT რეგისტრაცია
8.3.10. UEPIEN რეგისტრაცია
8.3.11. UEPDATX რეგისტრი
8.3.12. UBYCTLX რეგისტრაცია
8.3.13. UFNUML რეგისტრაცია
8.3.14. UFNUMH რეგისტრაცია
8.4. ჩართვა AT89S5131
8.5. ძირითადი დიზაინი AT89C5131-ისთვის
8.5.1. პროგრამის პირველი ვერსია AT89C5131-ისთვის
8.5.2. სტრიქონების აღმწერების დამატება
8.5.3. ბოლო წერტილების დამატება
8.6. ჩამოტვირთეთ პროგრამა
თავი 9. CDC კლასის განხორციელება
9.1. CDC განხორციელება
9.2. მოწყობილობის აღწერები
9.2.1. ბოლო წერტილის ინიციალიზაცია
9.2.2. CDC მოთხოვნების დამუშავება
9.2.3. RS-პორტისა და CDC-ხაზის კონფიგურაცია
9.2.4. მონაცემთა მიღება და გადაცემა
9.3. დრაივერის ინსტალაცია
9.4. მონაცემთა გაცვლის პროგრამირება CDC მოწყობილობასთან Delphi-ში
9.5. CDC მოწყობილობით გაცვლის დაპროგრამება C #-ში
9.5.1. MSCOMM კომპონენტის გამოყენებით
9.5.2. Win32 ფუნქციების გამოყენება
9.6. CDC პრობლემები
თავი 10. HID კლასის განხორციელება
10.1. HID-ის დანერგვა AT89C5131-ზე
10.2. მრავალი ბაიტის გადაცემა
10.3. მხატვრული ანგარიშები
10.4. მონაცემთა გადაცემა ჰოსტიდან (SET_REPORT)
10.5. HID მოწყობილობის დაყენება
10.6. კომუნიკაცია HID მოწყობილობასთან
10.6.1. HID მოწყობილობის სახელის მიღება
10.6.2. მოწყობილობის ატრიბუტების მიღება და ანგარიშების წაკითხვა
10.6.3. მასპინძლობს HID მონაცემთა გადაცემას
10.7. HID მოწყობილობების მაგალითები
10.7.1. მაუსის მოწყობილობის განხორციელება
10.7.2. კლავიატურის მოწყობილობის დანერგვა
10.8. HID პროტოკოლის გამოყენებით
10.8.1. მონაცემების ინტერპრეტაცია
10.8.2. კოლექციები
10.8.3. მასივები და ღილაკები
10.9. HID მოწყობილობა მრავალი მოხსენებით
თავი 11. Windows-ის სპეციალური ფუნქციები
11.1. API ფუნქციების დაყენება
11.1.1. USB მოწყობილობების ჩამოთვლა
11.1.2. USB მოწყობილობის სტატუსის მიღება
11.2. USB მოწყობილობების ჩამოთვლა WMI გამოყენებით
11.3. Windows XP-ის განსაკუთრებული მახასიათებლები
11.3.1. HidD_GetInputReport - HID ანგარიშების კითხვა
11.3.2. ნედლი შეყვანის მონაცემების მიღება
11.4. DirectX ფუნქციები
11.5. დიალოგი ახალი აღჭურვილობის დასამატებლად
11.6. სიმბოლური მოწყობილობების სახელებთან მუშაობა
11.7. უსაფრთხოდ ამოიღეთ ფლეშ დრაივები
11.8. მოწყობილობების დამატებისა და ამოღების აღმოჩენა
11.9. ინტერნეტ რესურსები
თავი 12. მძღოლის განვითარება
12.1. WDM დრაივერის ძირითადი პროცედურები
12.1.1. Driver Entry პროცედურა
12.1.2. AddDevice პროცედურა
12.1.3. განტვირთვის პროცედურა
12.1.4. მძღოლის ოპერაციული პროცედურები
12.1.4.1. პაკეტის სათაური
12.1.4.2. I/O დასტის უჯრედები
12.4.1.3. მძღოლის ოპერაციული პროცედურები
12.1.5. ემსახურება IOCTL მოთხოვნებს
12.2. დრაივერის ჩატვირთვა და დრაივერის პროცედურებზე წვდომა
12.2.1. მძღოლის პროცედურა
12.2.2. მძღოლის რეგისტრაცია
12.2.2.1. რეგისტრაცია SCM-მენეჯერთან
12.2.2.2. დრაივერის პარამეტრები რეესტრში
12.2.3. ეხება საოპერაციო პროცედურებს
12.2.4. დრაივერის შენახვა შესრულებადში
12.3. დრაივერის შექმნა Driver Studio-ით
12.3.1. რამდენიმე სიტყვა Driver Studio ბიბლიოთეკის შესახებ
12.3.1.1. KDriver კლასი
12.3.1.2. KDevice კლასი
12.3.1.3. Klrp კლასი
12.3.1.4. KRegistryKey კლასი
12.3.1.5. KLowerDevice კლასი
12.3.1.6. USB კლასები
12.3.2. მძღოლის სტუდიის სხვა კლასები
12.3.3. დრაივერის შაბლონის შექმნა Driver Studio-ით
12.3.3.1. ნაბიჯი 1. პროექტის სახელის და გზის დაყენება
12.3.3.2. ნაბიჯი 2. მძღოლის არქიტექტურის არჩევა
12.3.3.3. ნაბიჯი 3. საბურავის არჩევა
12.3.3.4. ნაბიჯი 4. საბოლოო წერტილების ნაკრების დაყენება
12.3.3.5. ნაბიჯი 5. კლასის და ფაილის სახელის დაყენება
12.3.3.6. ნაბიჯი 6. აირჩიეთ მძღოლის ფუნქციები
12.3.3.7. ნაბიჯი 7. მოთხოვნის დამუშავების ხერხის არჩევა
12.3.3.8. ნაბიჯი 8. შექმენით შენახული დრაივერის პარამეტრები
12.3.3.9. ნაბიჯი 9. დრაივერის თვისებები
12.3.3.10. ნაბიჯი 10. IOCTL კოდების დაყენება
12.3.3.11. ნაბიჯი 11. დამატებითი პარამეტრები
12.3.4. დრაივერის შაბლონის მოდიფიკაცია
12.3.5. მოწყობილობის კლასის ძირითადი მეთოდები
12.3.6. მონაცემთა წაკითხვის განხორციელება
12.3.7. დრაივერის ინსტალაცია
12.3.8. მონაცემთა წამკითხველი
12.3.9. მონაცემების წაკითხვა სხვა ტიპის ბოლო წერტილებიდან
12.3.10. გაასუფთავეთ USB მოწყობილობის დრაივერი
ნაწილი IV. დირექტორია
თავი 13. INF ფაილის ფორმატი
13.1. INF ფაილის სტრუქტურა
13.1.1. ვერსიის განყოფილება
13.1.2. მწარმოებლის განყოფილება
13.1.3. DestinationDirs განყოფილება
13.1.3.1. DefaultDescDir გასაღები
13.1.3.2. ფაილების სიის განყოფილების გასაღებები
13.1.3.3. დირიდის გასაღები
13.1.3.4. Subdir გასაღები
13.1.4. მოდელის აღწერილობის განყოფილება
13.1.5. სექცია xxx. AddRegw xxx. დელრეგი
13.1.6. სექცია xxx. LogConfig
13.1.7. სექცია xxx. CopyFiles
13.1.8. სიმებიანი განყოფილება
13.1.9. განყოფილების ბმულები
13.2. INF ფაილების შექმნა და ტესტირება
13.3. მოწყობილობების ინსტალაცია INF ფაილის გამოყენებით
13.4. USB რეესტრის ფილიალები
თავი 14. Windows-ის ძირითადი ფუნქციები
14.1. CreateFile და CloseHandle ფუნქციები: ობიექტის გახსნა და დახურვა
14.1.1. დამატებითი ინფორმაცია
14.1.2. დაბრუნების ღირებულება
14.1.3. ზარის მაგალითი
14.2. ReadFile ფუნქცია: მონაცემების წაკითხვა
14.2.1. დამატებითი ინფორმაცია
14.2.2. დაბრუნების ღირებულება
14.2.3. ზარის მაგალითი
14.3. ფაილის ჩაწერის ფუნქცია: მონაცემთა გადაცემა
14.3.1. დამატებითი ინფორმაცია
14.3.2. დაბრუნების ღირებულება
14.3.3. ზარის მაგალითი
14.4. ReadFileEx ფუნქცია. APC წაიკითხა მონაცემები
14.4.1. დაბრუნების ღირებულება
14.4.2. დამატებითი ინფორმაცია
14.4.3. ზარის მაგალითი
14.5. WriteFiieEx ფუნქცია: APC მონაცემთა გადაცემა
14.5.1. დაბრუნების ღირებულება
14.5.2. ზარის მაგალითი
14.6. WaitForSingieObject ფუნქცია ელოდება ობიექტის სიგნალის მდგომარეობას
14.6.1. დაბრუნების ღირებულება
14.7. WaitForMultipleObjects ფუნქცია: ობიექტების სიგნალის მდგომარეობის მოლოდინში
14.7.1. დაბრუნების ღირებულება
14.8. GetOverlapped Result ფუნქცია: ასინქრონული ოპერაციის შედეგი
14.8.1. დაბრუნების ღირებულება
14.9. DeviceloControl ფუნქცია: მძღოლის პირდაპირი კონტროლი
14.9.1. დაბრუნების ღირებულება
14.10. გაუქმება / o ფუნქცია: ოპერაციის შეწყვეტა
14.10.1. დაბრუნების ღირებულება
14.11. შეკითხვის ფუნქცია Dos Device, მიიღეთ მოწყობილობის სახელი მისი DOS სახელით
14.11.1. დაბრუნების ღირებულება
14.11.2. ზარის მაგალითი
14.12. განსაზღვრეთ Dos Device ფუნქცია: ოპერაციები DOS მოწყობილობის სახელით
14.12.1. დაბრუნების ღირებულება
14.12.2. ზარის მაგალითი
თავი 15. Windows სტრუქტურები და ფუნქციები სერიული პორტებისთვის
15.1. COMMCONFIG პორტის პარამეტრების სტრუქტურა
15.2. COMPROP პორტის თვისებების სტრუქტურა
15.3. COMMTIMEOUTS დროის ამოწურვის სტრუქტურა
15.4. COMSTAT პორტის სტატუსის სტრუქტურა
15.5. DCB სტრუქტურა
15.6. BuildCommDCB ფუნქცია: შექმენით DCB სტრუქტურა სტრიქონიდან
15.6.1. დამატებითი ინფორმაცია
15.6.2. დაბრუნების ღირებულება
15.6.3. ზარის მაგალითი
15.7. BuildCommDCBAndTimeouts ფუნქცია: შექმენით DCB სტრუქტურა და დროის ამოწურვა სტრიქონიდან
15.8. SetCommBreak და ClearCommBreak ფუნქციები: მონაცემთა გამომუშავების კონტროლი
15.8.1. დაბრუნების ღირებულება
15.9. ClearCommError ფუნქცია: მიიღეთ და გადატვირთეთ პორტის შეცდომები
15.9.1. დაბრუნების ღირებულება
15.10. EscapeCommFunction: პორტის კონტროლი
15.10.1. დაბრუნების ღირებულება
15.11. GetCommMask და SetCommMask ფუნქციები: მოვლენის ზარის ნიღაბი
15.11.1. დაბრუნების ღირებულება
15.12. WaitCommEvent ფუნქცია ელოდება COM პორტის მოვლენას
15.12.1. დაბრუნების ღირებულება
15.12.2. დამატებითი ინფორმაცია
15.12.3. ზარის მაგალითი
15.13. GetCommConfig და SetCommConfig ფუნქციები: პორტის პარამეტრების კონფიგურაცია
15.13.1. დაბრუნების ღირებულება
15.13.2. ზარის მაგალითი
15.14. CommConfigDialog ფუნქცია: პორტის კონფიგურაციის დიალოგი
15.14.1. დაბრუნების ღირებულება
15.14.2. დამატებითი ინფორმაცია
15.14.3. ზარის მაგალითი
15.15. GetCommProperties ფუნქცია: წაიკითხეთ პორტის თვისებები
15.15.1. დაბრუნების ღირებულება
15.15.2. ზარის მაგალითი
15.16. GetCommState და SetCommState ფუნქციები: პორტის მდგომარეობა
15.16.1. დაბრუნების ღირებულება
15.16.2. ზარის მაგალითი
15.17. GetCommTimeouts და SetComniTimeouts ფუნქციები: Port Timeouts
15.17.1. დაბრუნების ღირებულება
15.17.2. ზარის მაგალითი
15.18. PurgeComm ფუნქცია: პორტის ბუფერების გამორეცხვა
15.18.1. დაბრუნების ღირებულება
15.18.2. ზარის მაგალითი
15.19. SetupComm: ბუფერის ზომის კონფიგურაცია
15.19.1. დაბრუნების ღირებულება
15.20. GetDefaultCommConfig და SetDefaitltCommConfig ფუნქციები: ნაგულისხმევი პორტის პარამეტრები
15.20.1. დაბრუნების ღირებულება
15.21. TransmitCommChar ფუნქცია. სპეციალური სიმბოლოების გადაცემა
15.21.1. დაბრუნების ღირებულება
15.22. GetCommModemStatus ფუნქცია: მოდემის სტატუსი
15.22.1. დაბრუნების ღირებულება
15.22.2. ზარის მაგალითი
15.23. EnumPorts ფუნქცია: პორტების ჩამოთვლა
15.23.1. დამატებითი ინფორმაცია
15.23.2. დაბრუნების ღირებულება
15.23.3. ზარის მაგალითი
თავი 16. Windows Setup API სტრუქტურები და ფუნქციები
16.1. დააყენეთ DiGetCiassDevs: ჩამოთვალეთ მოწყობილობები
16.1.1. დაბრუნების ღირებულება
16.2. SetupDiDestroyDevicelnfoList ფუნქცია, რომელიც ათავისუფლებს მოწყობილობის აღწერილობის ბლოკს
16.2.1. დაბრუნების ღირებულება
16.3. SetupDiEnumDevicelnterfaces ფუნქცია: მოწყობილობის ინფორმაცია
16.3.1. დაბრუნების ღირებულება
16.4. SetupDiGetDevicelnterfaceDetaii ფუნქცია: მოწყობილობის დეტალები
16.5. SetupDiEnumDevicelnfo ფუნქცია: მოწყობილობის ინფორმაცია
16.6. SetupDiGetDeviceRegistryProperty ფუნქცია: მიიღეთ Plug and Play მოწყობილობის თვისებები
16.7. CM_Get_DevNode_Status ფუნქცია: მოწყობილობის სტატუსი
16.8. CM_Request_Device_Eject ფუნქცია მოწყობილობის უსაფრთხოდ მოსაშორებლად
თავი 17. Windows HID API სტრუქტურები და ფუნქციები
17.1. ფუნქცია HidD_Hello: ბიბლიოთეკის შემოწმება
17.2. HidD_JetHidGuid ფუნქცია: GUID-ის მიღება
17.3. HidD_GetPreparsedData ფუნქცია: მოწყობილობის აღწერის შექმნა
17.4. HidD_EreePreparsedData ფუნქცია: მოწყობილობის სახელურის გათავისუფლება
17.5. HidD_Get Feature ფუნქცია: ფუნქციის ანგარიშის მიღება
17.6. HidD_SetFeature ფუნქცია: Feature-report-ის გადაცემა
17.7. HidD_GetNumlnputBuffers ფუნქცია: ბუფერების რაოდენობის მიღება
17.8. HidD_SetNumlnputBuffers ფუნქცია: ბუფერების რაოდენობის დაყენება
17.9. HidD_GetAttributes ფუნქცია: მოწყობილობის ატრიბუტების მიღება
17.10. HidD_GetManufacturerString ფუნქცია. მიიღეთ მწარმოებლის სტრიქონი
17.11. HidD_GetProductString ფუნქცია იღებს პროდუქტის სტრიქონს
17.12. HidD_GetSerialNumberString ფუნქცია. სერიული ნომრის სტრიქონის მიღება
17.13. HidD_GetIndexedString ფუნქცია. სტრიქონის მიღება ინდექსით
17.14. HidD_Jetlnput Report ფუნქცია იღებს შეყვანის-ანგარიშს
17.15. HidD_SetOutputReport ფუნქცია. გამომავალი ანგარიშის გადაცემა
17.16. HidP_GetCaps ფუნქცია: მოწყობილობის თვისებების მიღება
17.17. HidP_MaxDataListLength ფუნქცია: ანგარიშის ზომის მიღება
17.18. HidD_FIushQueue ფუნქცია: ბუფერების გამორეცხვა
17.19. HidP_GetLinkColiectionNodes ფუნქცია: კოლექციის ხე
17.20. ფუნქციები HidP_GetScaledUsageValue u HidP_SetScaledUsage მნიშვნელობა: მიიღეთ და დააყენეთ გარდაქმნილი მნიშვნელობები
17.21. HidF_MaxUsageListLength ფუნქცია: ბუფერის ზომა გასაღები კოდებისთვის
17.22. HidP_UsageListDifference ფუნქცია: განსხვავება მასივებს შორის
აპლიკაციები
დანართი 1. დამატებითი ფუნქციები
დანართი 2. მაგალითების შედგენა დელფის სხვა ვერსიებში
დანართი 3. ენის იდენტიფიკატორების ცხრილი (LangID)
დანართი 4. მწარმოებლის კოდების ცხრილი (მიმწოდებლის ID, მოწყობილობის ID)
დანართი 5. როგორ შევქმნათ Device Manager მალსახმობი
დანართი 6. ხშირად დასმული კითხვები
დანართი 7. დისკის აღწერა
ლიტერატურა
საგნის ინდექსი

USB პროგრამირება

USB პორტით SF-50 სატელიტური ანტენების დასაყენებლად მოწყობილობის დაპროგრამება განსხვავდება RS-232 პორტის პროგრამირებისგან მხოლოდ მოწყობილობიდან კომპიუტერზე და კომპიუტერიდან მოწყობილობაზე მონაცემების გადაცემის მეთოდით. USB-ით პროგრამირებისას გამოიყენება პორტატული USB შესანახი მოწყობილობა (ფლეშ დრაივი). ეს მოსახერხებელია, როდესაც, მაგალითად, თქვენს კომპიუტერს ან, უფრო ხშირად, ლეპტოპს (ნეტბუქს) არ აქვს სერიული RS-232 პორტი შასიზე.
USB დისკის გამოყენებით მოწყობილობის დასაპროგრამებლად დაგჭირდებათ:
- USB შესანახი მოწყობილობა (ფლეშ დრაივი) ფორმატირებული FAT-32 ფაილურ სისტემაში;
- AliEditor რედაქტორის პროგრამა, რომელიც მდებარეობს OPENBOX SF-50 პროგრამული უზრუნველყოფის განყოფილების Database_editor_new საქაღალდეში.

პროგრამირების დაწყებამდე აუცილებელია მონაცემთა ბაზის გადატანა მოწყობილობიდან კომპიუტერში. ამისათვის ჩართეთ მოწყობილობა, შეაერთეთ USB ფლეშ დრაივი USB პორტში. შეასრულეთ მენიუ - სისტემა - შენახვა USB-ზე,

გამოდით მენიუდან MENU ღილაკზე დაჭერით, სანამ არ გამოჩნდება მიმდინარე არხი, ან მთავარი მენიუს სურათამდე, თუ ჯერ არ არის არხები და ამოიღეთ USB ფლეშ დრაივი. ჩადეთ USB ფლეშ დრაივი კომპიუტერში.
გაუშვით Editor.exe პროგრამა Database_editor_new საქაღალდედან და გახსენით გამოსახულება მასში USB ფლეშ დრაივზე.

როდესაც მოგეთხოვებათ მონაცემთა ბაზის არჩევა, აირჩიეთ მომხმარებლის მონაცემთა ბაზა.

დააწკაპუნეთ OK. აირჩიეთ ყველა სერვისი, გაიხსნება მონაცემთა ბაზაში არსებული ყველა დასკანირებული და შენახული ტელე, რადიო და სერვისის არხების სია.

დაარედაქტირეთ არხები, როგორც გსურთ, მაგალითად, დატოვეთ მხოლოდ ღია არხები.
კომპიუტერის კლავიატურაზე გეჭიროთ Shift ღილაკი, დააჭირეთ "ქვემოთ ისარს" და აირჩიეთ არხები, რომელთა წაშლაც გსურთ. არჩევანის წასაშლელად დააჭირეთ წაშლას.

სატელიტის პარამეტრების შესაცვლელად აირჩიეთ ყველა სერვისი - სატელიტური ინფორმაცია - EUTELSAT W4, W7, დააჭირეთ ღილაკს ENTER.

საჭიროების შემთხვევაში შეცვალეთ მნიშვნელობები ანტენა 1-ში.
ტრანსპონდერის წასაშლელად გადადით არასაჭიროზე და დააჭირეთ ღილაკს Delete კომპიუტერის კლავიატურაზე, დაადასტურეთ არჩეული მოქმედება.

ტრანსპონდერის დასამატებლად, დადექით სატელიტის სახელზე, დააჭირეთ მაუსის მარჯვენა ღილაკს და აირჩიეთ ინფორმაციის დამატება (ან თანამგზავრის მონიშვნით დააჭირეთ ღილაკს ჩასმა კლავიატურაზე).

შეიყვანეთ მონაცემები ახალი ტრანსპონდერისთვის, აიღეთ ისინი, მაგალითად, ვებსაიტზე lyngsat.com.

დააჭირეთ OK, დარწმუნდით, რომ ტრანსპონდერი რეგისტრირებულია.

სატელიტის დასამატებლად გადადით სატელიტური ინფორმაციის ხაზზე, დააჭირეთ კლავიატურაზე Insert ღილაკს და შეიყვანეთ ახალი თანამგზავრის პარამეტრები.

დახურეთ რედაქტორის პროგრამა, ამოიღეთ დისკი.
ჩადეთ დისკი OPENBOX SF-50 მოწყობილობაში, მიჰყევით თანმიმდევრობას MENU - System - Update from USB, აირჩიეთ "SAT & TP List" რეჟიმი.

აირჩიეთ დაწყება. დაადასტურეთ თქვენი განზრახვები.

მოწყობილობა განაახლებს ბაზას და თავად გადაიტვირთება. გადატვირთვის შემდეგ, თქვენ უნდა დააყენოთ რუსული მენიუს ენა ახლებურად პარამეტრებში. გადააყენეთ მოწყობილობა ქარხნულ პარამეტრებზე.
გადით პარამეტრების მენიუდან MENU ღილაკზე ორჯერ დაჭერით. დააჭირეთ ღილაკს OK მიმდინარე არხზე და დარწმუნდით, რომ არხების სია რედაქტირებულია.

თქვენ ასევე შეგიძლიათ დარწმუნდეთ, რომ ტრანსპონდერებისა და თანამგზავრების სია ასევე რედაქტირებულია.
პროგრამირება დასრულებულია.

USB (უნივერსალური სერიული ავტობუსი) ავტობუსი გამოჩნდა 1996 წლის 15 იანვარს, როდესაც სტანდარტის პირველი ვერსია დამტკიცდა Intel, DEC, IBM, NEC, Northen Telecom და Compaq მიერ.

მისი დეველოპერებისთვის დაყენებული სტანდარტის მთავარი მიზანია შეუქმნას მომხმარებლებს Plug & Play რეჟიმში მუშაობის შესაძლებლობა პერიფერიულ მოწყობილობებთან. ეს ნიშნავს, რომ გათვალისწინებული უნდა იყოს მოწყობილობის დაკავშირება გაშვებულ კომპიუტერთან, მისი ავტომატურად ამოცნობა დაკავშირებისთანავე და შემდეგ შესაბამისი დრაივერების დაყენება. გარდა ამისა, სასურველია ელექტროენერგიის მიწოდება დაბალი სიმძლავრის მოწყობილობებს თავად ავტობუსიდან. ავტობუსის სიჩქარე საკმარისი უნდა იყოს პერიფერიული მოწყობილობების დიდი უმრავლესობისთვის. USB კონტროლერმა უნდა დაიკავოს მხოლოდ ერთი შეფერხება ავტობუსთან დაკავშირებული მოწყობილობების რაოდენობის მიუხედავად, ანუ მოაგვაროს თავსებადი კომპიუტერის IBM კომპიუტერის შიდა ავტობუსებზე რესურსების ნაკლებობის პრობლემა.

თითქმის ყველა ამოცანა გადაწყდა USB სტანდარტში და 1997 წლის გაზაფხულზე გამოჩნდა USB მოწყობილობების დამაკავშირებელი კონექტორებით აღჭურვილი კომპიუტერები. ახლა USB იმდენად აქტიურად იქნა დანერგილი კომპიუტერის პერიფერიული მოწყობილობების მწარმოებლების მიერ, რომ, მაგალითად, Apple Computers iMAC-ში არის მხოლოდ USB, როგორც გარე ავტობუსი.

USB 1.0-ის მახასიათებლები შემდეგია:

1.მონაცემთა გაცვლის მაღალი სიჩქარე (სრული სიჩქარით) - 12 Mb ის/თან;

2. კაბელის მაქსიმალური სიგრძე მაღალი კურსისთვის არის 5 მეტრი;

3.დაბალი მონაცემთა გაცვლის კურსი (დაბალი სიჩქარე) - 1.5 Mb ის/თან;

4. კაბელის მაქსიმალური სიგრძე დაბალი კურსისთვის არის 3 მეტრი;

5. დაკავშირებული მოწყობილობების მაქსიმალური რაოდენობა - 127;

6. მოწყობილობების შესაძლო ერთდროული შეერთება სხვადასხვა კურსით;

8. მაქსიმალური დენის მოხმარება ერთ მოწყობილობაზე არის 500 mA.

ამიტომ მიზანშეწონილია დააკავშიროთ თითქმის ნებისმიერი პერიფერიული მოწყობილობა USB 1.0-თან, გარდა ციფრული ვიდეოკამერებისა და მაღალსიჩქარიანი მყარი დისკებისა. ეს ინტერფეისი განსაკუთრებით მოსახერხებელია ხშირად დაკავშირებული/გამორთული მოწყობილობების დასაკავშირებლად, როგორიცაა ციფრული კამერები.
მხოლოდ ორი ბაუდის სიჩქარის გამოყენების შესაძლებლობა ზღუდავს ავტობუსის გამოყენებას, მაგრამ მნიშვნელოვნად ამცირებს ინტერფეისის ხაზების რაოდენობას და ამარტივებს აპარატურის დანერგვას.
პირდაპირ USB-დან იკვებება შესაძლებელია მხოლოდ დაბალი სიმძლავრის მოწყობილობებისთვის, როგორიცაა კლავიატურები, მაუსები, ჯოისტიკები და ა.შ.

USB სიგნალები გადაიცემა 4 მავთულის კაბელზე, სქემატურად ნაჩვენებია ქვემოთ მოცემულ ფიგურაში:

სურათი 2.6.1 - USB სიგნალის მავთული

აქ GND არის საერთო მავთულის წრე პერიფერიული მოწყობილობების კვებისათვის, Vbus - +5 V ასევე დენის სქემებისთვის. D + ავტობუსი არის ავტობუსზე მონაცემების გადასაცემად, ხოლო D- ავტობუსი მონაცემების მისაღებად.
სრულსიჩქარიანი ავტობუსის მხარდასაჭერი კაბელი არის დაგრეხილი წყვილი, ფარიანი და ასევე შეიძლება გამოყენებულ იქნას დაბალი სიჩქარით მუშაობისთვის. კაბელი მხოლოდ მინიმალური სიჩქარით მუშაობისთვის (მაგალითად, მაუსის დასაკავშირებლად) შეიძლება იყოს ნებისმიერი კაბელი და შეიძლება იყოს დაუცველი.
პერიფერიული მოწყობილობების დასაკავშირებლად გამოყენებული კონექტორები იყოფა სერიებად: "A" სერიის კონექტორები (შტეფსელი და სოკეტი) განკუთვნილია მხოლოდ ისეთ წყაროსთან დასაკავშირებლად, როგორიცაა კომპიუტერი, "B" სერიის კონექტორები (შტეფსელი და სოკეტი) მხოლოდ დასაკავშირებლად. პერიფერიული მოწყობილობა.

USB კონექტორებს აქვთ შემდეგი პინების ნუმერაცია, რომელიც ნაჩვენებია ცხრილში 2.6.1.

ცხრილი 2.6.1 - USB კონტაქტების დანიშნულება და მარკირება

1999 წელს კომპიუტერული კომპანიების იმავე კონსორციუმმა, რომელმაც წამოიწყო USB ავტობუსისთვის სტანდარტის პირველი ვერსიის შემუშავება, დაიწყო USB-ის 2.0 ვერსიის აქტიური შემუშავება, რომელიც გამოირჩევა დამატებითი მაღალი სიჩქარის (Hi-speed) დანერგვით. რეჟიმი. ავტობუსის გამტარობა გაიზარდა 40-ჯერ, 480 Mbps-მდე, რამაც შესაძლებელი გახადა ვიდეო მონაცემების გადაცემა USB-ით.
ყველა ადრე გამოშვებული პერიფერიული მოწყობილობა და მაღალსიჩქარიანი კაბელი სრულად თავსებადია. 2.0 სტანდარტის კონტროლერი უკვე ინტეგრირებულია პროგრამირებადი მოწყობილობების სისტემურ ლოგიკაში (მაგალითად, პერსონალური კომპიუტერის დედაპლატა).

2008 წელს Intel, Microsoft, Hewlett-Packard, Texas Instruments, NEC და NXP Semiconductors შექმნეს USB 3.0 სტანდარტის სპეციფიკაცია. USB 3.0 სპეციფიკაციაში განახლებული სტანდარტის კონექტორები და კაბელები ფიზიკურად და ფუნქციურად თავსებადია USB 2.0-თან, მაგრამ ოთხი საკომუნიკაციო ხაზის გარდა დაემატა კიდევ ოთხი. თუმცა, ახალი კონტაქტები USB 3.0 კონექტორებში განლაგებულია ძველისგან განცალკევებით, სხვა საკონტაქტო რიგში. USB 3.0 სპეციფიკაცია ზრდის მონაცემთა გადაცემის მაქსიმალურ სიჩქარეს 5 გბიტ/წმ-მდე - 480 მბიტ/წმ-ზე მეტი, რაც USB 2.0-ს შეუძლია. გარდა ამისა, მაქსიმალური დენის სიძლიერე გაიზარდა 500 mA-დან 900 mA-მდე თითო მოწყობილობაზე, რაც შესაძლებელს ხდის ზოგიერთი მოწყობილობის ელექტროენერგიას, რომლებიც ადრე საჭიროებდნენ ცალკე ელექტრომომარაგებას.

დავუშვათ, თქვენ შექმენით USB მოწყობილობა, რომლითაც გსურთ კომპიუტერთან მუშაობა. ამის მიღწევა შესაძლებელია მინიმუმ ორი გზით:

1. სრული ფუნქციური ოპერაციული სისტემის დრაივერის შემუშავება;

2. USB ინტერფეისის სპეციალური კლასის გამოყენებით - მოწყობილობები სახელწოდებით HID (Human Interface Device) მოწყობილობები.

პირველი მეთოდი უნივერსალურია: საკმარისი ცოდნის მქონე დრაივერების ჩაწერის სფეროში, შეგიძლიათ დაპროგრამოთ მუშაობა ნებისმიერ მოწყობილობასთან ნებისმიერი სიჩქარით, რომელსაც აქვს USB მხარდაჭერა. მაგრამ ეს საკმაოდ რთული ამოცანაა.

მეორე გზა შემდეგია. არსებობს თანამედროვე ოპერაციული სისტემების მიერ მხარდაჭერილი ინტერფეისი ადამიანისა და კომპიუტერის ურთიერთქმედების მოწყობილობებისთვის ან HID მოწყობილობებისთვის, როგორიცაა:

1. კლავიატურები, მაუსები, ჯოისტიკები;

2. სხვადასხვა სენსორები და წამკითხველები;

3. თამაშის საჭე და პედლები;

4. ღილაკები, გადამრთველები, რეგულატორები.

ნებისმიერი ასეთი მოწყობილობა, თუ ის აკმაყოფილებს HID მოწყობილობების მოთხოვნებს, ავტომატურად იქნება აღიარებული სისტემის მიერ და არ საჭიროებს სპეციალური დრაივერების ჩაწერას. გარდა ამისა, მათი დაპროგრამება ჩვეულებრივ ბევრად უფრო ადვილია, ვიდრე სპეციალიზებული მოწყობილობის დრაივერის დაწერა. სამწუხაროდ, მეთოდს აქვს მნიშვნელოვანი ნაკლი: ინფორმაციის გაცვლის სიჩქარე HID მოწყობილობასთან ძალიან შეზღუდულია და შეადგენს მაქსიმუმ 64 კბ/წმ.

ძირითადად, HID ტექნოლოგიის საფუძველზე, შესაძლებელია ნებისმიერ მოწყობილობასთან ურთიერთქმედების ორგანიზება, თუნდაც ეს არ იყოს, მკაცრი გაგებით, ადამიანისა და კომპიუტერის ინტერფეისის მოწყობილობა. ეს გამორიცხავს მოწყობილობის უნიკალური დრაივერის შრომატევადი განვითარებას და დაზოგავს დროს ახალი USB მოწყობილობის შემუშავებაზე. მასპინძლის მხრიდან, მოწყობილობასთან კომუნიკაცია გაკონტროლდება სტანდარტული HID დრაივერით, რომელიც შედის ოპერაციულ სისტემაში. თქვენ უბრალოდ უნდა შეასრულოთ USB-HID პროტოკოლის მინიმალური მოთხოვნები მოწყობილობის მხარეს.

აღსანიშნავია, რომ ბევრი USB მოწყობილობა, რომელიც ერთი შეხედვით არ მიეკუთვნება ადამიანის ურთიერთქმედების მოწყობილობების განმარტებას, უფრო ლოგიკურია მათი დანერგვა, როგორც HID მოწყობილობები. ეს ფენომენი ხშირია საწარმოო აღჭურვილობის სფეროში, რომელიც ახლახან განიცადა USB ტექნოლოგიის მასიური მიღება. მაგალითად, განიხილეთ ლაბორატორიული კვების წყარო, რომელსაც აქვს USB ინტერფეისის გამოყენებით კომპიუტერიდან მისი გამომავალი სიგნალების პარამეტრების დაყენების უნარი. თავად ენერგიის წყარო უდავოდ არ არის ადამიანებთან ურთიერთობის საშუალება. თუმცა, ამ შემთხვევაში, USB კავშირის საშუალებით განხორციელებული ფუნქციები ასახავს კლავიატურას, კონტროლს და ინდიკატორებს, რომლებიც დამონტაჟებულია თავად მოწყობილობაზე. და ეს კონტროლი მხოლოდ HID-ის განმარტებას ექვემდებარება. შესაბამისად, ამ USB ფუნქციებით კვების წყარო ყველაზე ლოგიკურია HID მოწყობილობის სახით ორგანიზება.

განხილულ მაგალითში მონაცემთა გადაცემის დაბალი სიჩქარე საკმარისი იქნება ნორმალური მუშაობისთვის, ხოლო სხვა შემთხვევებში მოწყობილობები შეიძლება იყოს ძალიან მოთხოვნადი გაცვლის კურსზე. გადაცემის დაბალი სიჩქარე არის მოწყობილობის HID დიზაინის მთავარი შეზღუდვა, რომელიც USB 1.0 ავტობუსის 12 მბიტ/წმ სრულ სიჩქარესთან შედარებით, HID ტექნოლოგიის დიდ მინუსად გამოიყურება, როდესაც საქმე ეხება კონკრეტული USB განხორციელების არჩევას. ამასთან, მრავალი საკომუნიკაციო ამოცანისთვის, მითითებული სიჩქარე სავსებით საკმარისია და HID არქიტექტურა, როგორც სპეციალიზებული ინსტრუმენტი, ღირსეულ ადგილს იკავებს მონაცემთა გაცვლის ორგანიზების მეთოდებს შორის.

HID მოწყობილობები ორი ტიპისაა: მონაწილე (ჩამტვირთავი) და არამონაწილე კომპიუტერის საწყის ჩატვირთვაში. ჩამტვირთავი USB-HID მოწყობილობის ყველაზე ნათელი მაგალითია კლავიატურა, რომლის მუშაობა იწყება კომპიუტერის გაშვებით.

HID მოწყობილობის შემუშავებისას უნდა აკმაყოფილებდეს სპეციფიკაციით დაწესებული შემდეგი მოთხოვნები:

1.სრული სიჩქარით HID მოწყობილობას შეუძლია გადასცეს 64000 ბაიტი ყოველ წამში ან 64 ბაიტი ყოველ 1ms; დაბალი სიჩქარის HID მოწყობილობას აქვს უნარი გადასცეს 800 ბაიტი წამში ან 8 ბაიტი ყოველ 10 ms.

2. HID მოწყობილობას შეუძლია განსაზღვროს თავისი კენჭისყრის სიჩქარე, რათა დადგინდეს, აქვს თუ არა მას ახალი მონაცემები გადასაცემად.

3. HID-მოწყობილობით მონაცემთა გაცვლა ხდება სპეციალური სტრუქტურის მეშვეობით, რომელსაც ეწოდება ანგარიში (Report). თითოეული კონკრეტული ანგარიში შეიძლება შეიცავდეს 65535 ბაიტამდე მონაცემს. ანგარიშის სტრუქტურას აქვს ძალიან მოქნილი ორგანიზაცია, რომელიც საშუალებას გაძლევთ აღწეროთ მონაცემთა გადაცემის ნებისმიერი ფორმატი. იმისთვის, რომ კონკრეტული ანგარიშის ფორმატი გახდეს ცნობილი ჰოსტისთვის, მიკროკონტროლერი უნდა შეიცავდეს სპეციალურ აღწერას - ანგარიშის აღწერს.

USB კომუნიკაცია ხორციელდება უშუალოდ მიკროკონტროლერზე რამდენიმე გზით:

1. კონტროლერის გამოყენება ტექნიკის მხარდაჭერით, მაგალითად AT90USB *, დამზადებული atmega;

2. USB ინტერფეისის პროგრამული ემულაციის გამოყენება ნებისმიერ მიკროკონტროლერზე.

პროგრამული უზრუნველყოფის დანერგვისთვის, ამჟამად არსებობს მრავალი მზა გადაწყვეტა მიკროკონტროლერების სხვადასხვა ოჯახებისთვის. AVR მიკროკონტროლერებისთვის, მაგალითად, Atmega8, შესაძლებელია შემდეგი უფასო C ბიბლიოთეკების გამოყენება:

ორივე საკმაოდ მარტივი გამოსაყენებელია, უზრუნველყოფს USB 1.1 დაბალი სიჩქარის მოწყობილობების სრულ ემულაციას, გარდა კომუნიკაციის შეცდომებისა და ელექტრული მუშაობის გამო, და მუშაობს თითქმის ყველა AVR კონტროლერზე მინიმუმ 2KB ფლეშით, 128 ბაიტი ოპერატიული მეხსიერებით და სიხშირით. 12-დან 20 MHz-მდე.

აპლიკაციების დასაწერად, რომლებიც მხარს უჭერენ Windows USB HID მოწყობილობებს, გჭირდებათ დამალული * სათაურები, რომლებიც შედის Windows Driver Kit-ში (WDK), ან შეგიძლიათ გამოიყენოთ უფასო დამალული ბიბლიოთეკა ან მსგავსი.

ამრიგად, ზოგადად, USB-ის პროგრამირება საკმაოდ რთული ამოცანაა, რომელიც მოითხოვს სპეციალურ მიკროკონტროლერს ტექნიკის მხარდაჭერით და ოპერაციული სისტემის დრაივერის ჩაწერით. თუმცა, პრაქტიკაში, მოწყობილობების შემუშავებისას, შესაძლებელია გამოიყენოთ HID მოწყობილობების ბევრად უფრო მარტივი ინტერფეისი, რომლის მხარდაჭერა ხორციელდება სტანდარტული სისტემის დრაივერის დონეზე და პროგრამირება გამარტივებულია არსებული ფუნქციური ბიბლიოთეკების გამოყენებით.

საკონტროლო კითხვები

  1. რა განსხვავებაა D- და GND სადენებს შორის USB-ში? რატომ არ შეგიძლიათ გამოიყენოთ ერთი საერთო სადენი დენის და სიგნალისთვის?
  2. რამდენი USB სიჩქარის რეჟიმი არსებობს დღეს (მათ შორის ვერსია 3.0)?
  3. რა არის HID მოწყობილობა? რატომ არ არის საჭირო დრაივერების დაწერა მათი მუშაობისთვის თანამედროვე OS-ში?
  4. შესაძლებელია თუ არა USB მოწყობილობების დანერგვა მიკროპროცესორით, რომელსაც არ აქვს ჩაშენებული ინტერფეისის მხარდაჭერა?
  5. რა არის ძირითადი განსხვავებები USB 3.0 და წინა ვერსიებს შორის?

კარგი წიგნია, ბევრს ხსნის. ეს სასარგებლოა მათთვის, ვისაც სურს გაიგოს, თუ როგორ ხდება მონაცემების გადაცემა USB ავტობუსით.

შესავალი 1
ვისთვის არის ეს წიგნი: 2
რას ნახავთ მე-2 წიგნში
პროგრამული უზრუნველყოფის მოთხოვნები 3
ტექნიკის მოთხოვნები 4
კოდი 4-ის შესახებ
მე-4 თავების შეჯამება
ლეგენდა 6
მადლიერება 7
ნაწილი I. შესავალი USB 9
თავი 1. რა არის USB 11
1.1. USB ისტორია 11
1.2. USB-ის შედარება სხვა ინტერფეისებთან 14
1.3. USB-ის ძირითადი ცნებები 16
1.3.1. ზოგადი ავტობუსის არქიტექტურა 16
1.3.2. ფიზიკური და ლოგიკური ავტობუსის არქიტექტურა 16
1.3.3. USB კომპონენტები 18
1.3.4. USB მოწყობილობის თვისებები 18
1.3.5. ჰაბის თვისებები 19
1.3.6. ჰოსტის თვისებები 20
1.4. USB მოწყობილობების მაგალითები 20
1.4.1. მაუსი და კლავიატურა., 21
1.4.2. მონიტორები 21
1.4.3. USB-to-COM და USB-to-LPT ადაპტერები 22
1.4.4. სკანერები 23
1.4.5. მოდემი 23
1.4.6. დინამიკები 24
1.4.7. ფლეშ დრაივები 25
1.4.8. ჰაბები 28
1.4.9. გაზომვის ტექნოლოგია 28
1.4.10. ეგზოტიკური მოწყობილობები 29
1.5. USB ქსელის კავშირი 30
1.5.1. USB-Ethernet გადამყვანი 31
1.5.2. USB პირდაპირი კავშირი 31
1.6. მონაცემთა გადაცემა 31
1.6.1. მონაცემთა გადაცემის პრინციპები 32
1.6.2. შეწყვეტის მექანიზმი 32
1.6.3. ჰოსტის ადაპტერის ინტერფეისები 32
1.6.4. მეხსიერების პირდაპირი წვდომის შესაძლებლობა 34
1.6.5. მონაცემთა გადაცემის რეჟიმები 34
1.7. USB მოწყობილობების ინსტალაცია და კონფიგურაცია 35
1.7.1. BIOS პარამეტრები USB 38-ისთვის
1.7.2. პრობლემების მოგვარება 41
1.8. USB შეზღუდვები 45
1.9. თუ იყიდით კომპიუტერს 46
1.9.1. HS და USB 2.0 ერთი და იგივე არ არის! 46
1.9.2. სისტემის დაფა 47
1.9.3. კორპუსი 48
1.9.4. USB "ძველი" კომპიუტერის მოდელებისთვის 48
1.10. ონლაინ რესურსები ამ თავისთვის 49
თავი 2. USB აპარატურა 51
2.1. კაბელები და კონექტორები 51
2.1.1. კაბელის ტიპები 52
2.1.2. კაბელის სიგრძე 53
2.1.3. კონექტორები 53
2.2. ფიზიკური ინტერფეისი 55
2.2.1. მონაცემთა კოდირება 57
2.2.2. მოწყობილობის იდენტიფიკაცია 58
2.3. კვება 59
2.3.1. USB დენის ტიპები 59
2.3.2. ენერგიის მენეჯმენტი 60
2.3.3. დაბალი ენერგიის რეჟიმში შესვლა 61
2.4. ონლაინ რესურსები 61-ე თავისთვის
ნაწილი II. შიდა ორგანიზაცია USB 63
თავი 3. 65-ე ავტობუსის შიდა ორგანიზაცია
3.1. ლოგიკური კომუნიკაციის დონე 65
3.1.1. კლიენტის პროგრამული უზრუნველყოფის დონე 66
3.1.2. USB სისტემის დრაივერი დონე 67
3.1.3. ჰოსტის ინტერფეისის კონტროლერის ფენა 68
3.1.4. პერიფერიული ავტობუსი დონე 68
3.1.5. USB ლოგიკური მოწყობილობის დონე 69
3.1.6. USB მოწყობილობის ფუნქციონალური დონე 69
3.2. მონაცემთა გადაცემა 69 დონის მიხედვით
3.3. მონაცემთა გადაცემის სახეები 71
3.4. სინქრონიზაცია იზოქრონიულ ტრანსფერთან 73
3.5. პერსონალი 77
3.6. ბოლო წერტილები 78
3.7. არხები 79
3.8. პაკეტები 81
3.8.1. IN, OUT, SETUP და PING ნიშნის პაკეტების ფორმატი 83
3.8.2. SOF 83 პაკეტის ფორმატი
3.8.3. მონაცემთა პაკეტის ფორმატი 84
3.8.4. დადასტურების პაკეტის ფორმატი< 84
3.8.5. SPLIT პაკეტის ფორმატი * 84
3.9. საკონტროლო ჯამი 85
3.9.1. CRC 86-ის გამოთვლის ალგორითმი
3.9.2. პროგრამული უზრუნველყოფის CRC გაანგარიშება 87
3.10. ტრანზაქციები 90
3.10.1. ტრანზაქციის ტიპები 91
3.10.2. ტრანზაქციის დადასტურება და ნაკადის კონტროლი 92
3.10.3. გარიგების ოქმები 93
თავი 4. პროდუქტის შიდა ორგანიზაცია 96
4.1. მოთხოვნები USB მოწყობილობებზე 96
4.1.1. კონფიგურაციის პაკეტი 96
4.1.2. სტანდარტული მოთხოვნები მოწყობილობებზე 99
4.1.3. მოწყობილობის აღწერები 105
თავი 5. მასპინძელი და ჰაბების შიდა ორგანიზაცია 123
5.1. ჰაბები 123
5.1.1. ჰოსტის კონტროლერის ურთიერთქმედება ჰაბთან 126
5.1.2. კვანძის აღმწერი 127
5.1.3. Hub ითხოვს 129
5.1.4. CLEAR_HUB_FEATURE მოთხოვნა 130
5.1.5. CLEAR PORT_FEATURE 130 მოთხოვნა
5.1.6. მოითხოვეთ GET_BUS_STA TE 131
5.1.7. მოითხოვეთ GET_HUB_DESCRfPTOR 131
5.1.8. მოითხოვეთ GET_HUB_STATUS 131
5.1.9. მოითხოვეთ GET_PORT_STA TUS 132
5.1.10. SET_HUB_DESCRIPTOR 134 მოთხოვნა
5.1.11. SET_HUB_FEATURE მოთხოვნა 134
5.1.12. SET PORT FEATURE მოთხოვნა. 134
5.2. მოწყობილობების თანამშრომლობა სხვადასხვა სიჩქარით 135
თავი 6. USB კომპიუტერის გარეშე 137
6.1. OTG კონექტორები 138
6.2. OTG მოწყობილობების ტიპები 138
6.3. OTG მოწყობილობის აღმწერი 139
6.4. ონლაინ რესურსები ამ თავისთვის 140
ნაწილი III. დაპროგრამების პრაქტიკა 141
თავი 7. Windows USB მხარდაჭერა 143
7.1. მოდელი WDM 144
7.2. ურთიერთქმედება USB დრაივერთან 146
თავი 8. HID მოწყობილობები * 149
8.1. HID მოწყობილობის თვისებები 149
8.2. როგორ გავცვალოთ მონაცემები HID მოწყობილობით 151
8.3. HID Device 152-ის დაყენება
8.4. HID მოწყობილობის იდენტიფიკაცია 152
8.4.1. ჩატვირთვის მოწყობილობის იდენტიფიკაცია 153
8.4.2. HID მოწყობილობის კონფიგურაციის აღმწერი 153
8.4.3. HID აღმწერი 154
8.4.4. მოხსენების აღმწერი 156
8.5. ანგარიშის აღწერის სტრუქტურა 156
8.5.1. ანგარიშის ელემენტების სტრუქტურა 156
8.5.2. ანგარიშის ერთეულის ტიპები 157
8.5.3. აღმწერების მაგალითები 165
8.6. HID მოწყობილობის მოთხოვნები 168
8.6.1. GET_REPORT მოთხოვნა. 169
8.6.2. SET_REPORT მოთხოვნა 169
8.6.3. GETJDLE მოთხოვნა. 170
8.6.4. SETJDLE 170 მოთხოვნა
8.6.5. მოითხოვეთ GET_PROTOCOL 171
8.6.6. SET_PROTOCOL მოთხოვნა 171
8.7. ინსტრუმენტები 171
8.8. ურთიერთქმედება HID დრაივერთან 172
თავი 9. შესავალი WDM 181
9.1. დრაივერების ფენა 183
9.2. სიმბოლური მოწყობილობების სახელები 184
9.3. WDM დრაივერის ძირითადი პროცედურები 189
9.3.1. DriverEntry 190 პროცედურა
9.3.2. მოწყობილობის დამატების პროცედურა 192
9.3.3. განტვირთვის პროცედურა 194
9.3.4. მძღოლის საოპერაციო პროცედურები 196
9.3.5. ემსახურება IOCTL 203 მოთხოვნებს
9.4. დრაივერის ჩატვირთვა და დრაივერის პროცედურებზე წვდომა 209
9.4.1. მძღოლის პროცედურა 209
9.4.2. დრაივერის 210 რეგისტრაცია
9.4.3. საოპერაციო პროცედურების მითითება 217
9.4.4. დრაივერის შენახვა შესრულებადი ფაილის შიგნით 218
9.5. დრაივერების შექმნის ინსტრუმენტები 220
9.5.1. NuMega Driver Studio 220
9.5.2. Jungo WinDriver 220
9.5.3. Jungo KernelDriver 220
თავი 10. USB PnP სპეციფიკაცია 221
10.1. Plug and Play 221-ის შესავალი
10.1.1. Plug and Play ამოცანები და ფუნქციები 221
10.1.2. დაწყებული PnP 222 პროცედურა
10.1.3. PnP პროგრამული კომპონენტები 224
10.2. შეაერთეთ და დაუკარით USB 225-ისთვის
10.2.1. USB მოწყობილობების კონფიგურაცია 226
10.2.2. USB მოწყობილობის ნუმერაცია 226
10.2.3. USB PnP მოწყობილობის იდენტიფიკატორები 228
10.3. USB მოწყობილობების სიის მიღება 229
10.4. INF ფაილი 234
10.4.1. INF ფაილის სტრუქტურა 234
10.4.2. ნაწილი ვერსია 235
10.4.3. მწარმოებლის განყოფილება 237
10.4.4. DestinationDirs სექცია 239
10.4.5. მოდელის აღწერა ნაწილი 241
10.4.6. სექცია xxx.AddReg და xxx.DelReg. 242
10.4.7. სექცია xxx.LogConfig 244
10.4.8. სექცია xxx.CopyFiles 244
10.4.9. სიმებიანი ნაწილი 245
10.4.10. ნაწილის ბმულები 246
10.4.11. INF ფაილების შექმნა და ტესტირება 247
10.4.12. მოწყობილობების ინსტალაცია INF ფაილის 248 გამოყენებით
10.5. USB რეესტრის ფილიალები 249
თავი 11. BIOS-ის მახასიათებლები 251
11.1. BIOS სერვისი 1АН 251
11.1.1. ფუნქცია B101H - PCI BIOS 252-ის არსებობის განსაზღვრა
11.1.2. B102N ფუნქცია - მოძებნეთ PCI მოწყობილობები იდენტიფიკატორების მიხედვით
მოწყობილობები და მწარმოებლები 253
11.1.3. B103H ფუნქცია - მოძებნეთ PCI მოწყობილობები კლასის კოდით 254
11.1.4. B108H ფუნქცია - წაიკითხეთ კონფიგურაციის რეგისტრი (ბაიტი) 255
11.1.5. VYu9N ფუნქცია - წაიკითხეთ კონფიგურაციის რეესტრი (Word) 256
11.1.6. B10AN ფუნქცია - წაიკითხეთ კონფიგურაციის რეგისტრი (DWord) 256
11.1.7. B10BN ფუნქცია - ჩაწერეთ კონფიგურაციის რეგისტრი (ბაიტი) 257
11.1.8. B10CH ფუნქცია - ჩაწერეთ კონფიგურაციის რეგისტრი (Word) 257
11.1.9. B10DH ფუნქცია - ჩაწერის კონფიგურაციის რეგისტრაცია (DWord) 258
11.2. Case Study 259
ნაწილი IV. USB მოწყობილობების შექმნა 283
თავი 12. USB პერიფერიული მოწყობილობები 285
12.1. Atmel 286 მიკროჩიპი
12.1.1. მიკროკონტროლერები MSC-51 არქიტექტურით 286
12.1.2. Hub Controllers 289
12.1.3. ჰაბ მიკროპროცესორები AVR 289 ბირთვით
12.1.4. სხვა ჩიპები Atmel 290
12.2. მიკროჩიპები Cygnal 291
12.2.1. მიკროპროცესორები C8051F320 და C8051F321 291
12.2.2. სხვა ჩიპები Cygnal 293
12.3. ICs FTDI 296
12.3.1. IC-ები FT232AM და FT232BM 297
12.3.2. ICs FT245AM და FT245BM 298
12.3.3. მიკროჩიპი FT2232BM 299
12.3.4. მიკროჩიპი FT8U100AX 300
12.3.5. გამართვის ნაკრები და მოდულები 301
12.3.6. დრაივერები 302
12.3.7. დამატებითი კომუნალური მომსახურება 303
12.3.8. სხვა მოდულები 304
12.4. Intel 304 მიკროჩიპები
12.5. მიკროჩიპები Microchip 308
12.6. მიკროჩიპები Motorola 308
12.7. მიკროჩიპები Philips 309
12.7.1. მიკროჩიპები USB 310
12.7.2. ჰაბები 311
12.7.3. სხვა ჩიპები Philips 313
12.8. მიკროჩიპები Texas Instruments 314
12.9. მიკროჩიპები ტრანს Dimension 317
12.10. დენის დაცვის IC 318
12.11. ონლაინ რესურსები ამ თავისთვის 319
თავი 13. Atmel AT89C5131 დაფუძნებული HID მოწყობილობა 322
13.1. АТ89С5131 322-ის სტრუქტურული დიაგრამა
13.2. USB რეგისტრები АТ89С5131 324
13.2.1. დარეგისტრირდით USBCON 324
13.2.2. დაარეგისტრირე USBADDR 326
13.2.3. USBINT 327 რეგისტრაცია
13.2.4. USBIEN 328 რეგისტრაცია
13.2.5. UEPNUM რეგისტრაცია. 329
13.2.6. დარეგისტრირდით UEPCONX 330
13.2.7. UEPSTAX რეგისტრაცია. 331
13.2.8. UEPRST რეგისტრაცია. 334
13.2.9. UEPINT რეგისტრაცია. 335
13.2.10. დარეგისტრირდით UEPIEN 336
13.2.11. დარეგისტრირდით UEPDATX 337
13.2.12. დარეგისტრირდით UBYCTLX 337
13.2.13. UFNUML 338 რეგისტრაცია
13.2.14. UFNUMH რეგისტრაცია. 338
13.3. ჩართვა AT89S5131 338
13.4. პროგრამირების ინსტრუმენტები 339
13.4.1. შემდგენელი 341
13.4.2. პროგრამისტი 342
13.5. მიკროპროცესორული პროგრამა 349
13.5.1. პროგრამის პირველი ვერსია AT89C5131 349-ისთვის
13.5.2. სტრიქონების აღმწერების დამატება 369
13.5.3. საბოლოო წერტილების დამატება 374
13.5.4. HID Device 377-ის შექმნა
13.5.5. კომუნიკაცია HID Device 381-თან
13.6. ანგარიშების კითხვა Windows 388-ში
13.7. Windows XP 396-ის დამატებითი ფუნქციები
13.8. მრავალანგარიშიანი მოწყობილობა 397
თავი 14. USB მოწყობილობის შექმნა ATMEL АТ89С5131 402-ზე დაფუძნებული
14.1. Non-HID მოწყობილობა 402
14.2. დრაივერის შექმნა Driver Studio 405-ით
14.2.1. რამდენიმე სიტყვა Driver Studio 407 ბიბლიოთეკის შესახებ
14.2.2. სხვა Driver Studio 411 კლასები
14.2.3. დრაივერის შაბლონის შექმნა Driver Studio 412-ით
14.2.4. დრაივერის შაბლონის 422 მოდიფიკაცია
14.2.5. 423 კლასის მოწყობილობის ძირითადი მეთოდები
14.2.6. მონაცემთა წაკითხვის განხორციელება 426
14.2.7. დრაივერის ინსტალაცია 428
14.2.8. მონაცემთა წამკითხველი 429
14.2.9. მონაცემების წაკითხვა სხვა ბოლო წერტილების ტიპებიდან 438
14.2.10. გაასუფთავეთ USB დრაივერი 439
თავი 15. FTDI 457 IC-ების გამოყენება
15.1. ფუნქციონალური დიაგრამა FT232BM 457
15.2. წრე FT232BM 460
15.3. D2XX 460 მახასიათებლები
15.4. გადატანა COM-დან USB 465-ზე
15.4.1. კონვერტორის 465 წრის აღწერა
15.4.2. ბაუდის სიჩქარის დაყენება 467
ნაწილი V. ცნობარი 469
თავი 16. Windows-ის ძირითადი ფუნქციები 471
16.1. CreateFile და CloseHandle ფუნქციები: ობიექტის გახსნა და დახურვა. 471
16.1.1. დამატებითი ინფორმაცია 472
16.1.2. დაბრუნების ღირებულება 472
16.1.3. დარეკეთ მაგალითზე 472
16.2. ფაილის წაკითხვის ფუნქცია: მონაცემთა წაკითხვა 473
16.2.1. დამატებითი ინფორმაცია 474
16.2.2. დაბრუნების ღირებულება 474
16.2.3. დარეკვა მაგალითი 474
16.3. WriteFile ფუნქცია: მონაცემთა გადაცემა 475
16.3.1. დამატებითი ინფორმაცია 476
16.3.2. დაბრუნების ღირებულება 476
16.3.3. დარეკეთ მაგალითად 476
16.4. ReadFileEx ფუნქცია. APC წაკითხული მონაცემები 477
16.4.1. დასაბრუნებელი ღირებულება 479
16.4.2. დამატებითი ინფორმაცია 479
16.4.3. დარეკეთ მაგალითზე 479
16.5. WriteFileEx ფუნქცია: APC Data Transfer 480
16.5.1. დასაბრუნებელი ღირებულება 481
16.5.2. დარეკეთ მაგალითზე 481
16.6. WaitForSingleObject ფუნქცია დაელოდეთ სიგნალს
ობიექტი აცხადებს 482
16.6.1. დაბრუნების ღირებულება 482
16.7. WaitForMultipleObjects ფუნქცია: ელოდება სიგნალს
ობიექტი აცხადებს 483
16.7.1. დაბრუნების ღირებულება 484
16.8. GetOverlappedResult ფუნქცია ასინქრონული ოპერაციის შედეგი 484
16.8.1. დაბრუნების ღირებულება 485
16.9. DeviceIoControl ფუნქცია: 485 მძღოლის პირდაპირი კონტროლი
16.9.1. დასაბრუნებელი ღირებულება 487
16.10. QueryDosDevice ფუნქცია: მიიღეთ მოწყობილობის სახელი
მისი DOS სახელით 487
16.10.1. დასაბრუნებელი ღირებულება 488
16.10.2. დარეკეთ მაგალითზე 488
16.11: განსაზღვრეთ Dos Device ფუნქცია: ოპერაციები DOS მოწყობილობის სახელით 489
16.11.1. დასაბრუნებელი ღირებულება 490
16.11.2. დარეკვა მაგალითი 490
თავი 17. HID API ფუნქციები. 492
17.1. HidD_Hello ფუნქცია: 492 ბიბლიოთეკის შემოწმება
17.2. HidD_GetHidGuid ფუნქცია: მიიღეთ GUID 492
17.3. HidD_GetPreparsedData ფუნქცია: შექმენით Device Descriptor 493
17.4. HidD_FreePreparsedData ფუნქცია: მოწყობილობის აღწერის გათავისუფლება 493
17.5. HidD_GetFeature ფუნქცია: FEATURE ანგარიშის მიღება 494
17.6. HidD_SetFeature ფუნქცია: FEATURE ანგარიშის 494 გადაცემა
17.7. HidD_GetNumInputBuffers ფუნქცია: მიიღეთ ბუფერების რაოდენობა 495
17.8. HidD_SetNumInputBuffers ფუნქცია: ბუფერების რაოდენობის დაყენება 495-მდე
17.9. HidD_GetAttribntes ფუნქცია: მოწყობილობის ატრიბუტების მიღება 495
17.10. HidD_GetMimifactnrerStnng ფუნქცია. მიიღეთ პროდიუსერის სტრიქონი 496
17.11. HidD_GetProductString ფუნქცია. პროდუქციის ხაზის მიღება 497
17.12. HidD_ მიიღეთ სერიული MumberString ფუნქცია. სიმების მიღება
სერიული ნომერი 497
17.13. HidD_GetIndexedString ფუნქცია. სტრიქონის მიღება 498 ინდექსზე
17.14. HidDjGetlnputReporr ფუნქცია. INPUT ანგარიშის მიღება 498
17.15. HidD_SetOutputReport ფუნქცია. OUTPUT ანგარიშის გადაცემა 499
17.16. HidP_GetCaps ფუნქცია: მოწყობილობის თვისებების მიღება 499
17.17. HidP_MaxDataListLength ფუნქცია: მიიღეთ 500 ანგარიშის ზომა
თავი 18. UCH 502 Host Controller
18.1. Host Controller 502 Control Registers
18.1.1. USB Command Register (USBCMD) 504
18.1.2. USB სტატუსის რეგისტრი (USBSTS) 506
18.1.3. შეფერხების კონტროლის რეგისტრი (USBINTR) 506
18.1.4. ჩარჩოს ნომრის რეგისტრი (FRNUM) 507
18.1.5. Frame Base Address Register (FLBASEADD) 508
18.1.6. ჩარჩოს მოდიფიკატორის რეგისტრის დაწყება (SOFMOD) 508
18.1.7. პორტის სტატუსისა და კონტროლის რეესტრი (PORTSC) 509
18.2. UCH 510 ჰოსტის კონტროლერის მონაცემთა სტრუქტურები
18.2.1. ჩარჩოების სია 510
18.2.2. გადაცემის აღმწერი i 511
18.2.3. რიგის სათაური 514
18.3. UCH 516 აღწერის სიის დამუშავება
თავი 19. ხელსაწყოები 518
19.1. Microsoft Visual Studio Tools 518
19.1.1. დამოკიდებულია 518
19.1.2. შეცდომის ძიება 518
19.1.3. GuidGen 518
19.2. Microsoft DDK Tools 520
19.2.1. DeviceTree 520
19.2.2. DevCon .- 521
19.2.3. ჩკლნფ და გენლნფ. 526
19.3. CompuWare Corporation Tools 527
19.3.1. მონიტორი 527
19.3.2. SymLink 527
19.3.3. EzDriverlnstaller 527
19.3.4. WdmSniff 527
19.4. Syslntemals Tools 528
19.4.1. WinObj 528
19.5. USB ფორუმი 531 ინსტრუმენტები
19.5.1. HID Descriptor Tool 531
19.6. HDD პროგრამული ინსტრუმენტები 533
19.7. Sourceforge Tools 533
დანართები 535
დანართი 1. დამატებითი ფუნქციები 537
დანართი 2. ენის იდენტიფიკატორების ცხრილი (LangID) 539
დანართი 3. მწარმოებლის კოდების ცხრილი (მიმწოდებლის ID, მოწყობილობის ID) 543
დანართი 4. CD 546-ის აღწერა
ლიტერატურა 548
ინდექსი 549

გააზიარე ეს