1Ridav 1 049 Опубликовано: 7 декабря, 2014 Скачать приложение android Библиотека клиента ОС На нашем форуме уже не мало программ, есть программы для защиты дома, программы для контроля. карьеры на черепахах и роботах. Однако у всех одна и та же проблема - требуется быть в игре для того, чтобы контролировать их работу или запускать что либо. Запускать игру дело не быстрое, ведь нужен компьютер, а он не у всех под рукой. Другое дело - мобильный телефон или планшет. Почти всегда рядом, компактный, легко носить. Это уже так вплелось в нашу жизнь, что мы и не замечаем ничего сверх естественного в этом. Возвращаясь к вопросу об управлении своими компьютерными системами не заходя в игру. Я решил сделать андроид приложение для этих целей. Все очень просто - запустил приложение - получил данные от своих компьютеров и дал им новые задания не заходя в игру. Так это должно быть в идеале. Для соединения требуется лишь запустить программу-клиент на OC компьютере и запустить андроид приложение. Для соединения андроида и игрового компьютера используется некий "ключ", который требуется ввести в оба клиента. Для примера используем ключ "abc789" Соединяться будем с нашим собственным сервером моста(Выложу его потом в общий доступ) После нажатия на Готово или кнопку Connect ниже поля ввода ключа - произойдет попытка соединиться на указанный сервер с заданным ключом. Если соединение успешно - нас перебросит в окно консоли, между окнами можно переключаться путем свайпов или перелистывания справа налево или наоборот. Окно консоли показывает то, что вы принимаете из сети, чуть ниже поле ввода для ввода текста Перелистываем обратно в окно авторизации и видим, что индикатор показывает то, что мы подсоединены к мосту(подробнее об этом можно узнать изучая статью по клиентской части ОС. Ссылка выше.) Попробуем для теста написать что либо и отправить ОС клиент не подключен к сети моста, поэтому мост уведомляет нас о том, что пересылать отправленное нами сообщение некому. Подключаем наш игровой компьютер с интернет платой к мосту () Android приложение получило уведомление о том, что ОС клиент подключен и можно обмениваться данными в виде строк(string) Отправим несколько тестовых строк, в том числе и команды среди них. Затем отключим для демонстрации программу ОС и запустим её снова. Связь восстанавливается, уведомления об этом получаются корректно Вот так выглядит тестовая программка, которая обрабатывает команды set N. ok означает, что команда set N распознана успешно, true - это успешно ли было отослано слово "pong"(true означает, что до моста дошло успешно). Обновление 1: Добавлена кнопка Disconnect&Close - отключает соединение и закрывает фоновый сервис. Добавлен визуальный индикатор состояния подключения(Шкала прогресса ProgressBar и текст), который показывает как на данный момент работает система. Добавлено автоматическое переключение в окно консоли при подключении Исправлен баг в поле ввода ключа. Кнопка Done выглядела не корректно. Обновление 2: Добавлена автоматическая прокрутка в логах консоли Изменен алгоритм обработки сообщений и системных кодов, так что старые версии приложения и ОС части не работают с обновленным мостом, обновляйте библиотеку и приложение. Немного увеличено потребление оперативной памяти в угоду отмены некоторых ограничений. Уменьшен сетевой DATA трафик в режиме ожидания на 28,67% Обновление 3: Добавлена возможность получать Toast и Push нотификации по команде с ОС Исправлена синтаксическая ошибка, которая приводила к невозможности установить приложение на устройство. 11 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
GravityFolls 21 Опубликовано: 7 декабря, 2014 Как нибудь попробую запустить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 7 декабря, 2014 Рид, я кажется понял, почему у меня не получилось отослать сообщение с windows-приложения. Если получится, сделаю и windows-клиента. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
1Ridav Автор темы 1 049 Опубликовано: 8 декабря, 2014 Рид, я кажется понял, почему у меня не получилось отослать сообщение с windows-приложения. Если получится, сделаю и windows-клиента. Потом выложу кроссплатформенный клиент в jar формате. Можно будет с компьютера соединяться. Он в принципе есть, на нем тестировал и отрабатывал соединения с мостом перед тем, как перевести на андроид Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Donny 130 Опубликовано: 8 декабря, 2014 На мой взгляд сильной визуальной стилизации не нужно, совершенно точно необходима система ключей, но в консольном виде ничего плохого нет. Однако может быть имеет смысл добавить хоткеи куда можно забиндить определённые команды которые будут использоваться чаще других. Однако как мне кажется легче пойти другим путём - создать клиентскую программу на ОК, это будет базовая программа с описанием и примерами что бы любой мог разобраться, так же в теме где будет размещена программа\пастебин приложить различные модули к этой программе (например начиная с elseif) на подачу редстоун сигнала, на проверку состояния и так далее. Чем менее требовательно и минималистичнее тем лучше и нам и вам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
1Ridav Автор темы 1 049 Опубликовано: 14 декабря, 2014 Написал ОС часть, которую можно подгрузить в свою программу и использовать. Написал об этом в своем блоге Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
DUIIIES 284 Опубликовано: 15 декабря, 2014 Написал ОС часть, которую можно подгрузить в свою программу и использовать. Написал об этом в своем блоге Рид, а самого приложения в общем доступе пока что нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
1Ridav Автор темы 1 049 Опубликовано: 15 декабря, 2014 Рид, а самого приложения в общем доступе пока что нет? В нем один критичный баг, который я думаю исправить на выходных. А так в принципе оно готово, в дальнейшем будет лишь изменяться внешний интерфейс, в роде закладок, спекуляции ввода и тд. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
1Ridav Автор темы 1 049 Опубликовано: 16 декабря, 2014 Выложил первую версию приложения для андроид. Ссылка в конце первого топика, под картинками. При попытке отослать сообщение на мост после разрыва соединения с мостом - будет происходить краш приложения. Об этом баге знаю, на выходных исправлю 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
DUIIIES 284 Опубликовано: 16 декабря, 2014 Выложил первую версию приложения для андроид. Ссылка в конце первого топика, под картинками.При попытке отослать сообщение на мост после разрыва соединения с мостом - будет происходить краш приложения. Об этом баге знаю, на выходных исправлю Затестил приложение, увидел 2 не очень приятных штуки: 1. Экран не ворочается, что очень неприятно при работе на планшетах с дополнительной клавиатурой; 2. Нет возможности отправлять сообщение нажатием Enter, что не очень удобно порой. В остальном всё удобно и практично) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 18 декабря, 2014 Я так понимаю, ключ может быть произвольной строкой, не только набором цифр?Может ли один ОС-компьютер держать одновременно несколько соединений, созданных при помощи разных ключей? А что будет если кто то не закроет за собой соединение? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 18 декабря, 2014 (изменено) Я так понимаю, ключ может быть произвольной строкой, не только набором цифр? Может ли один ОС-компьютер держать одновременно несколько соединений, созданных при помощи разных ключей? А что будет если кто то не закроет за собой соединение? Конечно можно любой ключ,хоть строка на 1 мегабайт.Только в начале строки нужно поставить метку,что это OC ,или Android. Изменено 18 декабря, 2014 пользователем NEO Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 24 декабря, 2014 (изменено) Здравствуйте уважаемые формучане,По просьбе 1Ridav дописать Библиотеку,мы решили с Totoro совместно ее до делать.Ув. Totoro если что меня дополнит ниже в сообщениях. Библиотека работает на ивентах. Pastebin: http://pastebin.com/dETumgeU lib= require('bridge') event= require('event') lib.init() lib.auth('123') while true do lib.pull() events,message= event.pull() if (events == 'bridge_message') then print(message) end end lib.finish() Событие которое создаёт библиотека,называется 'bridge_message',аргумент всего один ,и он несет в себе сообщение. Мы добавили обработчик команд,называются Хендлер, то есть см код ниже function fhw() print('Hello World') end lib= require('bridge') event= require('event') lib.init() lib.auth('123') lib.addHandler('hw',fhw) while true do lib.pull() end lib.finish() addHandler добавляет в список команду,и функцию если вы передадите hw из андроида,тогда сработает функция fhw ,и выведет Hello World. removeHandler удаляет хендлер из списка. init(): boolean Устанавливает соединение с мостом. auth(key: string): boolean Авторизуется на мосту используя переданный ключ. pull() Проверяет сообщения с моста. Если сообщение пришло - создает эвент bridge_message и управляет хандлерами. addHandler(command: string, callback: function) Создает новый хандлер: это пара "команда-функция". То есть, когда от моста приходит команда, с аргументами через пробел, хандлер вызовет соответствующую функцию, передав ей все аргументы в виде строк. removeHandler(command: string) Удаляет хандрер "повешенный" на заданную команду. finish() Закрывает соединение с мостом и завершает работу. Изменено 24 декабря, 2014 пользователем NEO 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 24 декабря, 2014 Ну так теперь надо мост CC-OC делать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 24 декабря, 2014 уже сделали для тебя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 24 декабря, 2014 Ну так теперь надо мост CC-OC делать. Это несложно. Получится примерно такая программа: local event = require('event') local br = require('bridge') local modem = require('component').modem local PORT = 27 modem.open(PORT) local ready = false ready = br.init() print("Подключение: ", ready) if not ready then print("[ОШИБКА] Не удалось установить соединение с мостом. Проверьте наличие интернет платы!") end io.write("Введите ключ: ") local key = io.read() ready = br.auth(key) print("Авторизация: ", ready) if not ready then print("[ОШИБКА] Не удалось авторизоваться с выбранным ключем!") else print("Авторизация успешна.") end print("Нажмите любую клавишу для выхода.") while ready do br.pull() name, data = event.pull(0.5) if name == 'key_down' then break elseif name == 'socket_message' then modem.broadcast(data) end end modem.close() br.finish() print("Трансляция завершена.") Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 25 декабря, 2014 А есть ли возможность ОС-компьютер включить в Craftnet? СС-компьютер подключается по Craftnet к ОС-компьютеру. То подключается к мосту и регистрирует канал с именем, совпадающим с адресом СС-компьютера. Может ли такой ОС-компьютер обслуживать несколько клиентов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 25 декабря, 2014 Здравствуйте уважаемые формучане,По просьбе 1Ridav дописать Библиотеку,мы решили с Totoro совместно ее до делать.Ув. Totoro если что меня дополнит ниже в сообщениях. Библиотека работает на ивентах. Pastebin: http://pastebin.com/dETumgeU Особенно порадовала строчка 93 1 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 25 декабря, 2014 А есть ли возможность ОС-компьютер включить в Craftnet? СС-компьютер подключается по Craftnet к ОС-компьютеру. То подключается к мосту и регистрирует канал с именем, совпадающим с адресом СС-компьютера. Может ли такой ОС-компьютер обслуживать несколько клиентов? Мне нужно разобраться с подключением к CraftNet из OC. Думаю, особых проблем не будет. Что касается нескольких клиентов: программа может авторизоваться несколько раз, с разными ключами. Но, она не сможет отсортировать приходящие сообщения. Мост не уточняет для какого ключа сообщение (или от какого). Поэтому они будут просто приходить кучей, со всех ключей. Особенно порадовала строчка 93 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 25 декабря, 2014 Мост не уточняет для какого ключа сообщение (или от какого). Поэтому они будут просто приходить кучей, со всех ключей. Рид, можно допилить мост? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах