Appo 86 Опубликовано: 28 сентября, 2017 (изменено) Позволяет передавать выполняемый код, с одного устройства на другое.Например можно дрону передать команду drone.move(0,1,0) и он подлетит вверх, но дроном этот интерпретатор не ограничивается Установка:pastebin get EQkw9cL7 dcpТем, кому интересен биос: https://pastebin.com/m364BGpZ Необходимые платы для запуска: - Беспроводная или связанная плата - Интернет платаИспользование: После скачивания программы, запустим ее: 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 - управление системным блоком (которому даже моник не нужен), что то типо микроконтроллера, только можно будет работать удалённо с периферией: адаптерами, голограммами и т.д. Изменено 29 сентября, 2017 пользователем Appo 9 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 749 Опубликовано: 29 сентября, 2017 Функция os.sleep поймает один сигнал и завершится, а если поймает нужное сообщение, то упадёт замертво. Максимальный размер пакета можно получить через maxPacketSize() Нужен протокол рукопожатий, чтобы можно было запускать несколько сетей. Защита от взлома тут самое важное. Связанная карта - не вариант, ест много энергии. Неплохо бы иметь набор программ из коробки для работы с дронороботами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Appo Автор темы 86 Опубликовано: 29 сентября, 2017 Функция 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". На мой взгляд максимум безопасности я сделал, замазывая порты звёздочками Неплохо бы иметь набор программ из коробки для работы с дронороботами. Можно посылать на него любые программы которые когда то уже были написаны для EEPROM. например для дронов, но для роботов не все. Вы можете подключится к роботу и ввести команду " components robot ", для EEPROM, там будет совершенно другое API Так же, удобной возможностью является просмотр доступных компонентов устройств и их методов ( components ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
swg2you 403 Опубликовано: 1 октября, 2017 --код 94 байта: C=component::R::C.proxy(C.list('od')()).open(7)E={computer.pullSignal()}load(E[9]or'')()goto R Позволяет удаленно выполнять программы на любых устройствах в которые вставлен EEPROM с этим кодом Здесь: вся тема Здесь: подробный разбор кода с комментариями P.s. Писал давно, возможно требуется модификация. Оставляю в качестве примера. 5 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Appo Автор темы 86 Опубликовано: 1 октября, 2017 Оставляю в качестве примера. Вы предлагаете мне сжать код? Если так, то для какой цели? Размер программы 1698 байт. У меня не стояло такой задачи, и я упёрся в функционал.. Ну а вашу тему я посмотрел в первую очередь перед созданием этой программы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
swg2you 403 Опубликовано: 1 октября, 2017 Вы предлагаете мне сжать код? Ноп. Оставил только в качестве условного примера реализации. С мыслью, - Возможно это будет вам полезно. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 2 октября, 2017 Как раз для таких прог, которые зашиваются в EEPROM мне кажется нет особого смысла сжимать сильнее чем 4 KiB. Если конечно не предполагается встаивать такой код в другую EEPROM прошивку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ALeXeR 67 Опубликовано: 18 декабря, 2017 Зачетно)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах