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.

Instrukcja <strong>prog</strong>ramowania w języku <strong>ForthLogic</strong> wersja <strong>P.1.2</strong><br />

nałożenia się dwóch zadań: automatycznej odpowiedzi forth‐systemu na wejściowy SMS oraz wykonania podanego w tym<br />

wejściowym SMSie słowa DIAL, co może mieć nieprzewidywalne skutki dla pracy forth‐systemu. Problem ten można<br />

rozwiązać poprzez definicję nowego słowa, które w swoim składzie będzie zawierać słowo DIAL, a realizacja jego będzie<br />

odłożona w czasie, np. poprzez słowo TIMER! . Minimalny czas zwłoki to 1 sek.<br />

Do podjęcia połączenia głosowego służy słowo ANSWER (odpowiedz), które z bufora wyjściowego sczytuje jeden lub kilka<br />

wierszy tekstu rozdzielonych spacją. Są to numery telefonów w formacie międzynarodowym. Po słowie ANSWER<br />

podajemy słowo, które będzie wykonywane po podjęciu przez sterownik przychodzącego połączenia.<br />

Słowo ANSWER podejmuje inicjowane połączenie głosowe przez wskazane numery telefonów. Wynik wykonania słowa<br />

ANSWER kładzie się na stos jako znaczenie logiczne. Przy czym, logiczne znaczenie PRAWDA oznacza, że inicjowane<br />

połączenie głosowe zostało podjęte przez sterownik, a FAŁSZ, że na chwile wykonywania słowa ANSWER nie było<br />

inicjowane połączenie, właśnie trwa połączenie głosowe lub inicjowanie połączenia głosowego odbyło się z<br />

nieuwzględnionego numeru telefonu. Jeżeli dla słowa ANSWER nie podamy żadnego numer telefonu, to sterownik<br />

podejmie każde inicjowane połączenie niezależnie od numeru telefonu.<br />

Przykład:<br />

> : powitanie . " hello.wav " PLAY HOLD DROP ;<br />

(OK)<br />

> : wait ." +48123456789 +48987654321 ”<br />

ANSWER powitanie<br />

NOT IF 3.0 3 TIMER! wait THEN ;<br />

(OK)<br />

> wait<br />

+48123456789 +48987654321 (OK)<br />

><br />

Słowo powitanie już opisywaliśmy. Następnie definiujemy nowe słowo wait, które wykonuje następujące operacje: do<br />

bufora wyjściowego zapisane zostają numery telefonów potrzebne do wykonania słowa ANSWER. Następnie<br />

wykonywane jest słowo ANSWER (podjęcie inicjowanego połączenia głosowego ze wskazanego numeru telefonu i<br />

wykonanie słowa powitanie). Bezpośrednio po słowie ANSWER będzie dokonana analiza jego wykonania. Jeżeli wynikiem<br />

będzie FAŁSZ, to po 3 sek. znów będzie wykonane sowo wait (uruchamiając ponownie proces oczekiwania na wejściowe<br />

połączenie głosowe), a jeżeli wynikiem będzie PRAWDA, to nic nie będzie wykonane.<br />

Ilość numerów telefonów, które mają być autoryzowane przez sterownik jest ograniczona przez pojemność bufora<br />

wyjściowego. Jednak istnieje sposób, który pozwala zwiększyć liczbę numerów telefonów, na których wezwanie odpowie<br />

sterownik wykonując słowo ANSWER.<br />

Przykład:<br />

> : powitanie ." hello.wav " PLAY HOLD DROP ;<br />

(ОК)<br />

> : wait1 ." +48123456789 " ANSWER powitanie DROP<br />

3.0 1 TIMER! wait1 ;<br />

(ОК)<br />

> : wait2 ." +48987654321 " ANSWER powitanie DROP<br />

3.0 2 TIMER! wait2 ;<br />

(ОК)<br />

> wait1 wait2<br />

+48123456789 +48987654321 (ОК)<br />

><br />

Słowo powitanie już opisywaliśmy w poprzednich przykładach. Następnie definiujemy nowe słowo wait1. Z bufora<br />

wyjściowego zostaje podany numer telefonu. Następnie podajemy słowo ANSWER, które dokona próby podjęcia<br />

przychodzącego połączenia inicjowanego przez telefon o podanym wcześniej numerze. Jeżeli połączenie będzie właśnie z<br />

‐ 47 ‐

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

Saved successfully!

Ooh no, something went wrong!