artem211 428 Опубликовано: 20 июля, 2015 Итак граждане. Последний стабильный билд геокопалки меня радует, находится сейчас на тестировании, багов пока не обнаружено. Пришло время для нового этапа(с которого по уму следовало бы начинать!) - создание сетевых функций, для вайфы и наверно параллельно для линки тоже. Задача минимум - стабильная передача статов робота по запросу: координаты, основные состояния(топливо, инструмент, процент выполнения текущей задачи). Программа максимум: Автоматизированный сетевой обмен робота со станцией, передача вышеперечисленных величин, возможность "нажать красную кнопку"(остановить робота и вернуть на базу), графическое приложение для планшета(в том числе 2д макет выполняемой задачи, например отрисовка слоя(этажа) руд, в которых оперирует робот, его положение на этой "схемокарте", указание последовательности пути(для анализа)), графическое приложение для рабочей станции(комп с голографическим проектором), функции схожи с планшетной версией, но в 3д, возможность дистанционного управления(указать новое место и запустить нужную программу). На данный момент в сетевых технологиях ОС я довольно таки нуб. Но что успел понять, если робот что то делает(именно робот, аки robot.forward()), то прервать(безопасно) его действие с помощью эвента получения сообщений и не сбить при этом весь алгоритм/функцию(а они у меня многоэтажные) не получится. Нужно действовать апосредованно, не трогая функции использующие пространство имен "robot", тоесть поменять какую то глобальную переменную, проверив которую робот задействует новые алгоритмы. Так ли это? или же существует возможность вмешаться безопасным образом? 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asummonster 592 Опубликовано: 20 июля, 2015 запускай код в отдельной среде(load(code, _, _, среда)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
artem211 Автор темы 428 Опубликовано: 20 июля, 2015 запускай код в отдельной среде(load(code, _, _, среда)) поясни мысль подробнее Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asummonster 592 Опубликовано: 20 июля, 2015 тьфу. А чем тебе event.listen не нравится? Он безопасно останавливает(запускает функцию) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
artem211 Автор темы 428 Опубликовано: 20 июля, 2015 тьфу. А чем тебе event.listen не нравится? Он безопасно останавливает(запускает функцию) Предположи что ты попал евентом в момент, когда робот совершил движение, но не записал изменение координат, а ты евентом заставляешь его сделать другое движение Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asummonster 592 Опубликовано: 20 июля, 2015 а ты засунь запись координат в саму функцию движения Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
artem211 Автор темы 428 Опубликовано: 20 июля, 2015 (изменено) а ты засунь запись координат в саму функцию движения не считай себя умнее других. Эта функция с равным успехом прерывается и посередине выполнения Изменено 20 июля, 2015 пользователем artem211 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
davial 1 972 Опубликовано: 20 июля, 2015 (изменено) В твоём случае, как-раз и надо - "действовать опосредованно". Писать дополнительную функцию "обработчика прерываний"{далее просто Обработчик}, которая периодически должна запускаться и проверять : " А что там Хозяин соизволили молвить ?". Твоя программа, насколько большая, что тебе уже надо - параллелить вычисления. Кусок одного кода обработал, запустил - другой, третий ... и т.д. (Как у Билла Гейтса - с его первой Виндой ). И после окончания работы каждого куска кода, должен "вылазить" Обработчик, проверять "желания клиента" и в зависимости от результата - или "уползать обратно в нору", запуская далее основной поток или же прерывать выполнение программы и "исполнять пожелание" аки Джин. По-сути, это уже будет - маленький Диспечер задач. Изменено 20 июля, 2015 пользователем davial Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
artem211 Автор темы 428 Опубликовано: 21 июля, 2015 В твоём случае, как-раз и надо - "действовать опосредованно". Писать дополнительную функцию "обработчика прерываний"{далее просто Обработчик}, которая периодически должна запускаться и проверять : " А что там Хозяин соизволили молвить ?". Твоя программа, насколько большая, что тебе уже надо - параллелить вычисления. Кусок одного кода обработал, запустил - другой, третий ... и т.д. (Как у Билла Гейтса - с его первой Виндой ). И после окончания работы каждого куска кода, должен "вылазить" Обработчик, проверять "желания клиента" и в зависимости от результата - или "уползать обратно в нору", запуская далее основной поток или же прерывать выполнение программы и "исполнять пожелание" аки Джин. По-сути, это уже будет - маленький Диспечер задач. Спс, так и думал. Ну чтож, будем писать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах