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

C AVR - Jak pobrać i przekonwertować napis z RS232 na liczby?

asdf 15 Lip 2013 20:24 1824 3
REKLAMA
  • #1 12525903
    asdf
    Poziom 13  
    Witam wszystkich mam następujący problem, otóż chciał bym stworzyć funkcję która pobiera z portu rs232 cały napis, który następnie mógł bym przekonwertować do postaci integer, czy double lub inne zmiennej liczbowej.
    Próbowałem to zrobić w oparciu o własną funkcje uart_get_string ale funkcja pobiera tylko jeden znak. Powyższe potrzebne mi jest do np. do pobrania danych z RS w celu ustawienia zegar RTC lub konfiguracji ustawień (z RS). Poniżej kod pliku rs23.c,

    Ps. Jestem początkujący w zagadnieniach mikrokontrolerów i C dlatego proszę o wyrozumiałość. Na pewno błędy będą więc dlatego pytam mądrzejszych.
    Ps2. Kod w większości oparty jest na książce mikrokontrolery AVR p. Kardaśa

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 12527470
    mi14chal
    Poziom 28  
    Tylko, że funkcja uart_get_string() pobiera string, a nie jeden znak, ALE pod warunkiem, że po pierwszym znaku nie ma nulla, albo nowej linii itp jak to masz w warunku while. Pewnie z komputera wysyłasz jeden znak, a nie jakiś string i tu leży pewnie problem.
  • REKLAMA
  • #3 12533276
    asdf
    Poziom 13  
    Chciał bym, aby funkcja mogła pobierać znak po znaku i tworzyć stringa ale w przerwaniu, którego mogę później przekonwertować. Przepraszam że tego nie dopisałem. Owszem funkcja działa jeśli jest w pętli while(1).
  • #4 12533699
    BlueDraco
    Specjalista - Mikrokontrolery
    Twoja funkcja get_string zapisuje łańcuch do bufora, który przestaje istnieć z chwilą zakończenia funkcji i zwraca pierwszy znak tego łańcucha. Z tego, co piszesz, działa ona całkiem nieźle.
    Jeśli potrzebujesz całego łańcucha - zadeklaruj bufor poza funkcją.

    Usuń też obsługę przełączania kierunku nadajnika RS486, którego nie używasz, no i oczywiście nie odblokowuj przerwania TXC, którego nie potrzebujesz.

    Oryginalną wersję kodu z sygnaturą jego prawdziwego autora znajdziesz tu:
    http://homepage.hispeed.ch/peterfleury/uartlibrary.zip

    Kod jest na licencji GPL, więc usuwanie sygnatury nie jest zgodne z prawem.
REKLAMA