Generowanie i automatyczne zapisywanie tablic z wynikami

Sprawy związane z interfejsem użytkownika - kontrolki, wskaźniki, wyświetlacze, wykresy oraz inne zagadnienia tego typu...
marcinp
Posty: 6
Rejestracja: 17 kwie 2008 16:35
Kontakt:

Generowanie i automatyczne zapisywanie tablic z wynikami

Post autor: marcinp »

Witam chce zrealizować pewien projekt. No i oczywiście zaciąłem się w jednym miejscu. :-s
W załączonym programie próbuję osiągnąć to: Wybieram sobie wartość min i max oraz przyrost częstotliwości oraz amplitudy.
Generuje za pomocą przycisków Amplituda i Hz tablice z odpowiednimi wartościami. Po kliknięciu przycisku Save do kontrolki f [Hz] ma zostać wrzucona pierwsza wartość częstotliwości z tablicy i dla tej częstotliwości mają się kolejno zmieniać wartości amplitudy (po kolei z tablicy).
:help: I tu zaczyna się mój problem bo chcę żeby odstęp między kolejnymi
zmianami amplitudy był rzędu kilku sekund
.
Do pliku ma być zapisana tablica z tymi wartościami amplitud i losowych wartości (taki zestaw dla każdej z częstotliwości). A udało mi się jedynie osiągnąć to co widać w załączonym pliku.
Ogólnie to wiem że tu nieźle naplątałem z tymi pętlami case. Jakby ktoś znał jakieś lepsze rozwiązanie to bym się okrutnie ucieszył. [-o<
Dzięki za pomoc. Labview 8.2
Ostatnio zmieniony 14 maja 2008 18:16 przez marcinp, łącznie zmieniany 1 raz.
marcinp
Posty: 6
Rejestracja: 17 kwie 2008 16:35
Kontakt:

Re: Generowanie i automatyczne zapisywanie tablic z wynikami

Post autor: marcinp »

Witam ponownie.
Zrobiłem poprzedni program od nowa i działa.
Tylko że tak naprawdę to jest to tylko część całego programu.
Problem jest taki, że jak działa ta część programu to nie działa reszta.
Czyli potrzebny mi taki program który działa tak jak ten tylko że podczas działania Flat sequence structure reszta programu tez musi działać.

Sam sobie raczej nie poradze więc prosze mądrzejszych o pomoc.


Dzięki za pomoc.
LV 8.2
Ostatnio zmieniony 15 maja 2008 07:44 przez marcinp, łącznie zmieniany 3 razy.
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Generowanie i automatyczne zapisywanie tablic z wynikami

Post autor: Mikrobi »

Przesiadłeś się z C na LabVIEW, prawda? 8)
Postaraj się wyeliminować zmienne lokalne i prowadzić dane przewodami.
Przeglądnij przyklady i posty na forum dotyczące obslugi interfejsu uzytkownika czyli struktury while+event
Popatrz na forum i w przykladach jak wygląda maszyna stanów.
Napisz na kartce szkic algorytmu jaki ma realizować ten program.

Warto poświęcić tydzień czasu na przygotowanie się do napisania programu i pisać go nawet przez następny tydzień, niż miesiąc na uruchamianie po omacku.
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Generowanie i automatyczne zapisywanie tablic z wynikami

Post autor: jogurt_owocowy »

Mikrobi dobrze Ci radzi, przemyśl to.
A odpowiadając konkretnie na Twoje pytanie o
program który działa tak jak ten tylko że podczas działania Flat sequence structure reszta programu tez musi działać.
to zamiast jednej pętli while, użyj dwóch równoległych: w jednej umieść Case z Flat sequence, w drugiej resztę programu.
marcinp
Posty: 6
Rejestracja: 17 kwie 2008 16:35
Kontakt:

Re: Generowanie i automatyczne zapisywanie tablic z wynikami

Post autor: marcinp »

Dzięki za dobre słowo.

