pętla for i kolejne iteracje

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
micrograff
Posty: 9
Rejestracja: 06 kwie 2012 16:53
Wersja środowiska: LabVIEW 2011

pętla for i kolejne iteracje

Post autor: micrograff »

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 ?
MicMac89
Posty: 122
Rejestracja: 05 wrz 2011 20:40
Wersja środowiska: LabVIEW 2011

pętla for i kolejne iteracje

Post autor: MicMac89 »

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
Proponowane rozwiązanie
Code.png (15.18 KiB) Przejrzano 11189 razy
Certified LabVIEW Associate Developer
Awatar użytkownika
fajfi
Posty: 185
Rejestracja: 28 sty 2004 00:00
Wersja środowiska: LabVIEW 2010
Lokalizacja: Wrocław

Re: pętla for i kolejne iteracje

Post autor: fajfi »

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
Załączniki
dodawanie-do-tablicy10.vi
(14.73 KiB) Pobrany 381 razy
micrograff
Posty: 9
Rejestracja: 06 kwie 2012 16:53
Wersja środowiska: LabVIEW 2011

Re: pętla for i kolejne iteracje

Post autor: micrograff »

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.
MicMac89
Posty: 122
Rejestracja: 05 wrz 2011 20:40
Wersja środowiska: LabVIEW 2011

pętla for i kolejne iteracje

Post autor: MicMac89 »

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.
Ostatnio zmieniony 06 kwie 2012 18:08 przez MicMac89, łącznie zmieniany 1 raz.
Certified LabVIEW Associate Developer
micrograff
Posty: 9
Rejestracja: 06 kwie 2012 16:53
Wersja środowiska: LabVIEW 2011

pętla for i kolejne iteracje

Post autor: micrograff »

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?
MicMac89
Posty: 122
Rejestracja: 05 wrz 2011 20:40
Wersja środowiska: LabVIEW 2011

pętla for i kolejne iteracje

Post autor: MicMac89 »

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.
Certified LabVIEW Associate Developer
micrograff
Posty: 9
Rejestracja: 06 kwie 2012 16:53
Wersja środowiska: LabVIEW 2011

pętla for i kolejne iteracje

Post autor: micrograff »

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.
MicMac89
Posty: 122
Rejestracja: 05 wrz 2011 20:40
Wersja środowiska: LabVIEW 2011

pętla for i kolejne iteracje

Post autor: MicMac89 »

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
micrograff
Posty: 9
Rejestracja: 06 kwie 2012 16:53
Wersja środowiska: LabVIEW 2011

pętla for i kolejne iteracje

Post autor: micrograff »

Dzięki za pomoc, o to mi właśnie chodziło. Zamykam temat.
ODPOWIEDZ