logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

XMEGA256A3U - Jak ustawić timeout dla funkcji scanf przy komunikacji UART?

lukasz94w 28 Lip 2016 16:11 1215 7
REKLAMA
  • #1 15835128
    lukasz94w
    Poziom 7  
    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
  • REKLAMA
  • Pomocny post
    #2 15835178
    JacekCz
    Poziom 42  
    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.
  • REKLAMA
  • #3 15835196
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #4 15835297
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #5 15835319
    JacekCz
    Poziom 42  
    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.
  • #6 15835329
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #7 15862401
    lukasz94w
    Poziom 7  
    Dziekuje wszystkim za odpowiedzi, przepraszam ze tak pozno ale juz poradzilem sobie z problemem. Pozdrawiam
  • #8 15863038
    JacekCz
    Poziom 42  
    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ś.
REKLAMA