Przyznam się że mam zrobiony program do akwizycji danych, a jest to mój temat dyplomu. Spokojnie mógłbym go zostawić bo działa i sie podoba promotorowi, ale prawda jest taka że mi się właśnie nie podoba to co zrobiłem no i zmieniam poprawiam dodaje nowe rzeczy. I właśnie czuje że to troche jeszcze potrwa. A doczynienia miałem wcześniej najwięcej z C.
Także szukam, czytam i zrobię. Pętle rzeczywiście działają (2 while), ale wolałbym nie mieć ich za wiele bo mi komp siada na uczelni :)

Dzięki
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Generowanie i automatyczne zapisywanie tablic z wynikami

Post autor: jogurt_owocowy »

I to jest postawa godna pochwały! ;)
Co do kliku równoległych pętli while, to nie są one niczym złym, a wręcz przeciwnie. Jeśli komp siada to nie one są przyczyną.
Mało tego - zakładając, że nasz program działa podobnie zarówno upchany w jedną pętlę, jak i rozbity na kilka, można wymyślić przypadki, w których wykorzystanie zasobów komputera w tym drugim przypadku będzie lepsze.
Natomiast w Twoim programie widać kilka rzeczy, które trzeba zmienić. Przede wszystkim zmienne lokalne - źródło mnóstwa problemów. Twój program jest dobrym na to przykładem, bo ich użycie powoduje błąd, a co najmniej niejednoznaczność:
1. W pierwszej ramce Sequence zapisujesz coś do kontrolki f [Hz] 2. Nad prawym górnym Case'm formatujesz zawartość kontrolki wpisujesz do stringa f 3. W ostatniej ramce Sequence zapisujesz zawartość stringa f do pliku.
Jeżeli wartość kontrolki f [Hz] jest inna niż poprzednia to nie masz żadnej gwarancji, że nowa wartość zostanie zapisana do pliku (ja bym strzelał, że będzie to zawsze stara wartość).
Dlaczego? Dlatego, że kod Sequence i kod zapisujący częstotliwość do stringa są równoległe - nie wiesz, który kawałek wykona się najpierw.
Najgorsze jest to, że kompilator, w zależności od swojego widzimisię, raz skompiluje program w taki sposób, że wszystko będzie ok, a innym razem nie będzie działać i możesz sobie debugować do woli, a i tak nic nie znajdziesz.
Ostatnio zmieniony 15 maja 2008 11:02 przez jogurt_owocowy, łącznie zmieniany 1 raz.
marcinp
Posty: 6
Rejestracja: 17 kwie 2008 16:35
Kontakt:

Re: Generowanie i automatyczne zapisywanie tablic z wynikami

Post autor: marcinp »

Masz racje z tymi f, działało to dobrze więc nie zwróciłem uwagi.
Czyli tak było by dobrze?
Chociaż i tak chyba zmienia całość.
Ale dzięki za krytyke.
zastanawiają mnie te równoległe pętle while bo myślałem że lepiej mieć wszystko w jednej pętli.
Ostatnio zmieniony 15 maja 2008 11:24 przez marcinp, łącznie zmieniany 2 razy.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Generowanie i automatyczne zapisywanie tablic z wynikami

Post autor: jogurt_owocowy »

Czyli tak było by dobrze?
Określenie "w miarę poprawnie działa" byłoby bardziej na miejscu. Przy takim używaniu zmiennych lokalnych nie można powiedzieć "dobrze" ;]
To nie jest tak, że im więcej pętli tym lepiej, a im mniej tym gorzej. Po prostu musi ich być tyle ile potrzeba. A ile ich potrzeba, to już zależy od architektury programu. Kliknij File -> New VI -> From Template, wybierz np. Queued Message Handler. Jedna pętla obsługuje tam akcje użytkownika na panelu; druga - to co program ma robić w odpowiedzi na te akcje.
Pozdrawiam
marcinp
Posty: 6
Rejestracja: 17 kwie 2008 16:35
Kontakt:

Generowanie i automatyczne zapisywanie tablic z wynikami

Post autor: marcinp »

Dzięki za info.
A teraz już czasu nie zabieram z pierdołami :)
ODPOWIEDZ