Generowanie i automatyczne zapisywanie tablic z wynikami
Generowanie i automatyczne zapisywanie tablic z wynikami
Witam chce zrealizować pewien projekt. No i oczywiście zaciąłem się w jednym miejscu.
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
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.
Re: Generowanie i automatyczne zapisywanie tablic z wynikami
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
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.
Generowanie i automatyczne zapisywanie tablic z wynikami
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.
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.
- 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
Mikrobi dobrze Ci radzi, przemyśl to.
A odpowiadając konkretnie na Twoje pytanie o
A odpowiadając konkretnie na Twoje pytanie o
to zamiast jednej pętli while, użyj dwóch równoległych: w jednej umieść Case z Flat sequence, w drugiej resztę programu.program który działa tak jak ten tylko że podczas działania Flat sequence structure reszta programu tez musi działać.
Re: Generowanie i automatyczne zapisywanie tablic z wynikami
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
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
- 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
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.
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.
Re: Generowanie i automatyczne zapisywanie tablic z wynikami
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.
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.
- 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
Określenie "w miarę poprawnie działa" byłoby bardziej na miejscu. Przy takim używaniu zmiennych lokalnych nie można powiedzieć "dobrze" ;]Czyli tak było by 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
Generowanie i automatyczne zapisywanie tablic z wynikami
Dzięki za info.
A teraz już czasu nie zabieram z pierdołami
A teraz już czasu nie zabieram z pierdołami