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.

C++ Builder - wykres z danych odebranych przez RS232

MES Mariusz 14 Mar 2007 17:44 6018 9
  • #1 14 Mar 2007 17:44
    MES Mariusz
    Poziom 36  

    Załóżmy, że jestem laikiem, i nie programowałem do tej pory w C++ Builder.

    Pewnego dnia otrzymałem na uczelni zadanie do wykonania - aplikację, w tym właśnie środowisku programistycznym, która zbiera z portu szeregowego RS232 dane liczbowe reprezentujące wartości zmierzonych napięć i ma na ich podstawie wyrysować elegancki wykres napięcia w czasie.

    Żeby nie było tak prosto, na port RS232 przesyłane są dane z czterech linii pomiarowych i muszą zostać utworzone cztery równoległe wykresy. Urządzenie podłączone do portu RS232 przesyła w równych odstępach czasu kolejne wartości zmierzonych napięć:

    1. napięcie na 1 kanale w czasie t1
    2. napięcie na 2 kanale w czasie t1
    3. napięcie na 3 kanale w czasie t1
    4. napięcie na 4 kanale w czasie t1
    5. napięcie na 1 kanale w czasie t2
    6. napięcie na 2 kanale w czasie t2
    n. ...

    Zastanawiam się jak powinienem zacząć, mając na uwadze swoje marne doświadczenie z C++ Builderem, zwłaszcza w zakresie pobierania danych z portu RS232, a tym bardziej wizualizację danych w postaci wykresu.

    Czy są na forum dobre dusze, którym ta tematyka nie sprawia problemu, i które zechciałyby wyciągnąć pomocną dłoń?

    0 9
  • #2 14 Mar 2007 23:07
    MirekCz
    Poziom 35  

    Port rs232 w C++ był juz opisany kilkukrotnie, kod jest prosty jak drut - wystarczy poszukać.

    W zasadzie ogranicza się to do zczytywania danych z portu tak długo, aż nie natrafimy na jakiś znak szczególny (np znak końca linii - zależy co wysyła ten moduł od mierzenia napięcia) a następnie analizujemy te dane (np za pomocą funkcji sscanf).
    Całą operację wykonywać z pomocą timera (settimer), który jest wywoływany np. co 100ms

    Co do wykresu to albo możesz użyć jakąś gotową kontrolkę (osobiście żadnej nie znam -> google), albo sam coś narysować (tutoriali na temat grafiki w okienku jest od groma w necie)
    Jak nauczysz się rysować linie/zmieniać kolory/wypełniać tło to po prostu napisz tylko program, który będzie wszystkie dane z tablicy rysował na ekranie + jakaś oś czasu i wartości V i masz wszystko gotowe.

    0
  • #3 15 Mar 2007 16:30
    MES Mariusz
    Poziom 36  

    MirekCz napisał:
    W zasadzie ogranicza się to do zczytywania danych z portu tak długo, aż nie natrafimy na jakiś znak szczególny (np znak końca linii - zależy co wysyła ten moduł od mierzenia napięcia) a następnie analizujemy te dane (np za pomocą funkcji sscanf).
    Całą operację wykonywać z pomocą timera (settimer), który jest wywoływany np. co 100ms

    Generalnie ten moduł również robię samodzielnie, także w sumie, to ode mnie zależy co on będzie wysyłał. Rolą modułu jest precyzyjne odmierzanie czasu i pobieranie próbek, a PC ma tylko je odebrać i poskładać z tego wykres (wykresy).

    0
  • #4 16 Mar 2007 02:03
    KowalD
    Poziom 17  

    MirekCz napisał:

    Co do wykresu to albo możesz użyć jakąś gotową kontrolkę (osobiście żadnej nie znam -> google), albo sam coś narysować (tutoriali na temat grafiki w okienku jest od groma w necie)

    zdecydowanie polecam TeeCharta ( http://www.teechart.com ), musisz sie zarejestrowac, jest spolszczenie, bardzo prosty w uzyciu, specjalnie zaprojektowany do rysowania wszelkich wykresow...

    0
  • #5 16 Mar 2007 12:11
    MES Mariusz
    Poziom 36  

    Tylko, że z tego co widzę, to jest komponent (?) dla jawy nie samego C++ Buildera, no i jest komercyjny (ewentualnie wersja ewaluacyjna jest też do pobrania).

    0
  • Pomocny post
    #6 17 Mar 2007 16:14
    Anonymous
    Użytkownik usunął konto  
  • #7 19 Mar 2007 09:49
    Fyszo
    Spec od GSM

    Wystarczą 4 panele. I na każdym berpośrednio na formie rysowac piksele wykresu. Proste jak drut bez zadnych komponentów utrudniających projekt.

    0
  • #8 19 Mar 2007 11:14
    Anonymous
    Użytkownik usunął konto  
  • #9 19 Mar 2007 16:37
    Fyszo
    Spec od GSM

    Jasne. I punkt (0,0) wyznaczasz sobie jako baze np. left 100 i bottom 200 i według tego rysujesz piksele (np 100+x, 200+y).

    0
  • #10 19 Mar 2007 16:40
    Anonymous
    Użytkownik usunął konto