X

HID AVR - Komunikacja z PC

11111olo 07 Dec 2013 19:35
  • #1 07 Dec 2013 19:35
    11111olo
    Level 43  
    Helpful post? (0)
    Witam

    Opanowałem wszelkie klawiatury, myszki, joysticki itp. na HID.

    Chcę pójść dalej i wymieniać dane z PC.
    Na początek nie musi to być nic spektakularnego. Wystarczy że jak coś na pc zrobię to zaświeci się led lub zgaśnie czy też naciśnięcie przycisku od strony AVR spowoduje "coś" na PC.

    Może jest to gdzieś opisane w postaci tutoriala?
  • #2 08 Dec 2013 01:39
    Szymon Tarnowski
    Level 27  
    Helpful post? (0)
    W książce "USB Complete" Ian Axelson jest to dobrze rozpisane, zarówno od strony procka jak i PC.
  • #3 08 Dec 2013 09:32
    robiw
    Level 26  
    Helpful post? (0)
    To nie rozumiem. Piszesz "Opanowałem wszelkie klawiatury, myszki, joysticki itp. na HID. " a pytasz o podstawy ze strony PC? robiw
  • #4 08 Dec 2013 10:09
    11111olo
    Level 43  
    Topic author Helpful post? (0)
    Czego nie rozumiesz?
    AVR to nie PC!
    Na AVR potrafię zrobić klawiatury itd. na HID ale nie potrafię zrobić komunikacji opartej na HID między AVR i PC.

    Nie pytam o podstawy ale o jakieś przykłady. Znalazłem z wykorzystaniem biblioteki libusb ale nie o to mi chodzi.
    Przykład taki jest np. tu .
    Są też inne przykłady .
  • #5 08 Dec 2013 11:01
    YbKYW
    Level 9  
    Helpful post? (0)
    11111olo wrote:
    Czego nie rozumiesz?
    AVR to nie PC!
    Na AVR potrafię zrobić klawiatury itd. na HID ale nie potrafię zrobić komunikacji opartej na HID między AVR i PC.

    Nie pytam o podstawy ale o jakieś przykłady. Znalazłem z wykorzystaniem biblioteki libusb ale nie o to mi chodzi.
    Przykład taki jest np. tu .
    Są też inne przykłady .


    Ale co to znaczy Na AVR potrafię zrobić klawiatury itd. na HID ? Bo później piszesz, że jednak nie potrafisz.
  • #6 08 Dec 2013 12:08
    11111olo
    Level 43  
    Topic author Helpful post? (0)
    HID umożliwia komunikację bez dodatkowych sterowników, ale to pewnie wiesz. Klawiatura, mysz, joystick to urządzenia które przesyłają dane tylko w jedną stronę (klawiatura może w dwie) ale to są dla systemu urządzenia o "wiadomych" możliwościach i wykorzystanie ich w inny sposób jest możliwe.

    Opanowałem to dlatego że wymaga to jedynie oprogramowania mikrokontrolera.


    Czy teraz już jest wszystko jasne?

    Jak nie to dodam że HID można wykorzystać do przesyłu własnych danych i do tego dowolnych w obie strony tylko to wymaga napisania softu na PC i tylko dlatego założyłem ten temat aby ktoś mnie nakierował jak do tego podejść, podając jakieś przykłady.
  • #7 08 Dec 2013 17:49
    Marek_Skalski
    Level 31  
    Helpful post? (0)
    11111olo wrote:
    Czego nie rozumiesz?
    AVR to nie PC!
    Na AVR potrafię zrobić klawiatury itd. na HID ale nie potrafię zrobić komunikacji opartej na HID między AVR i PC.

    Nie pytam o podstawy ale o jakieś przykłady....

    Niegrzecznie, nieładnie i najwyraźniej nie wiesz o co chodzi w klasie HID.
    Do przesyłania danych znacznie lepiej używać klas MSC, CDC, Audio, itp.
    HID, to tylko 64 bajty w raportach. Dobre do zapalania ledów na klawiaturze.
    I znowu... jeżeli zrobiłeś wszystkie rodzaje urządzeń, to znasz podstawową aplikację Atmela do przesyłania danych z urządzenia HID do PC i vice versa (AVR328). W oparciu o to możesz sobie napisać dowolny program na PC, w dowolnym języku.
    Jeżeli chcesz coś więcej, to zapoznaj się z takim (pozornie prostym) urządzeniem jak 3d Connection - Space Pilot Pro, albo Space Explorer czy inny z tej rodziny. Gwarantuję, że będziesz miał zajęcia na kolejne 2 lata.
    A tak poważnie, to jeżeli chcesz łączyć funkcjonalność to zrób urządzenie kompozytowe (połącz deskryptory), np. HID_KBD + CDC + MSC. Akurat AVRy dają tutaj dużo możliwości ponieważ udostępniają max. 16 EP. Do tego nie trzeba tutków (Ctrl+C/Ctrl+V), tylko trochę wybraźni.
  • #8 08 Dec 2013 19:10
    majeranek53
    Level 23  
    Helpful post? (0)
    Witam.
    Polecam książkę: A. Daniluk "USB Praktyczne programowanie z Windows API w C++". Wyd. Helion.
    Na stronie wydawnictwa są załączone przykłady.
  • #9 08 Dec 2013 20:15
    Mat_91
    Level 25  
    Helpful post? (0)
    Nie wiem czy pomogę ale jak byś ściągnął sobie bibliotekę USB od microchipa dla dowolnego procka z USB to tam masz przykłady z wykorzystaniem HID. Działa to mniej więcej w ten sposób że microchip udostępnia gotową bibliotekę hidclass.dll na podstawie której piszesz aplikację na PC. Są tam zawarte w sumie 4 funkcje (open, read, write, close). Gotowa aplikacja też jest oraz źródła do niej. Możesz sobie podglądnąć. Kiedyś z tego korzystałem i działało to bardzo przyjemnie:)

    Czy zadziała z AVR musisz sam sprawdzić. Ale przynajmniej masz jakąś bazę :)
  • #10 08 Dec 2013 22:32
    Szymon Tarnowski
    Level 27  
    Helpful post? (0)
    Mat_91 wrote:
    Działa to mniej więcej w ten sposób że microchip udostępnia gotową bibliotekę hidclass.dll na podstawie której piszesz aplikację na PC. Są tam zawarte w sumie 4 funkcje (open, read, write, close). Gotowa aplikacja też jest oraz źródła do niej. Możesz sobie podglądnąć. Kiedyś z tego korzystałem i działało to bardzo przyjemnie:)
    Ale kolega nie chce gotowej dll'ki z resztą mu się nie dziwię, bo jest zbędna. Żeby znaleźć nazwę urządzenia wystarczy wywołać dwie funkcję WinAPI, a później tylko CreateFile, ReadFile i WriteFile.
  • #11 08 Dec 2013 22:36
    11111olo
    Level 43  
    Topic author Helpful post? (0)
    Nie wiem jak to da się zrobić. Jak bym chciał użyć gotowej biblioteki to bym potrzebował sterownik, a tego nie chcę.
    Wiem że HID nie jest demonem prędkości ale do prostych rzeczy się nadaje świetnie.
    Sprawdzanie po VID/PID i coś jeszcze jest potrzebne. Założyłem temat bo nie mogę znaleźć przykładu jak to zrobić.

    Proszę do książek mnie nie odsyłać bo jak bym chciał którąś kupić to temat tego wątku by brzmiał zupełnie inaczej.

    Przykład z gotową biblioteką z której nie chcę korzystać.
  • #12 09 Dec 2013 09:06
    majeranek53
    Level 23  
  • #13 09 Dec 2013 11:57
    11111olo
    Level 43  
    Topic author Helpful post? (0)
    Quote:
    Requirements

    Minimum supported client
    Windows 8.1
  • #14 09 Dec 2013 13:38
    Mat_91
    Level 25  
    Helpful post? (0)
    @11111olo

    Jesteś w błędzie. Użycie gotowej biblioteki nie narzuca Ci konieczności użycia dodatkowych sterowników. Hid to hid. Wkładasz wtyczkę do gniazda, sterownik klasy hid instaluje się sam o czym wiesz. Biblioteka o której mówię umożliwia Ci tylko komunikację z tym urządzeniem. Pobierz sobie przykłady od microchipa to zobaczysz jak to jest tam zrobione.
  • #15 09 Dec 2013 17:07
    slx
    Level 18  
    Helpful post? (0)
    Przecież w BootloadHID masz przykład komunikacji PC <-> AVR z wykorzystaniem HID, bez żadnych dodatkowych sterowników i bibliotek.
  • #16 09 Dec 2013 19:05
    11111olo
    Level 43  
    Topic author Helpful post? (0)
    HID AVR - Komunikacja z PC

    Quote:
    Na początek nie musi to być nic spektakularnego. Wystarczy że jak coś na pc zrobię to zaświeci się led lub zgaśnie czy też naciśnięcie przycisku od strony AVR spowoduje "coś" na PC.


    Wiem że jest ten bootloader ale to skok na głęboką wodę.
  • #17 09 Dec 2013 19:16
    Marek_Skalski
    Level 31  
    Helpful post? (0)
    No to skacz :)
    Boisz się, że się czegoś pożytecznego nauczysz?
    Rozwijaj się, nie stój w miejscu.
    Quote:

    Chcę pójść dalej i wymieniać dane z PC.
  • #18 09 Dec 2013 19:53
    11111olo
    Level 43  
    Topic author Helpful post? (0)
    Mój stopień zaawansowania w języku C określił bym raczej na "dolnej półce".
    C na AVR jest o wiele prostszy niż PC i chciałbym zacząć od najprostszych rzeczy.
    Z bootloader to na pewno na tym etapie nie dam rady :(
  • #19 09 Dec 2013 22:09
    Marek_Skalski
    Level 31  
    Helpful post? (0)
    Jeżeli chcesz pisać wszystko, ale to wszystko od podstaw w swojej aplikacji, to rzeczywiście może być problem. Ale jeżeli chcesz skorzystać z dowolnego środowiska MS Visual C++ albo Borland C++ Builder, to nagle wszystko się okazuje dość łatwe.
    W oparciu o kilka dokumentów znalezionych w sieci, nie wiedząc nic o C, napisałem swoją pierwszą aplikację do komunikacji po RS232. Aplikacja sterowała silnikiem w oparciu o slidery + odczytywała i wyświetlała na ekranie kilka parametrów typu temperatura i ciśnienie.
    W oparciu o AVR328 napisałem i rozbudowałem aplikację (kopię przykładowego programu Atmela) w Borland C++. To środowisko dzisiaj jest chyba obiektem muzealnym, ale wtedy było jedynym dla mnie dostępnym.
    A skoro swój stopień zaawansowania oceniasz na dość niski, to właśnie masz możliwość nauczenia się czegoś przydatnego. Nie czekaj, żaden dzień nie wróci.
    Powodzenia!
  • #20 10 Dec 2013 19:55
    11111olo
    Level 43  
    Topic author Helpful post? (0)
    Zamykam.
  Search 4 million + Products
Browse Products