Witam.
Napisałem program w którym odczytuję dane z zewnętrznego rejestratora.
Dane przesyłane są z prędkością 115200 bps.
Podczas odczytu danych z rejestratora zauważyłem że visa read ma problem z płynnością tzn odbiera dane z bufora po czym po ok 1s jakby się zatrzymuje na ułamek sekundy, w tym czasie bufor się zdąży napełnić sporą ilością danych(kilka kilo B), visa read znowu zaczyna odbierać i znowu się zatrzymuje.
Próbując znaleźć problem zacząłem wyrzucać wszystko z pętli sądząc że znajdę przyczynę, ale niestety w pętli zostało już praktycznie tylko visa read.
Czy możecie mi podpowiedzieć gdzie szukać przyczyny.
Docelowo w pętli wykonuję jeszcze obliczenia i wyświetlanie danych a to powoduje że podczas przesyłania strumienia bufor odbiorczy się znacznie napełnia i powoduje opóźnienia.
Pozdrawiam
Visa read brak płynności odczytu
Visa read brak płynności odczytu
- Załączniki
-
- odczyt danych.JPG (30.9 KiB) Przejrzano 4898 razy
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Visa read brak płynności odczytu
- Jaki bufor się zapełnia? Skąd to wiesz?
- Ile tych danych jest? Jak często powinieneś je dostawać? Dlaczego czytasz w pętli po jednym bajcie 52 razy zamiast po prostu odczytać 52 bajty?
- Oddziel przetwarzanie danych od komunikacji (architektura producent-konsument).
- Pokaż resztę tego kodu - inicjalizację VISA.
- Jeśli pracujesz na Windowsie, to pamiętaj, że to nie jest system czasu rzeczywistego i robi jeszcze dużo innych rzeczy w tle, które mogą przycinać twój program.
- Ile tych danych jest? Jak często powinieneś je dostawać? Dlaczego czytasz w pętli po jednym bajcie 52 razy zamiast po prostu odczytać 52 bajty?
- Oddziel przetwarzanie danych od komunikacji (architektura producent-konsument).
- Pokaż resztę tego kodu - inicjalizację VISA.
- Jeśli pracujesz na Windowsie, to pamiętaj, że to nie jest system czasu rzeczywistego i robi jeszcze dużo innych rzeczy w tle, które mogą przycinać twój program.
Re: Visa read brak płynności odczytu
Urządzenie to rejestrator parametrów i podczas normalnej pracy dane zapisuje do pamięci flash.
Na żądanie dane te są przesyłane do komputera. Może być ich nawet do 1MB.
Bufor odbiorczy się nie zapełnia tylko napełnia, podgląd mam na bieżąco w programie i właśnie na tej podstawie stwierdziłem że bufor odbiorczy napełnia się w sposób oscylacyjny.
Poniżej zrzut części inicjalizacyjnej powiązany z automatycznym wyszukiwaniem portu.
Jeżeli chodzi o uwagi związane z kodem to będę się poprawiał na bieżąco ponieważ nie używam LV zbyt często.
W jaki sposób oddzielić przetwarzanie danych od komunikacji? O co chodzi w architekturze producent-konsument?
Na żądanie dane te są przesyłane do komputera. Może być ich nawet do 1MB.
Bufor odbiorczy się nie zapełnia tylko napełnia, podgląd mam na bieżąco w programie i właśnie na tej podstawie stwierdziłem że bufor odbiorczy napełnia się w sposób oscylacyjny.
Poniżej zrzut części inicjalizacyjnej powiązany z automatycznym wyszukiwaniem portu.
Jeżeli chodzi o uwagi związane z kodem to będę się poprawiał na bieżąco ponieważ nie używam LV zbyt często.
W jaki sposób oddzielić przetwarzanie danych od komunikacji? O co chodzi w architekturze producent-konsument?