Перейти к содержимому


Фотография

Интерпретатор для EEPROM


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7

#1 Оффлайн   Appo

Appo
  • Пользователи
  • 66 сообщений

Отправлено 29 Сентябрь 2017 - 01:08

QcvGUdT.png

Позволяет передавать выполняемый код, с одного устройства на другое.
Например можно дрону передать команду drone.move(0,1,0) и он подлетит вверх, но дроном этот интерпретатор не ограничивается :)

Установка:
pastebin get EQkw9cL7 dcp

Тем, кому интересен биос:



Необходимые платы для запуска:
 - Беспроводная или связанная плата
 - Интернет плата

Использование:
Спойлер

 
Доступные команды в интерпретаторе:

help
components - Список компонентов
components [<device>] - Список методов компонента
online - Список онлайн устройств
start - Запуск всех устройств
= date - Вернуть дату записи EEPROM

Доступные команды при запуске программы:

dcp help
dcp <port> - Запуск консоли
dcp new <port> - Запись EEPROM
dcp run <name programm> <port> - Запуск программы
dcp pastebin <kode pastebin> <port> - Запуск программы c pastebin

Некоторые возможности использования:
 - все компоненты уже подключены, т.е. не обязательно получать прокси компонентов
 - в интерпретаторе работает знак "=" который пишется перед командой, что бы возвратить какое-то значение (написано жёлтым текстом)
 - можно запускать программы прямо с компьютера (dcp run) где установлена программа или сразу с pastebin (dcp pastebin)
 - добавил функцию os.sleep(). Если вы будете использовать ее как основной способ задержки, тогда можно будет экстренно завершать программу в обработчике ошибок (который активируется после запуска программы dcp run)
 - получение ошибок с запущенных программ, для их удобной отладки (если что, ошибка приходит на порт+1 , т.е. если вы ввели порт 25, то ошибка вернётся на порт 26)
 - создание стаи из дронов / роботов / планшетов ;D
 - управление системным блоком (которому даже моник не нужен), что то типо микроконтроллера, только можно будет работать удалённо с периферией: адаптерами, голограммами и т.д.


ioAD6El.jpg

:)


Сообщение отредактировал Appo: 29 Сентябрь 2017 - 09:35


#2 Оффлайн   Doob

Doob
  • Пользователи
  • 815 сообщений

Отправлено 29 Сентябрь 2017 - 06:48

Функция os.sleep поймает один сигнал и завершится, а если поймает нужное сообщение, то упадёт замертво.

Максимальный размер пакета можно получить через maxPacketSize()

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

Неплохо бы иметь набор программ из коробки для работы с дронороботами.

#3 Оффлайн   Appo

Appo
  • Автор темы
  • Пользователи
  • 66 сообщений

Отправлено 29 Сентябрь 2017 - 08:58

Функция os.sleep поймает один сигнал и завершится, а если поймает нужное сообщение, то упадёт замертво.


функция os.sleep() нужна для экстренного остонова в обработчике ошибок (который активируется после запуска программы).
Она срабатывает только после получания сообщения exit на порт.
Например вы создали программу "123" и засунули туда код:

while true do computer.beep(1000,0.2) os.sleep(1) end

и если вы запускаете код командой "get run 123" и попадаете в обработчик ошибок, где можно нажать 2 кнопки "q" и "w". Если вы нажмёте "w", тогда например дрон, в данном случае, выйдет из бесконечного цикла.
 

Максимальный размер пакета можно получить через maxPacketSize()


По поводу maxPacketSize(), в интерпретаторе реализована отправка по частям, например изменив переменную limit в интерпретаторе, например на 3, тогда Ваша программа будете передаваться по 3 символа, и собираться в кучку уже в EEPROM того устройства, которому вы послали сигнал.
 

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


По поводу безопасности я согласен, но "рукопожатий" не достаточно, можно взять устройство со всеми открытыми портами и слушающими эти порты, узнав порт устройства можно просто зафлудить и EEPROM просто не будет успевать сортировать эту дрисню с нормальными сигналами.

Для безопасности предлагаю вам посылать программы с бесконечным циклом. Например "while true do drone.move(0,1,0) end".

На мой взгляд максимум безопасности я сделал, замазывая порты звёздочками :D
 
 

Неплохо бы иметь набор программ из коробки для работы с дронороботами.


Можно посылать на него любые программы которые когда то уже были написаны для EEPROM. например для дронов, но для роботов не все.
Вы можете подключится к роботу и ввести команду " components robot ", для EEPROM, там будет совершенно другое API

Так же, удобной возможностью является просмотр доступных компонентов устройств и их методов ( components )



#4 Оффлайн   swg2you

swg2you
  • Пользователи
  • 268 сообщений

Отправлено 01 Октябрь 2017 - 17:07

--код 94 байта:
C=component::R::C.proxy(C.list('od')()).open(7)E={computer.pullSignal()}load(E[9]or'')()goto R

Позволяет удаленно выполнять программы на любых устройствах в которые вставлен EEPROM с этим кодом

 

Здесь: вся тема

Здесь: подробный разбор кода с комментариями

 

P.s.

Писал давно, возможно требуется модификация.

Оставляю в качестве примера.


  • Alex, Totoro, Doob и еще 1 это нравится

#5 Оффлайн   Appo

Appo
  • Автор темы
  • Пользователи
  • 66 сообщений

Отправлено 01 Октябрь 2017 - 19:41

Оставляю в качестве примера.


Вы предлагаете мне сжать код? Если так, то для какой цели? Размер программы 1698 байт.
У меня не стояло такой задачи, и я упёрся в функционал..
Ну а вашу тему я посмотрел в первую очередь перед созданием этой программы :)



#6 Оффлайн   swg2you

swg2you
  • Пользователи
  • 268 сообщений

Отправлено 01 Октябрь 2017 - 19:56

Вы предлагаете мне сжать код?

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


  • Appo это нравится

#7 Онлайн   Totoro

Totoro
  • Модераторы
  • 1 828 сообщений

Отправлено 02 Октябрь 2017 - 13:12

Как раз для таких прог, которые зашиваются в EEPROM мне кажется нет особого смысла сжимать сильнее чем 4 KiB.

Если конечно не предполагается встаивать такой код в другую EEPROM прошивку.



#8 Оффлайн   ALeXeR

ALeXeR
  • Пользователи
  • 204 сообщений
  • ГородОдесса

Отправлено 18 Декабрь 2017 - 13:07

Зачетно))






Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных