Obsługa USB.

TW
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
0

Witam wszystkich... Mam do Was pytanie. Szukałem w google, i ogólnie w całym internecie ale niczego nie znalazłem na ten temat. Chodzi mi o obsługę USB z poziomu Delphi lub np innego kompilatora Object Pascal/ C/C++. W jaki sposób można podłączyć coś do USB, wykryć to podłączenie programem i np wysłać rozkazy sterujące do portu USB np. zapalić podłączoną diodę, i odczytać stan podłączonej diody - czy jest zapalona czy wyłączona? widziałem już post o USB ale tam nie było odpowiedzi pod USB tylko do RS232

p.s proszę nie traktować tego postu wrogo:)

Z góry dziękuję za pomoc

edytowany 1x, ostatnio: olesio
2

Źle szukałeś.
http://4programmers.net/Forum/Delphi_Pascal/126447-Sterowanie_portem_USB

Szukałem w google, i ogólnie w całym internecie ale niczego nie znalazłem na ten temat.

Każdy jeden szukał, każdy jeden niczego nie znalazł. Serio, niezłym analfabetą musisz być żeby nie znaleźć nic w googlach. No ale przecież wpisać "USB Delphi" to duży wysiłek intelektualny (temat z 4programmers jest 6 wynikiem, są inne, może nawet lepsze).
Następnym razem napisz nie tylko że szukałeś i nie twierdź głupio że nic nie znalazłeś, tylko powiedz co znalazłeś i co nie działało. No ale gdzie ja, przecież łatwiej jest napisać temat i powiedzieć że się szukało.

TW
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
0

Wielkie dzięki za odpowiedź:) Może być chociaż mi chodziło o bezpośrednie podłączenie diody np przez tranzystor a nie jakimś urządzeniem cóż pozostało tylko kupić cały pakiet

MA
USB to nie LPT czy RS232, żeby dla testów podłączać diodę do tego portu.
TW
co nie znaczy że nie można
Azarien
USB jest właśnie bliższy RS232 niż LPT, co sprawia że sens takiego bezpośredniego podłączania jest bliski zeru.
JK
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:15
1

Trzeba przyznać że trochę "cienko" jest jak sie szuka na temat delphi + USB , lepiej szukać o samym USB ;)

Ja bym powiedział że USB to tylko warstwa transportowa , musisz coś powiedzieć wiecej o Twoim sprzecie który masz podłaczony do USB.
Bo w zaleznosci od tego co jest po drugiej stronie to wszystko zmienia.

Czy to jest HID czy tex może interesuje Cie transmisja BULK ISOC itp.
Jaki układ scalony jest użyty po stronie sprzętu bo producent może dawać swoje sterowniki albo możesz użyć czegoś standardowego libusb albo to co jest w windows.

Co do wykrywania sprzętu to np, WM_DEVICECHANGE będzie pomocne

Wiec ja bym zaczął od poczatku !
Co chcesz podłączyć ?

babubabu
z tego co przeczytałem to zwykłą diodę xD
flowCRANE
Dioda też może mieć swój firmware;
TW
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
0

1 tranzystor i diodę z rezystorem ograniczającym prąd bez scalaków. dzięki za ten WM_DEVICECHANGE pomyślę jak to wykorzystać:)))

edytowany 1x, ostatnio: tweety
RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
1

To podłączanie diody do USB ma podobny sens co podłączenie jej do karty sieciowej. Na podobnych zasadach z resztą działają oba protokoły, wysyła się ramki, a nie zapala linie.

pelsta
z resztą razi
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 21 godzin
1

http://www.google.com/search?q=delphi+libusb

1 tranzystor i diodę z rezystorem ograniczającym prąd bez scalaków.
Podłączyć to możesz, do linii zasilania, z tym że sterować tą diodą nie będziesz. Chyba że da się włączać i wyłączać zasilanie w porcie ;-)

wesoledi
  • Rejestracja:ponad 22 lata
  • Ostatnio:ponad 5 lat
0

Jeśli chcesz zrobić urządzonko podłączane do portu USB,. musisz mieć scalak z obsługą USB, jakiś mikrokontroler, np. nowe AtMegi (XMEGA) mają już wbudowaną obsługę, czy też większość na ARM.

Innym, prostszym rozwiązaniem jest zastosowanie translatora, np. FS232, który z jednej strony ma USB (podłaczasz do kompa, odpowiednio oczywiście zabezpieczony stosownymi kondensatorami czy diodami, szczegóły w specyfikacji, ja już nie pamiętam), z drugiej RS232, i do tej strony podłączasz niemalże dowolny mikrokontroler (np. popularną i tanią Atmegę8).
W nim implementujesz program, który w zależności od komendy jaką wyślesz z komputera zapali lub zgasi którąś z diod podłączoną bezpośrednio (tylko diody b.małych mocy) lub pośrednio (przez tranzystor). W ten sposób stworzysz też gotową bazę do dalszych zabaw. Poczytaj wtedy o U(S)ART.
(Od biedy są też sterowniki programowe dla mikrokontrolerów, ale chyba nie ma sensu się w to bawić, skoro są gotowe układy).


+1 post
kult
  • Rejestracja:prawie 22 lata
  • Ostatnio:ponad rok
0

Tak jak pisze @wesoledi najprościej wykorzystać zintegrowany tani konwerter usb <-> uart czyli kostkę FT232.
Nie musisz do niego podłączać mikrokontrolera, gdyż możesz wykorzystać linie modemowe np RTS -> http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232BM.pdf
Kostkę FT232 system wykryje Ci jako zwykły port COM, więc z wysterowaniem jej problemu mieć nie będziesz z uwagi na sporą ilość gotowców w sieci.

Zobacz pozostałe 2 komentarze
kult
Nie ma technicznej możliwości wykonania konwertera usb-lpt. Są natomiast konwertery usb-i/o rónoległe np FT245.
Azarien
dlaczego „nie ma technicznej możliwości”?
wesoledi
są takie konwertery, by móc podłączać stare drukarki, ale to raczej nie dla autora :) (tzn nie wykorzysta tego portu tak jak by chciał podejrzewam, bo nie jest to 100% wsparcie tego portu)
kult
@Azarien LPT ma własne przerwanie, poza tym jest tam jeszcze kilka innych niuansów. Pełny port lpt dostarczają karty na pci/pci-e
Azarien
Uhm, przypomina mi to podobną sytuację gdy wychodził z użycia slot ISA - na PCI niemożliwe było, by karta dźwiękowa była sprzętowo zgodna z tymi na ISA, bo też czegoś tam brakowało. Kto grał w DOS-owe gierki to miał problem ;-)
JK
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:15
0

@tweety - "1 tranzystor i diodę z rezystorem ograniczającym prąd bez scalaków" - przeczytaj proszę jakieś podstawy działania USB !!!, Wikipedia angielska wystarczy , USB to nie port drukarki tam masz dwa kabelki D- i D+ i nie ma fizycznie mozliwości aby kontroler ustawił ci na linii stan wysoki albo niski

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.