-
Notifications
You must be signed in to change notification settings - Fork 0
my diplom project
License
KhadanovichSergey/iskanderusController
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
* конфигурационный файл Конфигурационный файл может быть 2 видов: - файл с пропертисами config.properties например пример конфигурационного файла в этой же директории template_config.properties -конфигурационный файл config.xml пример конфигурационного файла в этой же директории template_config.xml * команды Команды могут быть нескольки видов : 1) комнады, которые переправляются на соответствующую ей ардуину. эти команды должны быть определенного формата command_name.parameter1.parameter2 ... .parameterN, где command_name - идентификатор, состоящий из больших и маленьких латинских символов и цифр parameter i - положительное число количество параментров может быть сколько угодно, в том числе 0 пример комманд: throat.100, pause.1000, name 2) команды, которые выполняются непосредственного на расбере пи должны быть такого же формата как и команды для ардуин в сервере по умолчания есть две таких команды: pause.countMillisecond - наличие параметра обезательно listScript пример использования run command listScript пример ответа command listScript run successfully with answer [list_names_of_script], где list_names_of_script - список имен скриптов через пробел command listScript run successfully with answer [pause arm throat], ответ сервера, если он содержит только три скрипта для того, чтобы добавить свою собственную специфичную команды необходимо выполнить последовательность шагом: - описать класс, реализующий интерфейс Function<String, String> и переопределить два метода * public String apply(String t); t - текстовое представление команды, которые было передано по сети return - текстовое сообщение, которое будет отправляться клиенту как результат выполнения команды * String toString(); (необезательно, но желательно) return - краткое описание команды - добавить в конфигурационный файл необходимые настройки * для *.properties specifiedCommand.command_name.text = текстовое представление команды или шаблон по стандарту POSIX specifiedCommand.command_name.class = полное имя класса, экземпляр которого будет обрабатывать сообщения подходящие под шаблон, записанный в text specifiedCommand.command_name.isPattern = является ли строка, записанная в поле text регулярным выражением * для *.xml в блок <specifiedCommand></specifiedCommand> нужно добавить тэг command <command> <name>имя команды (в программе не используется, но желательно написать... сделанно для того чтобы было проше искать нужный тег в файле</name> <textPresentation>текст(шаблон или просто текст)</textPresentation> <class>полное имя класса</class> <isPattern>шаблон ли написанн в textPresentation</isPattern> </command - перезапустить сервер 3) команды, которые слушает сервер по tcp сервер по умолчанию поддерживает 5 таких команды * run command text text - текстовое представление команды. команда может быть как вида 1 так и 2 пример run command throat.57 (команда, перенаправляемая на одну из ардуин) run command pause.1000 (команда для расбере пи) в качестве результата сервер возвращает ответ в виде строки, заканчивающейся \n - если команда выполнена успешно, то command text run successfully with answer [answer], где text - текстовое представление команды, которую вы хотели выполнить, [answer] - результат выполнения команды - если команда заданна не верно (не удовлетворяет шаблону), то wrong format command [text], где text - текстовое представление команды - если команда заданна верно, но ее нет в списках команд, то command not found [text], где text - текстовое представление команды * save script script_name command1 command2 command3 ... commandN script - именнованная последовательность команд данная комана, сохраняет script под имененем script_name в файл script_name.script в каталог, который указан в конфигурационном файле command i - любая команда вида 1 или 2 script_name - идентификатор, который может состоять из больших и маленьких латинских символов и цифр если вы сохраняите скрипт под именем которые уже есть, скрипт перезаписывается пример save script throat_tuda_siuda throat.0 pause.1000 throat.100 pause.1000 throat.0 если хотя одна команда не распознана на данный момент, то скрипт не добавляется... пример ответа на правильно добавленный скрипт create script with name [throat_tuda_siuda] add command [throat.0] successfully add command [pause.1000] successfully add command [throat.100] successfully add command [pause.1000] successfully add command [throat.0] successfully script add to ScriptCollection пример ответа на добавление скрипта с неправильной командой save script one one&:-100 pause.1000 pupsia create script with name [one] wrong format command [one&:-100] add command [pause.1000] successfully add command [pupsia] successfully script not add to ScriptCollection * run script script_name script_name - имя скрипта Данная команда запускает скрипт по имени, который вы заранее сохранили с помощью предыдущей команды пример run script throat_tuda_siuda пример результата выполнения команды start script with name [throat_tuda_siuda] command throat.0 run successfully with answer [answer0] command pause.1000 run successfully with answer [answer1] command throat.100 run successfully with answer [answer2] command pause.1000 run successfully with answer [answer3] command throat.0 run successfully with answer [answer4] stop script with name [throat_tuda_siuda] если скрипта с именем script_name не удалось найти в коллекции скриптов, то ответ будет такой: script with name [throat_tuda_siuda] not found * delete script script_name script_name - имя скрипта удаляет скрипт по имени пример запроса delete script throat_tuda_siuda пример ответа если скрипт с таким именем есть на сервере, то script with name [throat_tuda_siuda] deleted если скрипт с таким именем не найден, то script with name [throat_tuda_siuda] not found * read script script_name script_name - имя скрипта пример запроса read script throat_tuda_siuda пример ответа если скрипт с таким именем найден, то script with name throat_tuda_siuda consists [listCommand], где listCommand - список команд, разделенных пробелами если скрипт с таким именем не найден то, script with name [throat_tuda_siuda] not found для создания своей собственной команды такого типа необходимо - создать класс и пронаследовать его от класса TCPHandler и переопределить у него метод String apply(String text) в процессе написание необходимо пользоваться методами runCommand(Command c) - выполняет команду вида 1, 2. после выполнения этого метода ответ будет находится в поле answer для накопления ответа можно использовать метод append(String text) для возвращения результата испльзовать метод toString(); - добавить в конфигурационной файл необходимые изменения * для *.properties tcpHandler.command_name.text = текстовое представление команды или шаблон по стандарту POSIX tcpHandler.command_name.class = полное имя класса, экземпляр которого будет обрабатывать сообщения подходящие под шаблон, записанный в text tcpHandler.command_name.isPattern = является ли строка, записанная в поле text регулярным выражением * для *.xml в блок <tcpHandlers></tcpHandlers> нужно добавить тэг command <command> <name>имя команды (в программе не используется, но желательно написать... сделанно для того чтобы было проше искать нужный тег в файле</name> <textPresentation>текст(шаблон или просто текст)</textPresentation> <class>полное имя класса</class> <isPattern>шаблон ли написанн в textPresentation</isPattern> </command - перезапустить сервер * использование сервера для запуска сервера необходимо в параметра к jar указать два параметра config=пусть к конфигурационному файлу log=rewrite | append rewrite - перезаписать лог append - дописывать лог сервер можно использовать двумя способами 1) если вас устраивает стандартный набор команд то, необхоимо просто запустить сервер из консоли указав необходимые параметры 2) если вы хотите дописать свой собственный функционал - необходимо подключить к проект Server.jar (jar файл этого проекта) - в методе main(String args) вашего проекта необходмо вызвать метод Server.main(args) try { Server.main(args); } catch (Exception e) {/* ошибка старта сервера */}
About
my diplom project
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published