pętla for i kolejne iteracje
-
- Posty: 9
- Rejestracja: 06 kwie 2012 16:53
- Wersja środowiska: LabVIEW 2011
pętla for i kolejne iteracje
witam,
Robię aplikacje która tworzy tablice 1D, 10-elementową, kolejne elementy tablicy wprowadzane są za pomocą kontrolki. Zrealizowane jest to w pętli for z rejestrem przesuwnym. Teraz mam opóźnienie czasowe pętli 1000ms i w tym czasie zmieniam wartość kontrolki i tablica zostaje uzupełniona danymi, ale chcę aby pętla inkrementowała się w momencie dodania kolejnego elementu do tablicy i zakończyła po osiągnięciu wartości 10. Proszę o naprowadzenie jak mogę rozwiązać ten problem ?
Robię aplikacje która tworzy tablice 1D, 10-elementową, kolejne elementy tablicy wprowadzane są za pomocą kontrolki. Zrealizowane jest to w pętli for z rejestrem przesuwnym. Teraz mam opóźnienie czasowe pętli 1000ms i w tym czasie zmieniam wartość kontrolki i tablica zostaje uzupełniona danymi, ale chcę aby pętla inkrementowała się w momencie dodania kolejnego elementu do tablicy i zakończyła po osiągnięciu wartości 10. Proszę o naprowadzenie jak mogę rozwiązać ten problem ?
pętla for i kolejne iteracje
Niekonieczne jest zastosowanie rejestru przesuwnego pętla for może samodzielnie stworzyć tablicę jako rezultat swojego działania. Załączam mój pomysł na Twój problem, czy o coś takiego chodziło? Na przyszłość załącz kod, to pomaga zrozumieć Twój problem.
- Załączniki
-
- Proponowane rozwiązanie
- Code.png (15.18 KiB) Przejrzano 11189 razy
Certified LabVIEW Associate Developer
- fajfi
- Posty: 185
- Rejestracja: 28 sty 2004 00:00
- Wersja środowiska: LabVIEW 2010
- Lokalizacja: Wrocław
Re: pętla for i kolejne iteracje
Cześć,
trochę trudno dopisać element w ciągu 1s.
Dlatego w przykładzie zwiększyłem czas do 3s.
Ale nie wyjaśniłeś co ma się dziać w momencie, gdy nie zdążysz dodać nowego elementu.
U mnie w takiej sytuacji do tablicy zostaje automatycznie dopisane "zero".
Czy o to chodziło?
Pozdrawiam
Fajfi
trochę trudno dopisać element w ciągu 1s.
Dlatego w przykładzie zwiększyłem czas do 3s.
Ale nie wyjaśniłeś co ma się dziać w momencie, gdy nie zdążysz dodać nowego elementu.
U mnie w takiej sytuacji do tablicy zostaje automatycznie dopisane "zero".
Czy o to chodziło?
Pozdrawiam
Fajfi
- Załączniki
-
- dodawanie-do-tablicy10.vi
- (14.73 KiB) Pobrany 381 razy
-
- Posty: 9
- Rejestracja: 06 kwie 2012 16:53
- Wersja środowiska: LabVIEW 2011
Re: pętla for i kolejne iteracje
Chodzi mi generalnie o to aby pętla czekała na dodanie elementu do tablicy i po dodaniu inkrementowała się.
Ostatnio zmieniony 06 kwie 2012 23:43 przez micrograff, łącznie zmieniany 1 raz.
pętla for i kolejne iteracje
Rozumiem, w takim razie widzę dwa rozwiązania:
1) oczekiwanie na przyciśnięcie przycisku, który będzie przepisywał wartość z kontrolki
2) lub można dopisywać do tablicy wartość, gdy jest inna niż poprzednio wpisana
W przeciwnym razie kolejne iteracje wpiszą tę samą wartość co chyba nie jest Twoim celem.
1) oczekiwanie na przyciśnięcie przycisku, który będzie przepisywał wartość z kontrolki
2) lub można dopisywać do tablicy wartość, gdy jest inna niż poprzednio wpisana
W przeciwnym razie kolejne iteracje wpiszą tę samą wartość co chyba nie jest Twoim celem.
Ostatnio zmieniony 06 kwie 2012 18:08 przez MicMac89, łącznie zmieniany 1 raz.
Certified LabVIEW Associate Developer
-
- Posty: 9
- Rejestracja: 06 kwie 2012 16:53
- Wersja środowiska: LabVIEW 2011
pętla for i kolejne iteracje
Dzięki za pomysły, drugie rozwiązanie chyba będzie bliższe, ponieważ w tablicy nie mogą znaleźć się dwie takie same liczby. Dołączyłem do mojego kodu bloczek search 1D array, który przeszukuje tablicę w poszukiwaniu takich samych elementów. Tylko teraz nie wiem jak połączyć to z indeksowaniem pętli?
pętla for i kolejne iteracje
Nie wiem czy interesuje Cię gotowe rozwiązanie, czy też chcesz sam rozwiązać ten problem. Możesz przykładowo sprawdzać czy liczba wystąpiła już w tablicy, jeśli tak nie to dopisujesz ją do końca a następnie sprawdzasz rozmiar tablicy za pomocą Array Size, jeśli równy 10 to kończ wykonywanie pętli. Aby dodać element do tablicy nie jest konieczna znajomość indeksu, pod który chcesz go umieścić. Wystarczy użyć Build Array, gdzie jako pierwszy argument umieścisz dotychczasową tablicę, a jako drugi nową wartość. Wówczas nowa wartość zostanie dopisana do końca tablicy.
Jeżeli chcesz korzystać z indeksowania tablicy umieść w swojej pętli kolejny rejestr przesuwny, w którym będziesz pamiętał poprzedni rozmiar tablicy.
Jeżeli chcesz korzystać z indeksowania tablicy umieść w swojej pętli kolejny rejestr przesuwny, w którym będziesz pamiętał poprzedni rozmiar tablicy.
Certified LabVIEW Associate Developer
-
- Posty: 9
- Rejestracja: 06 kwie 2012 16:53
- Wersja środowiska: LabVIEW 2011
pętla for i kolejne iteracje
Generalnie nie mogę sobie poradzić z pętlą której kolejne iteracje mają być uzależnione od wprowadzanych danych do kontrolki. Czyli wprowadzam liczbę, sprawdzam czy jest w tablicy, jeśli nie to inkrementuje pętle i wpisuje do tablicy tą wartość. Jeśli dana wartość wpisana do kontrolki jest już w tablicy - to czekam. Korzystam z funkcji search 1D array, jeśli funkcja nie znajdzie takich samych elementów wyrzuca mi wartość -1 którą chcę wykorzystać do "modułu" inkrementującego pętle, tylko za bardzo nie wiem jak to zrobić - może posiadasz jakiś przykładowy VI w którym jest podobne rozwiązanie.
pętla for i kolejne iteracje
Do zrealizowania tego zadania nie jest konieczne "zarządzanie" kolejnymi iteracjami. Chyba, że takie jest Twoje wymaganie projektowe. Wstrzymywanie wykonywania programu to nie jest zwykle najlepszy pomysł. Załączam przykładowe rozwiązanie.
- Załączniki
-
- 10 elementów.vi
- Proponowane rozwiązanie
- (10.64 KiB) Pobrany 453 razy
Certified LabVIEW Associate Developer
-
- Posty: 9
- Rejestracja: 06 kwie 2012 16:53
- Wersja środowiska: LabVIEW 2011
pętla for i kolejne iteracje
Dzięki za pomoc, o to mi właśnie chodziło. Zamykam temat.