Перейти к публикации
Форум - ComputerCraft
1Ridav

Android & OpenComputers

Рекомендованные сообщения

Рид, я кажется понял, почему у меня не получилось отослать сообщение с windows-приложения. Если получится, сделаю и windows-клиента.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Рид, я кажется понял, почему у меня не получилось отослать сообщение с windows-приложения. Если получится, сделаю и windows-клиента.

 

Потом выложу кроссплатформенный клиент в jar формате. Можно будет с компьютера соединяться. Он в принципе есть, на нем тестировал и отрабатывал соединения с мостом перед тем, как перевести на андроид

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На мой взгляд сильной визуальной стилизации не нужно, совершенно точно необходима система ключей, но в консольном виде ничего плохого нет. Однако может быть имеет смысл добавить хоткеи куда можно забиндить определённые команды которые будут использоваться чаще других. Однако как мне кажется легче пойти другим путём - создать клиентскую программу на ОК, это будет базовая программа с описанием и примерами что бы любой мог разобраться, так же в теме где будет размещена программа\пастебин приложить различные модули к этой программе (например начиная с elseif) на подачу редстоун сигнала, на проверку состояния и так далее. Чем менее требовательно и минималистичнее тем лучше и нам и вам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Написал ОС часть, которую можно подгрузить в свою программу и использовать. Написал об этом в своем блоге

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Написал ОС часть, которую можно подгрузить в свою программу и использовать. Написал об этом в своем блоге

Рид, а самого приложения в общем доступе пока что нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рид, а самого приложения в общем доступе пока что нет?

В нем один критичный баг, который я думаю исправить на выходных. А так в принципе оно готово, в дальнейшем будет лишь изменяться внешний интерфейс, в роде закладок, спекуляции ввода и тд.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Выложил первую версию приложения для андроид. Ссылка в конце первого топика, под картинками.

При попытке отослать сообщение на мост после разрыва соединения с мостом - будет происходить краш приложения. Об этом баге знаю, на выходных исправлю

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Выложил первую версию приложения для андроид. Ссылка в конце первого топика, под картинками.

При попытке отослать сообщение на мост после разрыва соединения с мостом - будет происходить краш приложения. Об этом баге знаю, на выходных исправлю

Затестил приложение, увидел 2 не очень приятных штуки:

1. Экран не ворочается, что очень неприятно при работе на планшетах с дополнительной клавиатурой;

2. Нет возможности отправлять сообщение нажатием Enter, что не очень удобно порой.

 

В остальном всё удобно и практично)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я так понимаю, ключ может быть произвольной строкой, не только набором цифр?
Может ли один ОС-компьютер держать одновременно несколько соединений, созданных при помощи разных ключей?

А что будет если кто то не закроет за собой соединение?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Я так понимаю, ключ может быть произвольной строкой, не только набором цифр?

Может ли один ОС-компьютер держать одновременно несколько соединений, созданных при помощи разных ключей?

А что будет если кто то не закроет за собой соединение?

 

Конечно можно любой ключ,хоть строка на 1 мегабайт.Только в начале строки нужно поставить метку,что это OC ,или Android. 

Изменено пользователем NEO

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте уважаемые формучане,По просьбе 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()

Закрывает соединение с мостом и завершает работу.

Изменено пользователем NEO
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

уже сделали для тебя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну так теперь надо мост 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("Трансляция завершена.")

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А есть ли возможность ОС-компьютер включить в Craftnet?

СС-компьютер подключается по Craftnet к ОС-компьютеру. То подключается к мосту и регистрирует канал с именем, совпадающим с адресом СС-компьютера. Может ли такой ОС-компьютер обслуживать несколько клиентов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте уважаемые формучане,По просьбе 1Ridav дописать Библиотеку,мы решили с Totoro совместно ее до делать.Ув. Totoro если что меня дополнит ниже в сообщениях.

Библиотека работает на ивентах.

Pastebin: http://pastebin.com/dETumgeU

Особенно порадовала строчка 93 :lol:

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А есть ли возможность ОС-компьютер включить в Craftnet?

