Advertisement
MX_Master

UnifiedRemote - Mach3 Simple Vertical - remote.lua

Jul 16th, 2015
483
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 15.71 KB | None | 0 0
  1. -- СТАНДАРТНЫЕ БИБЛИОТЕКИ --
  2. -- https://github.com/unifiedremote/Docs/tree/master/libs
  3.  
  4. local win       = require("win");           -- https://github.com/unifiedremote/Docs/blob/master/libs/win.md
  5. local keyboard  = require("keyboard");      -- https://github.com/unifiedremote/Docs/blob/master/libs/keyboard.md
  6. local timer     = libs.timer;               -- https://github.com/unifiedremote/Docs/blob/master/libs/timer.md
  7. local os        = require("os");            -- https://github.com/unifiedremote/Docs/blob/master/libs/os.md
  8.  
  9.  
  10.  
  11.  
  12.  
  13. -- ПОЛЕЗНЫЕ ПЕРЕМЕННЫЕ --
  14.  
  15. local sProcessName              = "Mach3.exe";  -- имя исполняемого файла
  16.  
  17. local sMDICommandText           = "";           -- буфер для хранения текста MDI команды
  18.  
  19. local nMainWindowHandler        = 0;            -- ID главного окна программы
  20. local nMainWindowScanInterval   = 1000;         -- интервал в миллисекундах между проверками на существование главного окна программы
  21.  
  22.  
  23.  
  24.  
  25.  
  26. -- ПОЛЕЗНЫЕ ФУНКЦИИ --
  27.  
  28. -- функция выводит главное окно программы на передний план
  29. function fFocusMainWindow()
  30.     win.switchtowait(sProcessName);
  31. end
  32.  
  33. -- функция отображает указанный текст в инфо блоке пульта
  34. function fShowInfo ( sInfo )
  35.     -- проверяем существует ли в пульте элемент infoLabel и меняем его текст
  36.     if layout.infoLabel ~= nil then
  37.         layout.infoLabel.text = sInfo;
  38.     end
  39. end
  40.  
  41.  
  42.  
  43.  
  44.  
  45. -- ДЕЙСТВИЯ --
  46.  
  47. -- функция вызывается при нажатии на кнопку "X" (e-stop)
  48. actions.estop = function()
  49.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  50.     keyboard.stroke("oem_3"); -- эмулируем нажатие кнопки "`" ("~")
  51. end
  52.  
  53. -- функция вызывается при нажатии на кнопку ">" (play)
  54. actions.play = function()
  55.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  56.     keyboard.stroke("leftalt","R"); -- нажимаем комбинацию кнопок ALT + R
  57. end
  58.  
  59. -- функция вызывается при нажатии на кнопку "||" (pause)
  60. actions.pause = function()
  61.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  62.     keyboard.stroke("space"); -- эмулируем нажатие кнопки "пробел"
  63. end
  64.  
  65. -- функция вызывается при нажатии на кнопку "[]" (stop)
  66. actions.stop = function()
  67.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  68.     keyboard.stroke("leftalt","S"); -- нажимаем комбинацию кнопок ALT + S
  69. end
  70.  
  71.  
  72.  
  73.  
  74.  
  75. -- функция вызывается при нажатии на кнопку HOME
  76. actions.refAllHome = function()
  77.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  78.     keyboard.stroke("leftctrl","O"); -- нажимаем комбинацию кнопок ALT + O
  79. end
  80.  
  81. -- функция вызывается при нажатии на кнопку SPINDLE
  82. actions.toggleSpindle = function()
  83.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  84.     keyboard.stroke("F5"); -- эмулируем нажатие кнопки "F5"
  85. end
  86.  
  87. -- функция вызывается при нажатии на кнопку JOG
  88. actions.toggleJOG = function()
  89.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  90.     keyboard.stroke("leftctrl","leftalt","J"); -- нажимаем комбинацию кнопок CTRL + ALT + J
  91. end
  92.  
  93.  
  94.  
  95.  
  96.  
  97. -- функция вызывается при нажатии на кнопку "X=0"
  98. actions.xZero = function()
  99.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  100.  
  101.     keyboard.stroke("leftctrl","X"); -- нажимаем комбинацию кнопок CTRL + X
  102.     os.sleep(200); -- делаем паузу (0.2 сек), чтобы ввод полностью включился
  103.     keyboard.stroke("digit0"); -- нажимаем на кнопку 0
  104.     keyboard.stroke("enter"); -- жмем ENTER
  105. end
  106.  
  107. -- функция вызывается при нажатии на кнопку "Y=0"
  108. actions.yZero = function()
  109.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  110.  
  111.     keyboard.stroke("leftctrl","Y"); -- нажимаем комбинацию кнопок CTRL + Y
  112.     os.sleep(200); -- делаем паузу (0.2 сек), чтобы ввод полностью включился
  113.     keyboard.stroke("digit0"); -- нажимаем на кнопку 0
  114.     keyboard.stroke("enter"); -- жмем ENTER
  115. end
  116.  
  117. -- функция вызывается при нажатии на кнопку "Z=0"
  118. actions.zZero = function()
  119.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  120.  
  121.     keyboard.stroke("leftctrl","Z"); -- нажимаем комбинацию кнопок CTRL + Z
  122.     os.sleep(200); -- делаем паузу (0.2 сек), чтобы ввод полностью включился
  123.     keyboard.stroke("digit0"); -- нажимаем на кнопку 0
  124.     keyboard.stroke("enter"); -- жмем ENTER
  125. end
  126.  
  127. -- функция вызывается при нажатии на кнопку "Z=0"
  128. actions.aZero = function()
  129.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  130.  
  131.     keyboard.stroke("leftctrl","A"); -- нажимаем комбинацию кнопок CTRL + Z
  132.     os.sleep(200); -- делаем паузу (0.2 сек), чтобы ввод полностью включился
  133.     keyboard.stroke("digit0"); -- нажимаем на кнопку 0
  134.     keyboard.stroke("enter"); -- жмем ENTER
  135. end
  136.  
  137.  
  138.  
  139.  
  140.  
  141. -- функция вызывается при нажатии на кнопку "--X"
  142. actions.xMinusStart = function()
  143.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  144.     keyboard.down("left"); -- нажимаем на кнопку < (стрелка влево)
  145. end
  146. -- функция вызывается при отжатии кнопки "--X"
  147. actions.xMinusEnd = function()
  148.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  149.     keyboard.up("left"); -- нажимаем на кнопку < (стрелка влево)
  150. end
  151. -- функция вызывается при нажатии на кнопку "X++"
  152. actions.xPlusStart = function()
  153.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  154.     keyboard.down("right"); -- нажимаем на кнопку > (стрелка вправо)
  155. end
  156. -- функция вызывается при отжатии кнопки "X++"
  157. actions.xPlusEnd = function()
  158.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  159.     keyboard.up("right"); -- нажимаем на кнопку > (стрелка вправо)
  160. end
  161.  
  162.  
  163. -- функция вызывается при нажатии на кнопку "--Y"
  164. actions.yMinusStart = function()
  165.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  166.     keyboard.down("down"); -- нажимаем на кнопку (стрелка вниз)
  167. end
  168. -- функция вызывается при отжатии кнопки "--Y"
  169. actions.yMinusEnd = function()
  170.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  171.     keyboard.up("down"); -- нажимаем на кнопку (стрелка вниз)
  172. end
  173. -- функция вызывается при нажатии на кнопку "Y++"
  174. actions.yPlusStart = function()
  175.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  176.     keyboard.down("up"); -- нажимаем на кнопку ^ (стрелка вверх)
  177. end
  178. -- функция вызывается при отжатии кнопки "Y++"
  179. actions.yPlusEnd = function()
  180.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  181.     keyboard.up("up"); -- нажимаем на кнопку ^ (стрелка вверх)
  182. end
  183.  
  184.  
  185. -- функция вызывается при нажатии на кнопку "--Z"
  186. actions.zMinusStart = function()
  187.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  188.     keyboard.down("pagedown"); -- нажимаем на кнопку PG DN
  189. end
  190. -- функция вызывается при отжатии кнопки "--Z"
  191. actions.zMinusEnd = function()
  192.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  193.     keyboard.up("pagedown"); -- нажимаем на кнопку PG DN
  194. end
  195. -- функция вызывается при нажатии на кнопку "Z++"
  196. actions.zPlusStart = function()
  197.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  198.     keyboard.down("pageup"); -- нажимаем на кнопку PG UP
  199. end
  200. -- функция вызывается при отжатии кнопки "Z++"
  201. actions.zPlusEnd = function()
  202.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  203.     keyboard.up("pageup"); -- нажимаем на кнопку PG UP
  204. end
  205.  
  206.  
  207. -- функция вызывается при нажатии на кнопку "--A"
  208. actions.aMinusStart = function()
  209.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  210.     keyboard.down("num4"); -- нажимаем на кнопку Num4
  211. end
  212. -- функция вызывается при отжатии кнопки "--A"
  213. actions.aMinusEnd = function()
  214.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  215.     keyboard.up("num4"); -- нажимаем на кнопку Num4
  216. end
  217. -- функция вызывается при нажатии на кнопку "A++"
  218. actions.aPlusStart = function()
  219.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  220.     keyboard.down("num6"); -- нажимаем на кнопку Num6
  221. end
  222. -- функция вызывается при отжатии кнопки "A++"
  223. actions.aPlusEnd = function()
  224.     fFocusMainWindow(); -- выводим главное окно программы на передний план
  225.     keyboard.up("num6"); -- нажимаем на кнопку Num6
  226. end
  227.  
  228.  
  229.  
  230.  
  231.  
  232. -- функция вызывается при любом изменении текста элемента пульта для ввода MDI команд
  233. actions.MDItextChanged = function ( sText )
  234.     -- в переменной sMDICommandText всегда будет хранится текущая версия текста
  235.     -- элемента пульта для ввода MDI команд
  236.     sMDICommandText = sText;
  237. end
  238.  
  239. -- функция вызывается при нажатии кнопки SEND рядом с полем ввода MDI команд
  240. -- и выполняет указанную в MDI поле команду
  241. actions.MDIrun = function()
  242.     -- если главное окно программы НЕ найдено или длина строки команды слишком мала
  243.     if nMainWindowHandler < 1 or string.len(sMDICommandText) < 1 then
  244.         -- просто завершим функцию
  245.         return;
  246.     end
  247.  
  248.     -- выводим главное окно программы на передний план
  249.     fFocusMainWindow();
  250.  
  251.     -- переключаемся на вторую вкладку главного окна
  252.     keyboard.stroke("leftalt","2"); -- нажимаем комбинацию кнопок ALT + 2
  253.     -- делаем небольшую паузу (0.2 сек), чтобы вкладка полностью переключилась
  254.     os.sleep(200);
  255.     -- включаем ввод для MDI поля
  256.     keyboard.stroke("leftctrl","M"); -- нажимаем комбинацию кнопок CTRL + M
  257.     -- делаем небольшую паузу (0.2 сек), чтобы ввод полностью включился
  258.     os.sleep(200);
  259.     -- вводим текст команды
  260.     keyboard.text(sMDICommandText);
  261.     -- жмем ENTER 2 раза. Второй раз, чтобы выключить ввод текста
  262.     keyboard.stroke("enter");
  263.     keyboard.stroke("enter");
  264.     -- делаем небольшую паузу (0.2 сек), чтобы ввод полностью выключился
  265.     os.sleep(200);
  266.     -- переключаемся на первую вкладку главного окна
  267.     keyboard.stroke("leftalt","1"); -- нажимаем комбинацию кнопок ALT + 1
  268.  
  269.     -- выводим инфо о последней команде
  270.     fShowInfo("Last command: "..sMDICommandText);
  271.  
  272.     -- очищаем форму для ввода MDI команд в пульте
  273.     layout.MDIinput.text = "";
  274.     -- очищаем буфер c текстом команды
  275.     sMDICommandText = "";
  276. end
  277.  
  278.  
  279.  
  280.  
  281.  
  282. -- ИНИЦИАЛИЗАЦИЯ --
  283.  
  284. -- этот блок кода выполняется сразу же при обработке текущего файла сервером
  285. do
  286.     -- получим и сохраним ID главного окна программы в переменную
  287.     nMainWindowHandler = win.window(sProcessName);
  288.  
  289.     -- запустим повтор указанной функции каждые nMainWindowScanInterval микросекунд
  290.     timer.interval(
  291.         function()
  292.             -- получим и сохраним ID главного окна программы в локальную переменную
  293.             local nHandler = win.window(sProcessName);
  294.  
  295.             -- если главное окно программы найдено
  296.             if nHandler > 0 and nMainWindowHandler ~= nHandler then
  297.                 -- сохраним ID главного окна программы в глобальную переменную
  298.                 nMainWindowHandler = nHandler;
  299.                 -- выведем оповещение в инфо блоке о том, что главное окно программы найдено
  300.                 fShowInfo("Remote works fine");
  301.             -- если главное окно программы НЕ найдено
  302.             elseif nHandler < 1 then
  303.                 -- выведем оповещение в инфо блоке о том, что главное окно программы НЕ найдено
  304.                 fShowInfo("Program "..sProcessName.." isn't running");
  305.             end
  306.         end,
  307.        
  308.         nMainWindowScanInterval
  309.     );
  310. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement