Symulator EU07 (i nie tylko) > Symulator

 Problem z memcell'em

<< < (2/3) > >>

AtapiCl:

--- Cytat: Dolmio89 w 15 Września 2008, 20:26:53 ---Więc po odpaleniu "manewry2" powinien się odpalić "wjazd". Czy coś jeszcze pominąłem?

--- Koniec cytatu ---

Nie, bo Ty odpalasz tylko 'manewry2', a ten event z kolei nie odpala 'wjazd'.

To, co się wykona zależy od eventu 'wjazd'. To, czy się event 'wjazd' wykona zależy od parametrów komórki pamięci. A eventy typu 'updatevalues' tylko modyfikują stand komórki pamięci. Nadal jednak aby wszystko grało, event 'wjazd' musi być zainicjowany.

Dolmio89:
Ja to planowałem tak:
"manewry2" zmieniają wartość komórki pamięci => "wjazd" sprawdza stan komórki pamięci i odpala się po zmianie

W logu nie widać żadnego wpisu na temat zmiany w memcell, ale widać, że event "manewry2" się odpalił. Zupełnie nic już z tego nie rozumiem.

Mariusz1970 nie wiem czy dobrze zrozumiałem o co Ci chodziło, ale spróbowałem takiego kodu:

--- Kod: ---node -1 0 sm_mem memcell 0 0 1 manewry 0 0  none endmemcell

event KeyCtrl02 multiple 0 none manewry2 endevent

event manewry2 updatevalues 0.0 sm_mem wjazd * * endevent

event wjazd multiple 0.0 sm_mem
dolmiowo_zeberko1z
dolmiowo10W_F_s1
dol_zw3+
dol_zw7ad
dolmiowo_wj1N_B_s13
update1
condition memcompare wjazd 0 0 endevent

event update1 updatevalues 0.0 sm_mem * * 1 endevent
--- Koniec kodu ---

I efekt żaden. Może ktoś z was mógłby mi to jakoś krok po kroku rozpisać z objaśnieniami bo naprawdę zupełnie nie wiem co zrobiłem źle.

AtapiCl:
A jak ten event ma Ci sprawdzić, skoro on nie został odpalony? Heh?

Dolmio89:
hmm no to ja chyba jednak źle rozumiałem zasadę działania memcell'a

Czyli jak np. przypiszę do toru
--- Kod: ---event1 wjazd
--- Koniec kodu ---
to odpali się on dopiero po zmianie wartości komórki pamięci?

Bo myślałem że symek cały czas sprawdza stan tej komórki i po jej zmianie sam odpali event.

Mariusz1970:

--- Kod: ---node -1 0 sm_mem memcell 0 0 1 manewry 0 0  none endmemcell

event manewry2 updatevalues 0.0 sm_mem manewry 0 1 endevent

event wjazd multiple 1.0 sm_mem dolmiowo_zeberko1z dolmiowo10W_F_s1 dol_zw3+ dol_zw7ad dolmiowo_wj1N_B_s13 update1 condition memcompare manewry 0 1 endevent
event update1 updatevalues 0.0 sm_mem manewry 1 1 endevent

event KeyCtrl02 multiple 0 none manewry2 endevent


--- Koniec kodu ---

Pomijam tutaj deklarację, ale wydaje mi się, że logika jest ok, gdyż:
1)stan początkowy: kom. pam- stan 0 0.
2)wyzawalny jest event manewry2 za pomocą czegoś tam lub key, zmienia sie wartość kom. pam na 0 1
3)za pomocą czegoś tam event wjazd jest wyzwalany i warunek porównania komórki pamięci jest spłeniony
4)event wjazd zmienia wartość komórki pamięci na 1 1

Jedynie mi jeszcze przychodzi do głowy, iż ten sam event, który porównuje kom. pam, jednocześnie ją aktualizuje. Możesz dla bezpieczeństwa dać opóźnienie wykonania aktualizacji komórki w tym momencie.

PS
teraz dostrzegłem, że deklaracje są ok :), nie dowidziałem ciągu znaku "manewry".

--- Cytuj ---to odpali się on dopiero po zmianie wartości komórki pamięci?

--- Koniec cytatu ---

Odpali się, gdy jest spełniony warunek, ale tylko w tym momencie wyzwalania eventu.
komórki pamięci spełniają li tylko funkcję tworzącą dodatkowe warunki i albo warunek jest spełniony w danej chwili i się wtedy wyzwala event, albo nie spełniony i się event nie wyzwoli, nawet jeśli kiedyś tam później stan komórki się zmieni i sam warunek jest spełniony, ale symek już dawno zapomniał o evencie. trzeba wtedy ponownie wyzwolić event.

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

[*] Poprzednia strona

Idź do wersji pełnej
Powered by Advanced Topic Prefix Pro
Powered by SMFPacks Likes Pro Mod