eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaKlawiatura USB i jej obsługaKlawiatura USB i jej obsługa
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!news.task.gda.pl!news.vectranet.pl!.POSTED!not-for-mail
    From: "Akond ze skwak" <A...@s...pl>
    Newsgroups: pl.misc.elektronika
    Subject: Klawiatura USB i jej obsługa
    Date: Wed, 26 Feb 2014 23:33:05 +0100
    Organization: Vectra - http://www.vectra.pl
    Lines: 51
    Message-ID: <lelq35$ce4$1@news.vectranet.pl>
    NNTP-Posting-Host: 088156211163.radom.vectranet.pl
    Mime-Version: 1.0
    Content-Type: text/plain; format=flowed; charset="iso-8859-2"; reply-type=original
    Content-Transfer-Encoding: 8bit
    X-Trace: news.vectranet.pl 1393453989 12740 88.156.211.163 (26 Feb 2014 22:33:09 GMT)
    X-Complaints-To: u...@n...vectranet.pl
    NNTP-Posting-Date: Wed, 26 Feb 2014 22:33:09 +0000 (UTC)
    X-Priority: 3
    X-MSMail-Priority: Normal
    Importance: Normal
    X-Newsreader: Microsoft Windows Live Mail 16.4.3522.110
    X-MimeOLE: Produced By Microsoft MimeOLE V16.4.3522.110
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:660324
    [ ukryj nagłówki ]

    Jest problem ...
    Mianowicie klawiatura USB podłączona do procesora SAM3X przez port native
    ( płyta Arduino DUE).

    Wiem ... Arduino - kupa szmelcu weź się człowieku za coś innego ...

    Ale może ktoś jednak się z tym bawił.
    W bibliotekach i dostępnych przykładach do obsługi owej klawiatury
    użyta zostaje klasa HostUSB i KeyboardController w taki sposób, że w pętli
    głównej programu
    wywołuje się metodę HostUSB.Task() która odpowiada za komunikację i ruch na
    USB.

    Wszystko działa pięknie ( w przykładach) , pod warunkiem, że się za bardzo
    nie skomplikuje projektu.

    Problem polega na tym, że po podłączeniu klawiatury do układu i jej
    zidentyfikowaniu przez system
    wspomniana metoda Task() czeka na naciśniecie klawisza i blokuje proces.
    Istnieje stała czasowa TIME_LIMIT 5 sekund ... czyli co 5 sek dostaję
    informację, że nic się nie dzieje.
    Jeżeli nacisnę klawisz to oczywiście od razu jest reakcja.

    Patrząc do środka procedury widzę moment zatrzymania w pętli ograniczonej
    przez timeout 5sek
    w której jest funkcja UHD_Pipe_Is_Transfer_Complete odbierająca dane z
    klawiatury.

    Zmniejszenie limitu timeout poniżej 100 ms powoduje błąd inicjowania
    urządzenia.
    A i tak to jest jak dla mnie za duża strata czasu.

    Próbowałem metodę Task uruchamiać z przerwania albo innego wątku Shedulera
    ale nic to nie daje.
    Po prostu - gdy z klawiaturą nic się nie dzieje Task czeka 5 sekund
    obojętnie gdzie by jej nie wsadzić.

    Jedynie co mi przychodzi do głowy to rozpisanie tej klasy na drobne i
    włączenie po kawałku do pętli głównej programu.

    ... albo poszukanie sposobu aby mój program uruchamiany był z wnętrza klasy
    HostUSB ... to może być rozwiązanie .
    Coś podobnego jak USB na ATmega8.

    Pozdr.






Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: