Sunday, January 27, 2013

Helper - A tool for creating control scripts (mouse) + Recursive execution



Надоело возиться с однотипными действиями. Первым делом полез в интернет. Думал найти удобную программу, в которой можно быстро и без усилий создавать скрипты управления мышкой. В итоге, остался не удовлетворён увиденным. Или слишком громоздкая, или платная, или вообще, тормозит на середине выполнения. Познакомился с AHT (Autohotkey), AutoIt. Но желание написать собственную софтину не пропало. И вот, как видите, результат моей
двухчасовой работы (:
Изобретать велосипед не пришлось, так как уже ранее были наработки с либой от AutoIt (которую предварительно нужно зарегистрировать в системе, для этого зайдите в папку "Регистрация" и запустите "HelperRegistrator.exe").
Для перехвата данных о текущем положении курсора в системе (состояний кнопок и т.д.) использовал тоже ранее реализованные наработки GlobalHook.
Можно изменять скорость перемещения (двигается плавно, с разгоном и торможением).
Если CheckBox "Нажимать автоматически" установлен, то после каждого нажатия "Нажать"/"Отпустить"/"Кликнуть" будет нажиматься клавиша "Получить координаты" и после, можно тыкать в пункт назначения. Если не выставлен, то нужно начать одну из кнопок выбора действия ("Нажать"/"Отпустить"/"Кликнуть") и далее, можно прописать вручную координаты, или начать на "Получить координаты" и как я уже писал, тыкать в пункт назначения. Всё просто. Если нажать правой клавишей мыши на список последовательных команд, по выпадет меню, в котором можно удалить текущий элемент, передвинуть его вверх/вниз или сделать его клон.

При добавлении действия в список, указывается сколько раз программа должна выполнить данную процедуру. Например, если вам необходимо кликнуть мышью 2, 3 или даже 100 раз, то достаточно просто добавить в список элемент "Кликнуть", после нажать на него в в списке, прописать справа количество, и нажать Ок.
Если вы хотите включить в содержимое скрипта другой скрипт (который так же может включать в себя целое дерево скриптов с разной вложенностью), то необходимо нажать на кнопку Загрузить скрипт. Что бы выполнить скрипт несколько раз, необходимо сделать ту же инструкцию, что и на количество кликов.
Если необходимо вставить задержку (которая указывается в миллисекундах, 1000 миллисекунд - 1 секунда), достаточно указать числовое значение и нажать кнопку "Задержка".

При запуске запускается второй поток (параллельный главному но с более низким приоритетом) и начинается процесс работы.
Естественно, скрипты можно сохранять/загружать.

Если в процессе выполнения скрипта необходимо остановить выполнение - жмите Escape ;)

Скачать программу

Tuesday, January 8, 2013

Portable console on STM32F407. Part 4. Configuration Panel; User Controls




И так, что нового в новой версии моей консоли.
Все кнопки, которые раньше были прямоугольные, стали с закругленными краями (скрестил алгоритм рисования прямоугольников и алгоритм быстрого рисования окружностей).
Были реализованы высокоуровневые пользовательские элементы управления (Button, CheckBox, RadioButton, MessageBox, ValueRegulator). Пользоваться ими просто элементарно! Отняли хороший кусок времени. Каждый элемент состоит из .c и .h файла, с едиными общепринятыми функциями (т.е. все п.э.у. написаны по одному шаблону), видимые  программисту, который работает с обслуживанием данных пользовательских элементов. Это функции:
  • Add - функция добавления в коллекцию
  • Clear - очистка коллекции
  • Handle - обслуживание (на вход 3 параметра: координата X (с тачскрина), Y, и флаг нажатия)
  • Draw - прорисовка п.э.у (параметром служит флаг был ли нажат или активирован данный п.э.у)
У каждой функции элемента управления свой соответствующий префикс (например UserControl_Button_Add)
Реализовав всю эту систему (которая сама создает и обслуживает коллекцию п.э.у), стало намного проще проектировать пользовательский интерфейс. Добавить кнопку или любой элемент управления можно буквально несколькими строками кода. (при добавлении нового э.у. типа Button, одним из параметров служит ссылка на функцию, которая вызывается при нажатии, благодаря этому, обслуживание кнопок (а так же других п.э.у.) сводиться к тому что бы добавить и просто отправлять значения с тачскрина).
Если кого-то заинтересует - могу поделиться исходниками. (:

Главной частью любого терминала - естественно панели настроек. Я разместил всё, что требуется при работе с USART. Скорость порта, стоп биты, четность, контроль, размер пакетов. Конфигурация для перевода строки (CR, LF). Режим Echo.

Так же на плате появился многофункциональный модуль Bluetooth, который может быть как мастером, так и слэйвом. А так же может быть включен как в режим передачи данных, так и в режим конфигурации, в котором масса полезный настроек. Об этом подробно пойдет речь в 5 части.

Полным ходом идет разработка загрузчика, который является своего рода shell-ом, а так же ядром (сокращенно "кореш"). Он размещается в первом пользовательском секторе флешь. Ядро - так как включает в себя поддержку всех периферийных устройств. Начиная с дисплея, и заканчивая модулем Bluetooth. Функции управления размещены вместе с самим загрузчиком, а начиная со второго пользовательского сектора флешь, начинается таблица адресов, для косвенного обращения к функциям ядра, и сама программа (которую загружает загрузчик с карты памяти, и в последствии запускает её). Подробно об этом вы сможете почитать в 6 части.