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.

Atmega8[C]+rx433+tx433 - przesyłanie string'a o określonym rozmiarze

Hellsmess 22 Gru 2012 01:39 1143 3
  • #1 22 Gru 2012 01:39
    Hellsmess
    Poziom 8  

    Dzień dobry!


    Mam taki kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod



    Pięknie realizuje on transmisje jednego bajtu, ale ja potrzebuje przesyłać string o długości ośmiu bajtów albo zmienna double. Niestety nie wiem jak się za to zabrać. Proszę o jakiś trop. :cry:

    0 3
  • #2 22 Gru 2012 03:43
    michal.bedzin
    Poziom 15  

    A nie wystarczy po prostu pętla for?

    0
  • #3 22 Gru 2012 13:39
    Hellsmess
    Poziom 8  

    pewnie wystarczy, tylko że nie wiem jak to później zbierać, to znaczy jak z pojedyńczych znaków które dotrą zrobić string.

    0
  • Pomocny post
    #4 22 Gru 2012 14:12
    piotrva
    Moderator Mikrokontrolery

    String to znaki ASCII, więc ustawiasz sobie 2 znaki (2 wartości bajtu) spoza używanego obszaru ASCII i traktujesz je jako stop i start.
    Algorytm wygląda tak:
    1. Czekam na bajt start (lub wykrywam jego nadejście w odpowiednim przerwaniu)
    2. Otrzymałem bajt start - zaczynam odbiór
    3. powtarzam w pętli (dopóki nie otrzymam bajta) stop:
    a) odbierz znak i jeśli to stop to przerwij pętlę.
    b) doklej do stringa (string to tablica bajtów, więc "doklejanie" jest banalne)
    c) jeśli string jest za długi (nie mieści się w przeznaczonym do tego miejscu pamięci) to wyrzucamy jakiś kod błędu.
    4. doklej do stringa znak 0 (koniec stringa wg. standardu)
    5. wystaw dla programu głównego flagę, że dane są gotowe do odbioru
    6. Oczekuj na skasowanie flagi, aby kontynuować odbiór (lub ewentualnie można zastosować bufor kołowy zamiast blokowania odbioru - w zależności jak często dane będą dochodzić i jak szybko będą przetwarzane)

    0