Struktura aplikacji

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
Gość
Posty: 656
Rejestracja: 10 lis 2003 00:00

Struktura aplikacji

Post autor: Gość »

Witam,

Zastanawiam się nad sposobem konstrukcji serwera pomiarowego. Chciałem się dowiedzieć jak najlepiej rozwiązac sterowanie takiego serwera, chodzi mi o to, aby podczas pracy reagował on na przyciski zakończ, resetuj i żeby generalnie wszystko było w nim "poukładane". Serwer powinien chodzić ciągle i co pewien czas czytać w dołączonej bazie danych w celu pobrania ewentualnych żądań pomiaru, wykonywać te pomiary, następnie zwracać wyniki do bazy i ponownie czekać zadany czas na przeszukanie bazy w celu pobrania żądań pomiaru. Stworzyłem już SubVi odpowiedzialne za logowanie do bazy danych, czytanie żądań pomiaru do kolejki, a także część mierzącą i zwracającą wynik, teraz potrzebuję jakoś logicznie to połączyć. Chciałem uniknąć sytuacji gdy urządzenia (multimetr lub generator) podczas pomiaru zawieszają się i nie mogę zatrzymać ew. zresetować mojego serwera. Może ktoś ma jakąś przykładową aplikację działającą w podobny sposób lub mógłby udzielić mi porad jak się do tego zabrać. Korzystam z LV7.1 więc jest dość spory wachlarz możliwości :)
Z góry dzięki za pomoc.

Pozdrawiam,
Grzesiek
Gość
Posty: 656
Rejestracja: 10 lis 2003 00:00

Re: Struktura aplikacji

Post autor: Gość »

Widzę, że ciężko będzie mi uzyskać odpowiedź na to, być może trochę rozlazłe, pytanie. Zacząłem coś tworzyć i ciekawi mnie czy istnieje w LV możliwość bezwzględnego przerwania działania pętli, np. w pętli do-while coś się tam robi, ja klikam przerwij poza tą pętlą i program automatycznie ją kończy i przechodzi do wykonania tego co jest po pętli. Zastosowanie warunku końca beezpośrednio w pętli nie zadziała, gdyż wykonywane tu są pomiary na urządzeniach z ustawionymi Timeoutami, a ja nie chciałbym czekać aż taki Timeout się skończy. Interesuje mnie raczej coś w stylu równolegle wykonywanych wątków. Może jestem już zmęczony i wymyślam dziwne rzeczy... jednak bardzo interesuje mnie odpowiedź na to pytanie.
Z góry dzięki.

Pozdrawiam,
Grzesiek
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Re: Struktura aplikacji

Post autor: Mikrobi »

grzesiek pisze: chodzi mi o to, aby podczas pracy reagował on na przyciski zakończ, resetuj
Jedna z pętli programu - petla while + struktura event - obsługa zdarzeń ValueChange - obsługa interfejsu użytkownika
(+ równolegle pętla akwizycji danych)
grzesiek pisze: żeby generalnie wszystko było w nim "poukładane". Serwer powinien chodzić ciągle i co pewien czas czytać w dołączonej bazie danych w celu pobrania ewentualnych żądań pomiaru, wykonywać te pomiary, następnie zwracać wyniki do bazy i ponownie czekać zadany czas na przeszukanie bazy w celu pobrania żądań pomiaru.
Wygląda to na Maszynę Stanów (State Machine)....
grzesiek pisze:Stworzyłem już SubVi odpowiedzialne za logowanie do bazy danych, czytanie żądań pomiaru do kolejki, a także część mierzącą i zwracającą wynik, teraz potrzebuję jakoś logicznie to połączyć. Chciałem uniknąć sytuacji gdy urządzenia (multimetr lub generator) podczas pomiaru zawieszają się i nie mogę zatrzymać ew. zresetować mojego serwera.
Sugeruję wykorzystać parametr Timeout przy funkcjach obslugujących odczyt (VISA Read) komunikacji ustawiony na jakiś rozsądny przedzial czasu. Jeśli upłynie czas i nie otrzymasz odpowiedzi z urządzenia komunikacja zwraca bład, który mozna odowiednio obsłużyć.
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Re: Struktura aplikacji

Post autor: Mikrobi »

grzesiek pisze:ciekawi mnie czy istnieje w LV możliwość bezwzględnego przerwania działania pętli, np. w pętli do-while coś się tam robi, ja klikam przerwij poza tą pętlą i program automatycznie ją kończy i przechodzi do wykonania tego co jest po pętli.


Nie.
Najpierw wykona się pełna iteracja (wszystkie operacje wewnątrz pętli while) - potem sprawdzenie warunku zatrzymania pętli.
grzesiek pisze:Zastosowanie warunku końca beezpośrednio w pętli nie zadziała, gdyż wykonywane tu są pomiary na urządzeniach z ustawionymi Timeoutami, a ja nie chciałbym czekać aż taki Timeout się skończy.


Tutaj cię nie rozumiem - po co zatem ten parametr?
grzesiek pisze:Interesuje mnie raczej coś w stylu równolegle wykonywanych wątków.


Równoległe pętle while - sugeruję poszukać w helpie lub na sieci Applications Patterns - Producent - Consumer
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
ODPOWIEDZ