Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

USB po raz kolejny - podstawowe pytania

23 Lis 2006 00:27 3956 17
  • Poziom 29  
    Witam.
    Zamierzam pobawić się komunikacją USB komp<>&micro;C i mam kilka pytań.

    1. jak wyglądają typowe najprostsze ramki transmisyjne po podpięciu urządzenia pod komputer po raz pierwszy (identyfikacja itd...).
    2. j.w. podczas przesyłania danych.
    3. czy można podpiąć się jako jakieś "standardowe urządzonko" do którego stery znajdują się w windowsie i później programowo się z nim skomunikować.

    proszę o jakieś skrótowe odpowiedzi. Jak szukałem to nie znalazłem nic jasno powiedzianego (w języku polskim) poza podawanymi odnośnikami do obcojęzycznych opracowań i gotowców. Czy jest gdzieś to w miarę dobrze opisane po polsku?
    Potrzebuję info jak najprościej wysłać/odebrać jeden bajt - PC<>&micro;P
  • Poziom 42  
    Witam,

    obawiam się, że nigdzie nie znajdziesz na to pytanie prostej i krótkiej odpowiedzi. Niewiele jest informacji w necie na ten temat bo to "temat kobyła" i nie da się go ot tak przeskoczyć. Podejrzewam, że szybciej by ci było właśnie wziąć sobie z tych obcojęzycznych opracowań jakiegoś gotowca zaprogramować procka i potem jakoś przez niego się kontaktować. Widziałem w necie rozwiązania zdaje się Igor Cesko (może źle piszę nazwisko) i jakiegoś tam japończyka który na ATmedze8 zrobił interfejsik i udostępnia wsad. Inną drogą, którą proponuję ci podążać to np :

    są czipy FTDI - które zamieniają USB na RS albo LPT. To już można samemu zrobić - poszukaj sobie schematów do tego - a programujesz - tzn kontaktujesz się z PCtem jak przez RSa albo LPT - o wiele prostsze niż pisanie obsługi ramek do USB a poza tym nie musisz pisać sterowników dla WINDY bo to jest udręka ;)... firma FTDI daje sterowniki dla swoich czipów pod windę.

    a jeszcze inna i chyba jeszcze prostsza droga to kup sobie kabelek - przejściówkę USB-RS232 (różne kable do telefonów komórkowych) tania jak barszcz - wychodzi lepiej niż kupić czipa FTDI no i znowu możesz w prosty sposób robić sobie komunikację z PCtem przez USB(a tak naprawdę przez RS znany i lubiany)

    pozdrawiam ;)
  • Poziom 29  
    jojku - znów to samo. Ja po prostu chcę poznać interfejs usb (choć trochę w praktyce). Stosuję FTDI dla komunikacji rs232 i jestem zadowolony z tych chipów, bo niema tego o czym wszyscy piszą, że jest LPT z fitmy FTDI i nawet sam producent taż nigdzie nawet nie wspomina o portach LPT ;-) co do gotowych przejściówek to moim zdaniem są do d....

    więc po polsiemu to nic nie znajdę sposobu komunikacji po USB (opis) - powtażam, że gotowce wcale mnie nie interesują a komunikować się potrafię bez żadnych problemów - ale nie po USB.
  • Poziom 42  
    ;) ... hehehe się kolega tak nie denerwuje ;) ... a ja działałem na takiej przejściówce i było ok ;) oczywiście wiadomo - nie wszystkie są dobre bo czasem pomimo sterowników do windy i tak nie działa dobrze COM.

    a co do USB to ogólnie z jakąś informacją dobrą jest MEGA LIPA, z jednej strony sam też chciałem zabrać się jakiś czas temu za to, kupiłem nawet sobie książkę o USB z wydawnictwa Helion ale to niewypał ;) - później zacząłem jednak analizować informacje z netu i wcale nie oferują oni tylko gotowców bo ten japończyk podaje kod źródłowy w asemblerze więc kolega tak nie narzeka ;) ... ale jak sobie popatrzyłem ile się trzeba bawić żeby uzyskać taki prosty efekt to dałem sobie spokój. Toż to "kilogramy" kodu w asemblerze waży ;)

    czasem jest warto zająć się tym co jest w zasięgu ręki a nie wyważać główą muru ;) ... podobnie kiedyś chciałem sobie zrobić stos IP na Realteku8019 - hehehe i tu podobnie trzeba by hektolitry kodu napisać - a po co skoro okazało się że są fajne gotowce jak moduły firmy TIBBO - też takie przejściówki Ethernet-RS ;)

    .... no ale jeśli kolega się zaweźmie i dla honoru i włanych doświadczeń w końcu coś zrobi z tym USB - to mam nadzieję, że się pochwali wiedzą tu na elektrodzie, ja będę pierwszym zainteresowanym i zapewne nie ostatnim :)

    pozdrawiam
  • Poziom 11  
    Był kiedyś na forum użytkownik samuraj bodajże, który przebrną przez ten temat. Niestety jego projekt był podobno komercyjny i nie mógł się podzielić szczegółami. Z tego co pamiętam obsłużył usb ATmegą która zgłaszała się w systemie jako urządzenie typu HID a co za tym idzie nie trzeba żadnych specjalnych sterowników od strony Windowsa.

    Mnie również interesuje ten temat, jakby ktoś miał jakieś ciekawe spostrzeżenia to niech się podzieli.
  • Poziom 39  
    prokopcio napisał:
    ...Potrzebuję info jak najprościej wysłać/odebrać jeden bajt - PC<>&micro;P

    A do czego Ci to potrzebne :?:
    Załóżmy , że udało Ci się połączyć uC z PC magistralą USB i system na PC-cie widzie Twoje urządzanie jako np. XYZ, tylko teraz pytanie , co dalej.Co system na pececie ma zrobić z tym odebranym bajtem , komu go przekazać.Ten sam problem istnieje w drugą stronę , czyli kto ma wysyłać dane do Twojego urządzenia , jakiś konkretny program :?:
    Możesz od biedy , uC-kiem udawać myszkę czy klawiaturę USB , pytanie tylko po co Ci to , jaki cel temu ma przyświecać :D
    Dobrym sposobem , jest podglądanie(fuj) innych.Poszukaj sobie w sieci programu SnoopyPro , którym możesz "założyć haka" na dowolne urządzenie USB i obserwować , w jaki sposób to urządzenie rozmawia z systemem na "dzień dobry" , jakie dane otrzymuje , jak odpowiada , jak są zbudowane pakiety i jeszcze mnóstwo innych rzeczy , a wtedy kto wie może osiągniesz zamierzony cel :D

    Piotrek
  • Poziom 29  
    opis po polsku magistrali :-)
    http://www.jawilogic.com/downloads/usb.pdf

    Co do programu to w jakiś sposób chciałbym umieć wysłać/odebrać jakiś bajt/bajty za pomocą programu w Delphi np poprzez wirtualny port COM.
    Narazie poza nauką i zabawą to do niczego to niema służyć :-)
  • Poziom 10  
    W temacie USB polecam stronę: http://www.lvr.com/usb.htm

    Dodano po 5 [minuty]:

    Poza tym istnieje układ Cypresa do mikrokontrolerów 8 bitowych.
    W dodatku może pracować również w trybie hosta.
    Jednak nie wiem czy jest jeszcze do kupienia.
    Jeżeli ktoś wie/widział/słyszał niech coś napisze.

    USB Host/Slave Controller SL811HS (http://www.mscbp.hu/download/Cypress/SL811HS/SL811HS.pdf)
  • Poziom 16  
    Jest też ksiażka "USB Uniwersalny interfejs szeregowy" - Wojciech Mielczarek w MM po 24,70
  • Poziom 42  
    nno ta książka to w zasadzie kserokopia tego PDFa który kolega podał w linku ;) nic się z niej nie skorzysta jeśli chodzi o jakąkolwiek pomoc przy napisaniu pod windę chociażby najmniejszego sterownika własnego ;)
  • Specjalista techniki cyfrowej
    Co do pierwszych dwóch pytań to będę podły i odeślę "do źródeł", czyli http://www.usb.org/developers/docs/
    No i oczywiście polecam podglądanie.

    Co do pytania 3. jest to jak najbardziej wykonalne.

    A tak apropos pisania driverów pod windę, to robienie tego "natywnie" to istna męka. Rozwiązanie jest dość proste - libusb, port linuksowej, o wiele przyjemniejszej w obsłudze biblioteki:
    http://libusb-win32.sourceforge.net/
  • Poziom 29  
    mam nadzięję, że docelowo udałoby się jednak coś w stylu:

    "Wykryto nowe urządzenie - standardowe urządzenie HID elektroda ;-)"

    "Urządzenie zostało poprawnie zainstalowane i jest gotowe do użycia..."

    i to bez zagłębiania się w pisanie sterowników a jedynie wykorzystanie coś z biblioteki wina...
  • Poziom 42  
    witam,

    no kolega shg teraz "zaszalał" ;) .... nic nie wiedziałem do tej pory o tej bibliotece LibUsb .... tak po pierwszym rzuceniu okiem na opis wygląda, że będzie zjadliwe ;) .... no to będę się miał na co "rzucić" przez kilka kolejnych wolnych wieczorów ;) .... wielkie dzięki z mojej strony za ten namiar ;)

    pozdrówka
  • Poziom 35  
    Witam
    Widzę, że ktoś o mnie wspomniał powyżej.
    Tak przebrnąłem prze USB, nic specjalnie skomplikowanego, ale zabawy było, co nie miara.
    Niestety tak jak zaznaczył ktoś powyżej był to projekt komercyjny i zleceniodawca zastrzegł sobie prawo do kodu źródłowego. A wiem że jest jednym z Elektrody :D
    Powiem tyle, że idzie to zrobić, ale na super prędkości nie ma co liczyć.
    Ja akurat robiłem proste interfejsy włącz/wyłącz, sterowanie LCD, buzerkiem itp.
    Nic skomplikowanego, całość kodu przeniosłem na stronę hosta (PC) a mikrokontroler sterował tylko w odpowiedni sposób portami na podstawie otrzymanej komendy z PC.
    Celem było skonstruowanie urządzenia, które widziane jest w systemie jako standardowe urządzenie klasy HID,a podłączenie go nie wymaga żadnego sterownika tylko samej aplikacji. No i udało się. Szkoda, że nie mogę się podzielić bardziej szczegółowymi aspektami tego problemu, ale wziąłem za to pieniądze i dotrzymuje słowa. Zainteresowanym mogę podesłać kod w celu weryfikacji jak to działa. Proszę poszukać mojego postu na ten temat tam jest więcej szczegółów.
  • Poziom 29  
    a wytłumaczycie z grubsza o co chodzi z tym LibUsb - bo szczerze to nie kumam. Wcześniej to wszyscy wspominali, że poniżej windowsaXP lub 2000 to marne szanse na komunikację po USB (w co niewierzyłem) a tutaj w opisie pojawia się również win98se. Ale i tak nie wiem o co chodzi bo za słabo znam angielski.

    A czy wiecie może gdzie znajduje się opis w stylu:
    "po podłączeniu urządzenia komputer wyśle ramkę (zapytanie) : 010101011101010010100101b ;-) trzeba po tym wysłać ID : 111010010b+"name" itd....."
    sposób samej komunikacji pod względem poszczególnych ramek i (mikroramek) oraz przebiegów na magistrali już znam.
  • Pomocny post
    Poziom 35  
    prokopcio proponuje zakupić a lepie pożyczyć (będzie taniej) kierownice podpinana pod port USB. To jest urządzenie klasy HID. Do tego poszukać programu SnopyPro. To jest snifer pracujący na portach USB.
    Włączyć program, podłączyć kierownice, zapisać loga.
    I wszystko będziesz wiedzieć, która ramka, jaki bajt itp.
    Sam tak robiłem i mówię nic łatwiejszego nie ma. Dobrze mieć dwa urządzenia klasy HID np. dwie kierownice innych producentów, aby łatwo sobie porównać.
    A i jeszcze jedno, sniferem nie da się zrobić scanu klawiatury i mychy, choć to urządzenia tej samej klasy.
    System operacyjny wymusza wyłączność na te urządzenia a snifer pracuje warstwę nizej.