"End of file encountered" w Event driven state machine.

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
Przemko96
Posty: 10
Rejestracja: 13 wrz 2018 17:53
Wersja środowiska: LabVIEW 2017

"End of file encountered" w Event driven state machine.

Post autor: Przemko96 »

Witam,
z góry przepraszam, jeśli temat jest w złym dziale, ale jestem zarówno początkującym użytkownikiem Labview, jak i tego forum.
Muszę wykonać aplikację diagnostyczną, która będzie odczytywała sygnał prądu fazowego z pliku i wykonywała jego analizę FFT.
Aby aplikacja miała ręce i nogi, skorzystałem ze struktur case oraz event i pojawił się problem, mianowicie po uruchomieniu programu, przejściu w zdarzenie "idle" wczytuje plik, a kolejno z sygnału robię analizę FFT. Problem jest taki, że gdy z Eventu "Praca", chce nadal w nim "być", czyli daje enum "Praca", to wyskakuje błąd "End of file encountered", bo plik próbuje wczytać się drugi raz. Z kolei jeśli z Eventu "Praca", przechodzę znów do "Idle", to nie mogę już wykonywać takich operacji jak zmiana skali decybelowej, okna itp, ponieważ nie ma tego w tym evencie, tylko w evencie "Praca".
W załączniku mój VI.
Załączniki
dsgsgsdg.vi
(809.35 KiB) Pobrany 439 razy
Awatar użytkownika
dajpanspokój
Posty: 145
Rejestracja: 05 lis 2015 08:15
Wersja środowiska: LabVIEW 2016

Re: "End of file encountered" w Event driven state machine.

Post autor: dajpanspokój »

Nie wiem czy to odpowie na twoj problem, ale moglbys dodac nowy case pt otwarcie pliku. Z idle->otwarcie pliku->praca<->idle->zamkniecie pliku->zamkniecie programu.
Obrazek
Przemko96
Posty: 10
Rejestracja: 13 wrz 2018 17:53
Wersja środowiska: LabVIEW 2017

Re: "End of file encountered" w Event driven state machine.

Post autor: Przemko96 »

Własnie taki miałem zamysł, tylko jak z eventu "odczyt" przesłać potem do eventu "Praca" sygnał do analizy FFT?
Awatar użytkownika
micard
Posty: 207
Rejestracja: 30 wrz 2011 11:28
Wersja środowiska: LabVIEW 2017
Kontakt:

Re: "End of file encountered" w Event driven state machine.

Post autor: micard »

- rejestr przesuwny "shift register"
- FGV (functional global variable)
- a żeby się za bardzo nie "pałować" teraz ani w przyszłości proponuję zajrzeć na t stronę i poczytac o JKI State Machines - bardzo fajna zabawka
https://blog.jki.net/products/state-mac ... pen-source
Przemko96
Posty: 10
Rejestracja: 13 wrz 2018 17:53
Wersja środowiska: LabVIEW 2017

Re: "End of file encountered" w Event driven state machine.

Post autor: Przemko96 »

Jeśli chodzi o Shift register, to w jaki sposób można przesłać przez niego dane w jednym case structure, ale różnymi "stanami"? Bo w ten sposób nie mogę tego wykorzystać w stanie przykładowo "stop".
Za pozostałe pomysły również dziękuje!
Załączniki
Bez tytułu.jpg
Awatar użytkownika
micard
Posty: 207
Rejestracja: 30 wrz 2011 11:28
Wersja środowiska: LabVIEW 2017
Kontakt:

Re: "End of file encountered" w Event driven state machine.

Post autor: micard »

możesz zapisać vi w wersji 2017?
Przemko96
Posty: 10
Rejestracja: 13 wrz 2018 17:53
Wersja środowiska: LabVIEW 2017

Re: "End of file encountered" w Event driven state machine.

Post autor: Przemko96 »

Z przyjemnością!
Załączniki
dsgsgsdg.vi
(2.43 MiB) Pobrany 420 razy
Przemko96
Posty: 10
Rejestracja: 13 wrz 2018 17:53
Wersja środowiska: LabVIEW 2017

Re: "End of file encountered" w Event driven state machine.

Post autor: Przemko96 »

Podbijam pytanie. Jestem w stanie się odwdzięczyć - bardzo mi to potrzebne.
Awatar użytkownika
micard
Posty: 207
Rejestracja: 30 wrz 2011 11:28
Wersja środowiska: LabVIEW 2017
Kontakt:

Re: "End of file encountered" w Event driven state machine.

Post autor: micard »

Mam dwie wiadomości - standardowo jedna dobra i jedna zła:

Zła - LabVIEW jest totalnie tragiczne jeśli chodzi o obsługę Unicode i na 95% popsułem Ci polskie znaki w aplikacji ;p
Dobra - w załczniku jest delikatnie przerobiony Twój program - ze stanu praca (w którym odczytuje plik) program przechodzi do stanu "odczyt" w którym następuje analiza FFT. Ten stans ie zapętla aż do zamknięcia programu.
To rozwizanie nie jest idealne, ale "zadziała". Kiulka rzeczy nad którymi mozna się pochylić:

-w tej chwili analiza wykonuje się w "event'" Timeout - co 25 ms - troche dużo, skoto pewnie obchodzi Cię to tylko po zmianie parametrów - spróbuj dodaś event'a wyzwalanego jesli którykolwiek z kontrolek parametrów jest zmieniony i przeładuj wykresy tylko wtedy.

- masz powtórzony wykres FFT na kazdej zakładce - może warto przemysleć nieco inaczej układ GUI, tak, żeby nie było potrzeby mienia tylu osobnych wykresów? Sprawdź subpanel lub sterowanie property node'm "visible".

- poczytaj o "event case" i o tym jak działa "timeout". Zwróć uwagę, że w Twoim programie w stanie Idle powtarze się on co 50 a nie co 25ms.
Załączniki
dsgsgsdg (1).vi
(817.15 KiB) Pobrany 422 razy
Przemko96
Posty: 10
Rejestracja: 13 wrz 2018 17:53
Wersja środowiska: LabVIEW 2017

Re: "End of file encountered" w Event driven state machine.

Post autor: Przemko96 »

Dziękuje bardzo! o to mi chodziło :). Do wskazówek na pewno się zastosuje!
ODPOWIEDZ