REALIZACJA KOMUNIKACJI ZA POMOCĄ PROTOKOŁU HTTP W JĘZYKU ARLANG =============================================================== Niniejsza dokumentacja zawiera opis wykorzystania języka ARLANG do realizacji komunikacji serwera z klientem za pomocą protokołu HTTP. Program w języku ARLANG pełni funkcję serwera HTTP. Serwer ten odbiera zlecenia (wysyłane przez klienta za pomocą dowolnej przeglądarki internetowej) oraz wysyła do klienta strony internetowe zapisane w plikach *.HTML. Działanie to musi się odbywać w pętli, w której na przemian jest wywoływana procedura RECEIVE i SEND(). Po odebraniu zlecenia od klienta, treść tego zlecenia może być analizowana z wykorzystaniem funkcji ACTION(), VALUE() i TEXT(), odwołujących się do wartości atrybutów elementów formularzy przysłanych przez klienta w ramach zlecenia. Zakłada się, że czytelnik zapoznał się już z podstawami języka ARLANG. PROCEDURY I FUNKCJE JĘZYKA ARLANG SŁUŻĄCE DO KOMUNIKACJI Z KLIENTEM ------------------------------------------------------------------- RECEIVE - oczekiwanie na zlecenie od klienta i odebranie tego zlecenia. Po odebraniu zlecenia można się w programie odwoływać do funkcji ACTION, VALUE i TEXT SEND (nazwa_pliku) - wysłanie do klienta strony internetowej zapisanej w pliku o podanej nazwie. Jeśli nazwa pliku jest pusta, to procedura SEND() powoduje wysłanie strony zapisanej w pliku o nazwie będącej wartością atrybutu ACTION odebranego formularza strony internetowej ACTION (tekst) - funkcja zwracająca wartość 1, jeśli nazwa pliku HTML oczekiwanego przez klienta (przeglądarkę) jest taka sama jak tekst będący parametrem procedury ACTION (małe i duże litery NIE SĄ rozróżniane). Nazwa pliku oczekiwanego przez przeglądarkę wynika albo z adresu URL podanego przez klienta, albo jest to wartość atrybutu ACTION odebranego formularza strony internetowej. W przeciwnym razie funkcja zwraca wartość 0 VALUE (nazwa_elementu) - funkcja zwracająca wartość atrybutu VALUE podanego elementu (czyli elementu o nazwie będącej parametrem funkcji VALUE) odebranego formularza strony internetowej, jeśli wartość ta jest wartością liczbową. Nazwę elementu mozna zapisywać zarówno małymi jak i dużymi literami. TEXT (nazwa_elementu, - funkcja zwracająca wartość 1, jeśli wartość tekst) (tekstowa) atrybutu VALUE podanego elementu (czyli elementu o nazwie będącej pierwszym parametrem funkcji TEXT) odebranego formularza strony internetowej jest taka sama, jak tekst będący drugim parametrem funkcji TEXT (Uwaga! Nazwa elementu może być pisana dowolnie małymi lub dużymi literami, jednak w przypadku wartości atrybutu VALUE duże i małe litery MAJĄ ZNACZENIE!). W przeciwnym razie funkcja zwraca wartość 0 RECOGNITION (nazwa_pola) - procedura ta realizuje analizę komendy w języku quasi-naturalnym, której treść została na stronie internetowej wprowadzona do pola tekstowego o podanej nazwie (małe i duże litery nie są w tej nazwie rozróżniane). Analiza ta wykorzystuje opis języka komend zapisany w formacie VCD w odpowiednim pliku tekstowym (Uwaga! Ten sam plik z komendami musi być dostępny dla klienta oraz dla serwera) Rezultat analizy jest dostępny za pomocą funkcji COMMAND() oraz SVALUE(). COMMAND (nazwa) - funkcja zwracająca wartość 1 jeśli w wyniku realizacji procedury RECOGNITION rozpoznana została komenda o podanej nazwie (małe i duże litery nie są w tej nazwie rozróżniane). W przypadku braku tej zgodności funkcja ta zwraca wartość 0. Sposób przypisywania nazw komendom w języku naturalnym jest opisany w osobnej dokumentacji. SVALUE (numer) - funkcja zwracająca liczbową wartość semantyczną (parametr komendy głosowej) o podanym numerze, obliczoną na podstawie analizy semantycznej przeprowadzonej uprzednio za pomocą procedury RECOGNITION. Przypisywanie parametrów do komend jest opisane w osobnej dokumentacji. PRZYKŁADY PROGRAMÓW REALIZUJĄCYCH KOMUNIKACJĘ SERWERA HTTP Z KLIENTEM: ---------------------------------------------------------------------- Przykład 1: ----------- $ Zakłada się, że pierwsze zlecenie klienta dotyczy załadowania strony $ internetowej zapisanej w pliku DEMO.HTML o następującej zawartości: $ $ $ $ Web-based voice control of the robotized cell $ $ $
$ $ $ $
$ $ $ $****************** PROGRAM LOAD(mo_1) REPEAT UNTIL READY() EXECUTION REPEAT RECEIVE IF ACTION(demo.html) IF TEXT(parkowanie,Nest) LOAD(nt) ENDIF IF TEXT(ruch,Move) LOAD(mc_1,15) ENDIF REPEAT UNTIL READY() EXECUTION ENDIF SEND(demo.html) UNTIL TEXT(koniec,Stop) Przykład 2: ----------- $ Zakłada się, że pierwsze zlecenie klienta dotyczy załadowania strony $ internetowej zapisanej w pliku DEMO.HTML o następującej zawartości: $ $ $ $ $ $ $ $ $ $ $
$ Komenda:     $ $     $
$ $ $ $ Uwaga 1: $ Nazwę pliku komend (drugi parametr funkcji "Activate") podaje się BEZ $ ROZSZERZENIA! $ $ Uwaga 2: $ Linia odwołująca się do pliku słownikowego *.XMV (generowanego automatycznie) $ jest potrzebna tylko w przypadku sterowania robotem podłączonym do zdalnego $ komputera (przy realizacji symulacji na tym samym komputerze można ją pominąć) $ $****************** $ Opis języka komend głosowych w formacie VCD: $ $ $language: Polish $ $ #com done $ Zakończ program $ $ #com move $ Przesuń o *value milimetrów wzdłuż osi *axis: p3;p7 $ $ #def value $ *number $ minus *number:-p2 $ $ #def number $ pięć:5 $ dziesięć:10 $ $ #def axis $ iks:1 $ igrek:2 $ zet:3 $****************** PROGRAM x:=0 y:=300 z:=100 LOAD(MP_[x],[y],[z],-90,0) REPEAT UNTIL READY() EXECUTION REPEAT RECEIVE IF ACTION(demo.html) .&. TEXT(Realizacja,Realizuj) RECOGNITION(tekst) IF COMMAND(move) IF SVALUE(2)=1 x:=x+SVALUE(1) ENDIF IF SVALUE(2)=2 y:=y+SVALUE(1) ENDIF IF SVALUE(2)=3 z:=z+SVALUE(1) ENDIF LOAD(MP_[x],[y],[z],-90,0) REPEAT UNTIL READY() EXECUTION ENDIF ENDIF SEND(demo.html) UNTIL COMMAND(DONE)