Исходный код вики Создание фоновой операции
Редактировал(а) Edgar Allan Poe 2024/02/28 18:13
Последние авторы
| author | version | line-number | content |
|---|---|---|---|
| 1 | {{success title="**Внимание!**"}} | ||
| 2 | Перед началом работы убедитесь в наличии активной опции «Фоновые операции». | ||
| 3 | {{/success}} | ||
| 4 | |||
| 5 | Для многих задач по управлению ЧПУ системой требуется возможность фонового выполнения макросов, в которых отслеживаются определённые параметры работы системы и выполняются необходимые действия (например, управление выходами). | ||
| 6 | |||
| 7 | Код макроса может быть написан в любом текстовом редакторе (стандартный Блокнот, Notepad++ и другие). Список функций в API для разработки фоновых макросов приведён в разделе "Функции для разработки фоновых макросов". Обратите внимание, что набор доступных функций отличается в API фоновых макросов и классических макросов. | ||
| 8 | |||
| 9 | Для создания фоновой операции воспользуйтесь окном "[[doc:Руководство пользователя.Описание M-кодов.Управление макросами и фоновыми операциями.WebHome]]": нажмите кнопку "Создать" и введите имя фоновой операции. После того как новая фоновая операция появится в списке, перейдите в режим редактирования (окно стандартного текстового редактора) для добавления кода. Для запуска фоновой операции выделите её в списке и нажмите кнопку "Запустить". | ||
| 10 | |||
| 11 | При запуске сервер PUMOTIX начинает выполнение каждого фонового макроса в отдельном потоке. При этом внутри макроса вызывается функция — обработчик с интервалом 100 мс (интервал между вызовами обработчика может изменяться в зависимости от определённых условий, для точного замера прошедшего времени используйте функцию [[GetSystemTickCount>>doc:Руководство пользователя.Описание фоновых операций.Функции для разработки фоновых макросов.WebHome||anchor="number GetSystemTickCount ()"]]). | ||
| 12 | |||
| 13 | {{code language="lua" title="**Пример фонового макроса**"}} | ||
| 14 | function handle() | ||
| 15 | local x = AxisGetMachinePos(Axis.X) | ||
| 16 | |||
| 17 | local new_state_0 = x < 0 | ||
| 18 | local new_state_1 = x >= 0 | ||
| 19 | |||
| 20 | if (PinGetState(Outputs.UserOutput_0) ~= new_state_0) then | ||
| 21 | PinSetState(Outputs.UserOutput_0, new_state_0) | ||
| 22 | end | ||
| 23 | |||
| 24 | if (PinGetState(Outputs.UserOutput_1) ~= new_state_1) then | ||
| 25 | PinSetState(Outputs.UserOutput_1, new_state_1) | ||
| 26 | end | ||
| 27 | end | ||
| 28 | {{/code}} |