СС-компьютер подключается по Craftnet к ОС-компьютеру. То подключается к мосту и регистрирует канал с именем, совпадающим с адресом СС-компьютера. Может ли такой ОС-компьютер обслуживать несколько клиентов?

Мне нужно разобраться с подключением к CraftNet из OC. Думаю, особых проблем не будет.

Что касается нескольких клиентов: программа может авторизоваться несколько раз, с разными ключами. Но, она не сможет отсортировать приходящие сообщения. Мост не уточняет для какого ключа сообщение (или от какого). Поэтому они будут просто приходить кучей, со всех ключей.

 

Особенно порадовала строчка 93 :lol:

:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мост не уточняет для какого ключа сообщение (или от какого). Поэтому они будут просто приходить кучей, со всех ключей.

 

Рид, можно допилить мост?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

зеро зачем тебе это?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рид, можно допилить мост?

Можно хедеры добавить, так сказать обернуть фантиком

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

зеро зачем тебе это?

Два СС-клиента с CraftNet-адресами route1.client1 и route2.client2 конектятся к ОС-шлюзу.

Шлюз цепляется к мосту и регистрирует два канала "route1.client1" и "route2.client2"

С другой стороны моста цепляются два Android-приложения, одно к каналу "route1.client1", другое - к "route2.client2"

Всё, что шлюз получает по каналу "routeN.clientN" он транслирует соответствующему клиенту через CraftNet. И наоборот.

Нужно только, что бы шлюз мог определять по какому каналу он получил посылку.

Такая схема позволит пользоваться мостом не только ОС, но и СС-компьютерам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А что будет, если сервер перезагрузиться? Мое андроид устройство сможет дальше находиться в конекте с ОС ПК и продолжит ли оно получать сообщения от него. Соединение Андроид - МОСТ- ПК ОС восстановиться автоматически, при условии, что ПК в загруженном чанке?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На сколько знаю, ОС-компьютер продолжает работать с того места, где его прервали. А вот сокет врядли восстановится. Так что, скорее всего, будет потеря соединения. Компьютер должен периодически контролировать соединение и восстанавливать в случае потери.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На сколько знаю, ОС-компьютер продолжает работать с того места, где его прервали. А вот сокет врядли восстановится. Так что, скорее всего, будет потеря соединения. Компьютер должен периодически контролировать соединение и восстанавливать в случае потери.

 

Воооооот, на это я и намекал, в либе этого вроде как не предусмотрено. И надо у Рида спросить, как там мост это все дело генерирует, восстановит ли он соединение с тем же ключом, который хранит ПК, хранит ли мост какую-то базу ключей, резервирует ли их, там длина то их вроде 16 символов "А-z 0-9", совпадение то вряд ли когда-либо возникнет, но важен именно факт автоматического  восстановления соединения при перезагрузках игрового сервера или моста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А что будет, если сервер перезагрузиться? Мое андроид устройство сможет дальше находиться в конекте с ОС ПК и продолжит ли оно получать сообщения от него. Соединение Андроид - МОСТ- ПК ОС восстановиться автоматически, при условии, что ПК в загруженном чанке?

Соединение восстановится, если использована функция read(). Андроид получит уведомление от моста о потере соединения с партнером. Мост автоматически восстановит соединение, если партнер появится в сети.

 

На сколько знаю, ОС-компьютер продолжает работать с того места, где его прервали. А вот сокет врядли восстановится. Так что, скорее всего, будет потеря соединения. Компьютер должен периодически контролировать соединение и восстанавливать в случае потери.

Если соединение оборвется по любым причинам - соединение восстановится. read() функция сокета возвращает статус false и значение nil, если сокет закрыт. При получении нила достаточно переподключиться, а затем авторизироваться на мосту.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Из описания на маркете - "Каждый раз генерируется новый уровень. Иногда это может быть даже невозможно пройти."

 

И что это за лажа?

 

Попробую поиграться. Расскажу что как.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Из описания на маркете - "Каждый раз генерируется новый уровень. Иногда это может быть даже невозможно пройти." И что это за лажа? Попробую поиграться. Расскажу что как.

Какое отношение софт с гугл маркета имеет к нашей программе? Её нет в гугл маркете...

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1Ridav, на сервере, на сокет один поток?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×