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

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

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

QcvGUdT.png

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

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

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



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

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


  После скачивания программы, запустим ее:

dcp

 Нас попросит ввести dcp new для записи EEPROM:

dcp new 

  Если все платы в наличии, тогда нас попросит ввести порт (на Ваш выбор)

 После, берем этот EEPROM и засовываем его в устройство. Можно совместить в верстаке этот EEPROM с устройством (дроном или микроконтроллером). И запускаем устройство.

 Возвращаемся к компьютеру где установлена программа и запускаем консоль:

dcp

  Вводим порт, на который записывали EEPROM.
И если Вы всё сделали правильно, то в строке с онлайном будет цифра 1   ;)

Вы восхитительны)) Теперь можете передавать команды на устройства)
Например:

computer.beep(1000,1)

 


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

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
  • Like 9

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


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

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

 

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

 

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

 

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

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


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

Функция 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 )

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


Ссылка на сообщение
Поделиться на других сайтах
--код 94 байта:
C=component::R::C.proxy(C.list('od')()).open(7)E={computer.pullSignal()}load(E[9]or'')()goto R

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

 

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

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

 

P.s.

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

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

  • Like 4

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


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

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

Вы предлагаете мне сжать код? Если так, то для какой цели? Размер программы 1698 байт.

У меня не стояло такой задачи, и я упёрся в функционал..

Ну а вашу тему я посмотрел в первую очередь перед созданием этой программы :)

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


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

 

 

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

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

  • Like 1

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


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

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

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас

×