Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[VBA 2008] Idea odczytu z portu szeregowego

EU07-210 28 Mar 2011 17:16 1107 2
  • #1 28 Mar 2011 17:16
    EU07-210
    Poziom 9  

    Witam. Jest taki problem. Robię odczyt z enkodera w mikroprocesorze używając przerwania do zliczania impulsów. Ilość zliczonych impulsów jest zapisywana w zmiennej alfa. Zmienna alfa jest przesyłana do PC przez port COM3 z prędkością 115200 bps. Dane na 100% dochodzą do portu i mogę je odczytać np. w LabVIEW. Jednakże, odczyt tych danych musi być w Visual Basic. Wartość alfa oraz jej przebieg czasowy także ma być robiony w VBA.

    W tym momencie mam problem z ideą odczytu danych z portu COM w VBA. Mam takie dwa pomysły:
    1) odczyt z COM co pewien okres próbkowania
    2) odczyt z COM tylko wtedy, gdy przyjdzie nowy pomiar

    Należy założyć, że alfa może się bardzo szybko zmieniać.

    Która z idei jest najlepsza w tym przypadku?
    Mam niewiele czasu na wykonanie zadania, a nie chciałbym wybrać złej drogi na samym początku.

    0 2
  • #2 28 Mar 2011 22:00
    Flesz
    Poziom 20  

    Czasówka odpada , bo tego nie zsynchronizujesz. Skąd będziesz wiedział czy odebrana cyfra jest pierwszą czy kolejną cyfrą liczby ?
    Wysyłaj np: cyfra, cyfra,cyfra, enter (dla liczby trzycycfrowej) a w komputerze to musisz poskładać.

    0
  • #3 29 Mar 2011 17:31
    EU07-210
    Poziom 9  

    Dzięki za szybką odpowiedź. Dzisiaj się naczytałem na różnych forach i stronach internetowych na temat różnych rozwiązań. Ostatecznie zdecydowałem się na drugą opcję z obsługą zdarzenia datareceived w VB 2008.

    Działa świetnie, tzn. odczytuje zmienną alfa z enkodera, nawet gdy zmienia się bardzo szybko. Aby, wiedzieć, że przesłana jest cała pojedyncza wartość alfa, używam instrukcji ReadLine, która czyta do końca nowej linii. Można też użyć ReadTo, która czyta string do określonego znaku, ale tego jeszcze nie próbowałem.
    Na końcu każdego odczytu jeszcze mam jakiś pojedynczy śmieć, ale to raczej nie problem. Teraz czeka mnie jeszcze wykonanie wykresu w VB 2008.

    Myślę, że pierwsza opcja z próbkowaniem też nie jest zła, ale tutaj należy pamiętać o odpowiedniej częstotliwości próbkowania, w przypadku szybkich zmian odczytywanych zmiennych (twierdzenie Kotielnikowa-Shannona).

    Podsumowując, w moim przypadku opcja z datareceived event sprawdziła się doskonale.

    0
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo