Strona 1 z 1
string do wyboru urzytkownika
: 24 maja 2005 10:29
autor: progor
Witam. Myślałem, że wiem jak to zrobić, ale jak otworzyłem VI to zgłupiałem. W while loop (aż do potwierdzenia przez użytkownika) byłby control string - ale z kilkoma możliwymi wartościami słownymi. W zależności od wyboru program idzie do odpowiedniej części. Nie wiem jak ograniczyć control stringa do kilku zadanych wartości. Obchodząc problem mógłbym przypisać stringa do danego numeric control (i np ograniczyć go do 4) ale czy i jak zrobić to na string control?
Re: string do wyboru urzytkownika
: 24 maja 2005 11:17
autor: Mikrobi
progor pisze:Witam. Myślałem, że wiem jak to zrobić, ale jak otworzyłem VI to zgłupiałem. W while loop (aż do potwierdzenia przez użytkownika) byłby control string - ale z kilkoma możliwymi wartościami słownymi. W zależności od wyboru program idzie do odpowiedniej części. Nie wiem jak ograniczyć control stringa do kilku zadanych wartości. Obchodząc problem mógłbym przypisać stringa do danego numeric control (i np ograniczyć go do 4) ale czy i jak zrobić to na string control?
Przypuszczam że chodzi o maszynę stanów - tak się nazywa struktura programu tego typu.
Element o którym wspominasz to nie tyle
string co
Enum.
Jak widać taka Maszyna opiera się o: - element
enum z zapisanymi stanami, które przyjmować może aplikacja - jest on identyczny w każdym miejscu maszyny stanów (to kopia tego samego elementu) -
pętle while i
Shift Register, do którego podłaczony jest z zewnątrz
pierwsza kopia elementu enum - strukturę
Case, w której kolejnych ramkach zawarte są diagramy poszczególnych stanów np: Po inicjalizacji przedstawionej powyżej aplikacji, wchodzi ona jak widać do stanu
Akcja 1
w wyniku pracy diagramu (np. tak jak tutaj może to być wynik logiczny TRUE/FALSE) aplikacja może przejśc do stanu
Akcja 2:
lub do stanu STOP kończącego pracę aplikacji.
To oczywiście najbardziej skrótowa wersja opisu maszyny stanów. W razie dalszych pytań służę pomocą.
Re: string do wyboru urzytkownika
: 24 maja 2005 12:00
autor: progor
o to właśnie mi chodziło. dzięki wielkie.
Re: string do wyboru urzytkownika
: 16 sie 2006 11:23
autor: piotrp
a jak ma wygląd maszyna stanów na "event structure"??
Dany case wykonuje mi się po wcisnięciu odpowiedniego przycisku odpowiadającemu temu cas-owi. Ale nie wiem jak ustawic koniec . Powiedzmy ze mam akcje, zapalam sobie 5 diod, ktore obrazują kroki. W jaki sposób przy uzyciu "event" zapalić pierwsza diodę która ma się zaświecic zaraz po uruchomieniu programu?? Podobnie sytualcja ma sie na koncu, daje wyjscie wyskakuje okno potwierdzenia mojej decyzji i jak dam NIE ma wskoczyc do kroku pierwszego?? Da sie to wykonac na samej ""strukturze event"???
Re: string do wyboru urzytkownika
: 16 sie 2006 11:57
autor: jogurt_owocowy
a jak ma wygląd maszyna stanów na "event structure"??
Można by to było w jednej pętli jakoś wszystko pomieścić, ale ładniej byłoby wykorzystać architekturę
producent-konsument przy czym konsumentem byłaby właśnie klasyczna maszyna stanów przełączająca się odpowiednio po "skonsumowaniu" danego eventu ;)
Re: string do wyboru urzytkownika
: 16 sie 2006 12:07
autor: Mikrobi
Maszyna stanów oparta na samej strukturze event jest mało optymalnym rozwiązaniem. Event zasadniczo służy jako struktura reagująca na zdarzenia interfejsu/panelu. Na spotkaniu PLUG'a pokazywałem przykład takiej MS opartej na strukturze event i mechanizmie kolejek:
Jest to układ zawierający kilka trików: 1. enum - oczywiśćie element stworzony jako typedef 2. domyślna wartość enum: "event state" 3. funkcja
Dequeue Element ma określone wejśćie timeout (na 80ms) czyli po 80 ms jeśli nic się nie dzieje zwraca domyślą wartość elementów w kolejce (patrz pkt.2) 4. Jest tylko jeden stan zawierający strukturę event (
oczywiście!) a zawiera obsługę tylko naciśnięcia przycisku tak jak na przykład ten:
pozostałe stany wyglądają tak:
lub tak:
Taki układ aplikacji ma kilka wad, np brak oddzielenia wątku interfejsu od wątku wykonawczego aplikacji. Prawdopodobnie wrócę do tego tematu na najbliższym spotkaniu.