Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- СТАНДАРТНЫЕ БИБЛИОТЕКИ --
- -- https://github.com/unifiedremote/Docs/tree/master/libs
- local win = require("win"); -- https://github.com/unifiedremote/Docs/blob/master/libs/win.md
- local keyboard = require("keyboard"); -- https://github.com/unifiedremote/Docs/blob/master/libs/keyboard.md
- local timer = libs.timer; -- https://github.com/unifiedremote/Docs/blob/master/libs/timer.md
- local os = require("os"); -- https://github.com/unifiedremote/Docs/blob/master/libs/os.md
- -- ПОЛЕЗНЫЕ ПЕРЕМЕННЫЕ --
- local sProcessName = "Mach3.exe"; -- имя исполняемого файла
- local sMDICommandText = ""; -- буфер для хранения текста MDI команды
- local nMainWindowHandler = 0; -- ID главного окна программы
- local nMainWindowScanInterval = 1000; -- интервал в миллисекундах между проверками на существование главного окна программы
- -- ПОЛЕЗНЫЕ ФУНКЦИИ --
- -- функция выводит главное окно программы на передний план
- function fFocusMainWindow()
- win.switchtowait(sProcessName);
- end
- -- функция отображает указанный текст в инфо блоке пульта
- function fShowInfo ( sInfo )
- -- проверяем существует ли в пульте элемент infoLabel и меняем его текст
- if layout.infoLabel ~= nil then
- layout.infoLabel.text = sInfo;
- end
- end
- -- ДЕЙСТВИЯ --
- -- функция вызывается при нажатии на кнопку "X" (e-stop)
- actions.estop = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.stroke("oem_3"); -- эмулируем нажатие кнопки "`" ("~")
- end
- -- функция вызывается при нажатии на кнопку ">" (play)
- actions.play = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.stroke("leftalt","R"); -- нажимаем комбинацию кнопок ALT + R
- end
- -- функция вызывается при нажатии на кнопку "||" (pause)
- actions.pause = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.stroke("space"); -- эмулируем нажатие кнопки "пробел"
- end
- -- функция вызывается при нажатии на кнопку "[]" (stop)
- actions.stop = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.stroke("leftalt","S"); -- нажимаем комбинацию кнопок ALT + S
- end
- -- функция вызывается при нажатии на кнопку HOME
- actions.refAllHome = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.stroke("leftctrl","O"); -- нажимаем комбинацию кнопок ALT + O
- end
- -- функция вызывается при нажатии на кнопку SPINDLE
- actions.toggleSpindle = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.stroke("F5"); -- эмулируем нажатие кнопки "F5"
- end
- -- функция вызывается при нажатии на кнопку JOG
- actions.toggleJOG = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.stroke("leftctrl","leftalt","J"); -- нажимаем комбинацию кнопок CTRL + ALT + J
- end
- -- функция вызывается при нажатии на кнопку "X=0"
- actions.xZero = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.stroke("leftctrl","X"); -- нажимаем комбинацию кнопок CTRL + X
- os.sleep(200); -- делаем паузу (0.2 сек), чтобы ввод полностью включился
- keyboard.stroke("digit0"); -- нажимаем на кнопку 0
- keyboard.stroke("enter"); -- жмем ENTER
- end
- -- функция вызывается при нажатии на кнопку "Y=0"
- actions.yZero = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.stroke("leftctrl","Y"); -- нажимаем комбинацию кнопок CTRL + Y
- os.sleep(200); -- делаем паузу (0.2 сек), чтобы ввод полностью включился
- keyboard.stroke("digit0"); -- нажимаем на кнопку 0
- keyboard.stroke("enter"); -- жмем ENTER
- end
- -- функция вызывается при нажатии на кнопку "Z=0"
- actions.zZero = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.stroke("leftctrl","Z"); -- нажимаем комбинацию кнопок CTRL + Z
- os.sleep(200); -- делаем паузу (0.2 сек), чтобы ввод полностью включился
- keyboard.stroke("digit0"); -- нажимаем на кнопку 0
- keyboard.stroke("enter"); -- жмем ENTER
- end
- -- функция вызывается при нажатии на кнопку "Z=0"
- actions.aZero = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.stroke("leftctrl","A"); -- нажимаем комбинацию кнопок CTRL + Z
- os.sleep(200); -- делаем паузу (0.2 сек), чтобы ввод полностью включился
- keyboard.stroke("digit0"); -- нажимаем на кнопку 0
- keyboard.stroke("enter"); -- жмем ENTER
- end
- -- функция вызывается при нажатии на кнопку "--X"
- actions.xMinusStart = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.down("left"); -- нажимаем на кнопку < (стрелка влево)
- end
- -- функция вызывается при отжатии кнопки "--X"
- actions.xMinusEnd = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.up("left"); -- нажимаем на кнопку < (стрелка влево)
- end
- -- функция вызывается при нажатии на кнопку "X++"
- actions.xPlusStart = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.down("right"); -- нажимаем на кнопку > (стрелка вправо)
- end
- -- функция вызывается при отжатии кнопки "X++"
- actions.xPlusEnd = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.up("right"); -- нажимаем на кнопку > (стрелка вправо)
- end
- -- функция вызывается при нажатии на кнопку "--Y"
- actions.yMinusStart = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.down("down"); -- нажимаем на кнопку (стрелка вниз)
- end
- -- функция вызывается при отжатии кнопки "--Y"
- actions.yMinusEnd = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.up("down"); -- нажимаем на кнопку (стрелка вниз)
- end
- -- функция вызывается при нажатии на кнопку "Y++"
- actions.yPlusStart = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.down("up"); -- нажимаем на кнопку ^ (стрелка вверх)
- end
- -- функция вызывается при отжатии кнопки "Y++"
- actions.yPlusEnd = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.up("up"); -- нажимаем на кнопку ^ (стрелка вверх)
- end
- -- функция вызывается при нажатии на кнопку "--Z"
- actions.zMinusStart = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.down("pagedown"); -- нажимаем на кнопку PG DN
- end
- -- функция вызывается при отжатии кнопки "--Z"
- actions.zMinusEnd = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.up("pagedown"); -- нажимаем на кнопку PG DN
- end
- -- функция вызывается при нажатии на кнопку "Z++"
- actions.zPlusStart = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.down("pageup"); -- нажимаем на кнопку PG UP
- end
- -- функция вызывается при отжатии кнопки "Z++"
- actions.zPlusEnd = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.up("pageup"); -- нажимаем на кнопку PG UP
- end
- -- функция вызывается при нажатии на кнопку "--A"
- actions.aMinusStart = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.down("num4"); -- нажимаем на кнопку Num4
- end
- -- функция вызывается при отжатии кнопки "--A"
- actions.aMinusEnd = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.up("num4"); -- нажимаем на кнопку Num4
- end
- -- функция вызывается при нажатии на кнопку "A++"
- actions.aPlusStart = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.down("num6"); -- нажимаем на кнопку Num6
- end
- -- функция вызывается при отжатии кнопки "A++"
- actions.aPlusEnd = function()
- fFocusMainWindow(); -- выводим главное окно программы на передний план
- keyboard.up("num6"); -- нажимаем на кнопку Num6
- end
- -- функция вызывается при любом изменении текста элемента пульта для ввода MDI команд
- actions.MDItextChanged = function ( sText )
- -- в переменной sMDICommandText всегда будет хранится текущая версия текста
- -- элемента пульта для ввода MDI команд
- sMDICommandText = sText;
- end
- -- функция вызывается при нажатии кнопки SEND рядом с полем ввода MDI команд
- -- и выполняет указанную в MDI поле команду
- actions.MDIrun = function()
- -- если главное окно программы НЕ найдено или длина строки команды слишком мала
- if nMainWindowHandler < 1 or string.len(sMDICommandText) < 1 then
- -- просто завершим функцию
- return;
- end
- -- выводим главное окно программы на передний план
- fFocusMainWindow();
- -- переключаемся на вторую вкладку главного окна
- keyboard.stroke("leftalt","2"); -- нажимаем комбинацию кнопок ALT + 2
- -- делаем небольшую паузу (0.2 сек), чтобы вкладка полностью переключилась
- os.sleep(200);
- -- включаем ввод для MDI поля
- keyboard.stroke("leftctrl","M"); -- нажимаем комбинацию кнопок CTRL + M
- -- делаем небольшую паузу (0.2 сек), чтобы ввод полностью включился
- os.sleep(200);
- -- вводим текст команды
- keyboard.text(sMDICommandText);
- -- жмем ENTER 2 раза. Второй раз, чтобы выключить ввод текста
- keyboard.stroke("enter");
- keyboard.stroke("enter");
- -- делаем небольшую паузу (0.2 сек), чтобы ввод полностью выключился
- os.sleep(200);
- -- переключаемся на первую вкладку главного окна
- keyboard.stroke("leftalt","1"); -- нажимаем комбинацию кнопок ALT + 1
- -- выводим инфо о последней команде
- fShowInfo("Last command: "..sMDICommandText);
- -- очищаем форму для ввода MDI команд в пульте
- layout.MDIinput.text = "";
- -- очищаем буфер c текстом команды
- sMDICommandText = "";
- end
- -- ИНИЦИАЛИЗАЦИЯ --
- -- этот блок кода выполняется сразу же при обработке текущего файла сервером
- do
- -- получим и сохраним ID главного окна программы в переменную
- nMainWindowHandler = win.window(sProcessName);
- -- запустим повтор указанной функции каждые nMainWindowScanInterval микросекунд
- timer.interval(
- function()
- -- получим и сохраним ID главного окна программы в локальную переменную
- local nHandler = win.window(sProcessName);
- -- если главное окно программы найдено
- if nHandler > 0 and nMainWindowHandler ~= nHandler then
- -- сохраним ID главного окна программы в глобальную переменную
- nMainWindowHandler = nHandler;
- -- выведем оповещение в инфо блоке о том, что главное окно программы найдено
- fShowInfo("Remote works fine");
- -- если главное окно программы НЕ найдено
- elseif nHandler < 1 then
- -- выведем оповещение в инфо блоке о том, что главное окно программы НЕ найдено
- fShowInfo("Program "..sProcessName.." isn't running");
- end
- end,
- nMainWindowScanInterval
- );
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement