16.06.2015 Views

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

SHOW MORE
SHOW LESS

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 ‐

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!