ForthLogic inst prog H P.1.2 120113.pdf - F&F
ForthLogic inst prog H P.1.2 120113.pdf - F&F
ForthLogic inst prog H P.1.2 120113.pdf - F&F
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Sterowniki <strong>prog</strong>ramowalne MAX Logic<br />
(OK)<br />
> : powitanie ." hello.wav " PLAY wait DROP ;<br />
(OK)<br />
> : wait_haslo WAITPW powitanie HOLD STOP DROP 6 TONE ;<br />
(OK)<br />
> : haslo ." haslo.wav " PLAY czekac_haslo DROP ;<br />
(OK)<br />
> : menu_glosowe<br />
." +48123456789 " DIAL haslo STOP DROP ;<br />
(OK)<br />
> menu_glosowe<br />
+48123456789 (OK)<br />
><br />
Za słowem WAITSTR podajemy trzy słowa. Podczas połączenia głosowego podanie wiersza cyfr za pomocą klawiatury<br />
telefonu zostanie zinterpretowane przez forth‐system jako liczba i zostanie ona położona na szczyt stosu<br />
matematycznego, zarazem spowoduje wykonanie pierwszego słowa. Każdą kolejną cyfrę należy wprowadzać wyłącznie po<br />
sygnale [bip]. Przecinek dla liczb zmiennoprzecinkowych wprowadzamy przyciskiem *. Wprowadzanie liczby należy<br />
zakończyć symbolem # (przykład: „Podaj wartość”[bip] 1[bip] 2[bip] 3[bip] *[bip]4[bip] # [123,4]). W<br />
przypadku, kiedy nie zostanie podany żaden sygnał w ciągu 60 sek. zostanie wykonane drugie słowo. W przypadku, kiedy<br />
połączenie zostanie przerwane przez użytkownika zostanie wykonane trzecie słowo. W przypadku załączenia funkcji<br />
NODTMFCOMFIRM liczbę wprowadzamy ciągiem, bez oczekiwania na sygnały potwierdzające.<br />
Wynik wykonania słowa WAITSTR kładzie się na stos jako znaczenie logiczne. Przy czym znaczenie logicznie PRAWDA<br />
oznacza, że proces rejestrowania podanych słów (typu callback) zakończył się i są one gotowe do ewentualnego<br />
wykonania, a FAŁSZ, że zaistniał problem (np.: w danej chwili nie ma żadnego przychodzącego połączenia głosowego).<br />
Przykład prostego menu głosowego z wprowadzeniem wartości (temperatury) jako zmiennej zmiennoprzecinkowej:<br />
> : set_temp FDUP 60.0 F<<br />
IF 1 FVAR! ." ok.wav " PLAY HOLD DROP<br />
ELSE ." wrong.wav " PLAY HOLD DROP<br />
THEN;<br />
(OK)<br />
> : wait_temp WAITSTR set_temp HOLD STOP DROP 11 TONE ;<br />
(OK)<br />
> : powitanie ." demand.wav " PLAY wait_temp DROP ;<br />
(OK)<br />
> : menu_glosowe<br />
." +48123456789 " DIAL powitanie STOP DROP ;<br />
(OK)<br />
> menu_glosowe<br />
+48123456789 (OK)<br />
><br />
Zdefiniowaliśmy słowo set_temp, które tworzy kopię liczby na stosie matematycznym, porównuje ją z liczbą 60.0<br />
(zdejmując ze stosu matematycznego jedną z kopii). Jeżeli w skutek porównania na stosie danych będzie logiczne<br />
znaczenie PRAWDA, to zmiennej matematycznej numer 1 zostanie nadana wartość temperatury (przy czym z<br />
matematycznego stosu zostanie zdjęta ostatnia kopia), oraz zostanie odtworzony plik "ok.wav", po którym połączenie<br />
zostanie przerwane. W przeciwnym wypadku zostanie odtworzony plik "wrong.wav", po którym połączenie zostanie<br />
przerwane. Następnie zdefiniowaliśmy słowo wait_temp, które pozwala na wprowadzenie liczby za pomocą sygnałów<br />
DTMF z klawiatury telefonu. Po naciśnięciu przycisku # zostanie wykonane słowo set_temp. W przypadku, kiedy nie<br />
zostanie podany żaden sygnał w ciągu 60 sek. sterownik zakończy połączenie. W przypadku, kiedy połączenie zostanie<br />
przerwane przez użytkownika sterownik nie podejmie żadnej akcji. Następnie zdefiniowaliśmy słowo powitanie, które<br />
odtworzy plik „demand.wav”, a następnie wykona słowo wait_temp. Ostatecznie zdefiniowaliśmy główne słowo<br />
menu_glosowe, które wykonuje połączenie głosowe na wskazany numer telefonu i wykonuje słowo powitanie.<br />
Wykonanie głównego słowa w następnej linii rozpoczyna proces inicjacji połączenia i odtworzenia menu głosowego.<br />
‐ 50 ‐