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

XMEGA256A3U - Timeout do funkcji scanf

lukasz94w 28 Lip 2016 16:11 978 7
  • #1 28 Lip 2016 16:11
    lukasz94w
    Poziom 4  

    Witam,
    piszę program na moją xmege i poszukuję rozwiązania następującego problemu. Operuję na strumieniach (komunikacja za pomocą UART'u) i mam za zadanie: wczytać jakiś ciąg (nieokreślonych) znaków wpisywanych przykładowo w terminalu na PC, gdy po jakimś czasie nic nie zostanie wpisane program wyświetla komunikat o upływie wyznaczonego czasu i powraca do stanu początkowego. Używałem funkcji scanf, jednak cały czas program "czeka" na wpisanie czegokolwiek i nie pozwala mi na zrealizowanie założonego celu. Czy ktoś z forumowiczów zna sposób na rozwiązanie tego problemu? Pozdrawiam

    0 7
  • Pomocny post
    #2 28 Lip 2016 16:37
    JacekCz
    Poziom 36  

    wczytać niskopoziomowo.
    Nie mam pojęcia czego i jak używasz (kawałek kodu???), więc nie powiem dokładniej.
    Żadna funkcja standardowa operująca na poziomie FILE nie ma obsługi timeoutu.

    Liczne użycie scanf jakie można znaleźć w necie, rzadko są sensowne. scanf pokazuje możliwości przy parsowaniu, większej ilości zmiennych jednocześnie wczytywanych itd... W większości popularnych fragmentów jest zbędny (również niepotrzebnie kosztowny) i w pełni do zastąpienia.

    0
  • #3 28 Lip 2016 16:45
    2749043
    Użytkownik usunął konto  
  • Pomocny post
    #4 28 Lip 2016 17:28
    2675900
    Użytkownik usunął konto  
  • #5 28 Lip 2016 17:34
    JacekCz
    Poziom 36  

    Piotrus_999 napisał:

    Musisz czytać własnymi funkcjami uarta i pisac do bufora - kiedy bufor jest pełny ... to wtedy wywołujesz sscanf.


    Jak ja czytam zagadnienie, nie wynika że analiza/konwersja tego bufora jest w ogóle potrzebna "wczytać jakiś ciąg (nieokreślonych) znaków".
    Przyjęło się używac scanf'a ale nie zawsze potrzebnie. Ciąg dowolnych znaków w "klasycznym C" pobiera się np gets i kilkoma innym do wyboru.

    0
  • #6 28 Lip 2016 17:39
    2675900
    Użytkownik usunął konto  
  • #7 11 Sie 2016 13:08
    lukasz94w
    Poziom 4  

    Dziekuje wszystkim za odpowiedzi, przepraszam ze tak pozno ale juz poradzilem sobie z problemem. Pozdrawiam

    0
  • #8 11 Sie 2016 18:07
    JacekCz
    Poziom 36  

    lukasz94w napisał:
    Dziekuje wszystkim za odpowiedzi, przepraszam ze tak pozno ale juz poradzilem sobie z problemem. Pozdrawiam


    zasadą elektrody, wspartą regulaminem, jest krótkie podanie "jak rozwiązałem problem". jest jakaś wdzięczność dla ludzi którzy (próbowali) pomóc. Oczywiście "dla potomnych" szukających tego samego problemu kiedyś.

    0