За основу перенял проект Сергея Управление контроллером MK1 и MK2 (planet-cnc). Портировал с дотнеты на мультиплатформенную Qt5. Исходники открытые. Но проверял только на Linux. Для сборки на Windows и OSX нужно доработать файл CMakeLists.txt. У меня возможности собирать на других системах нет, работаю только на линуксе.
Сейчас поддерживается только контроллер, базированный на MK1. В дальнейшем возможно расширение для MK2 и для открытого проекта Сергея, он делает контроллер на "Arduino". Не исключаю портирование libusb базированного драйвера на LinuxCNC, но там ещё разбираться надо.
Небольшое видео, демонтрирующее работу с файлом DaVinci.
https://www.youtube.com/watch?v=RglIsIvBLko
Что сделано:
Визуализация на OpenGL ES 2.0 (Embedded Systems 2.0) для возможности нативной работы на планшетах и миникомпьютерах, без программной прослойки обычного OpenGL.
Проделана оптимизация работы с полигонной сетью объектов, матрицы обрабатываются не в процессорных циклах, а отсылаются кусками прямиком на графиккарту.
Парсер G-Code оптимизирован по скорости, добавлены команды G2, G3. Дуги автоматически бъются на отрезки G1 и отправляются на контроллер.
Всторена возможность оптимизации обработки методом "пути колонии муравьев". Возможность отключения через опции. Сравнение отсортированного и оригинала на изображениях.
Кусок алгоритма с описанием забрал здесь: hackaday: g-code optimization Исходников всего проекта там, к сожалению, нет, только бинарники. Поэтому пришлось немного допиливать. Оптимизацию можно отключать в установках.
Сейчас пытаюсь найти все возможные установки, отправляемые в контроллер.
Поддерживаются пока три языка пользовательского интерфейса. Сделал так, что новый файл-перевод может сделать любой желающий в простом редакторе, а не исключительно программисты утилитой Qt Linguist. Файл-шаблон лежит в директории lang
Программу тестирую на Raspberry PI, система Raspbian. Для работы через WiFi с помощью ssh и визуализацией обработки нужна третья версия железяки. Надеюсь, что в новом ядре будет работать быстро и на RasPi 2.
Чего пока нет:
Встроены не все установки . Активно ищу, встраиваю. Основные установки уже найдены и встроены.
Нет поддержки MK2.
Нет поддержки других форматов, кроме G-Code. После установок собираюсь встроить пару дополнительных парсеров.
В самом G-Code пока не поддерживаются условные переходы, циклы. То есть те вещи, которые программируются руками, а не конвертерами. Собираюсь тоже потом встроить, но тут надо покумекать, как лучше.
Скан поверхности обработки.
Подключение видеокамеры.
Исходники здесь: https://github.com/eduard-x/cnc-qt
для работы на линуксе необходимо установить файл из директория udev/rules.d в каталог системы /etc/udev/rules.d и перезапустить udev демон. Как все происходит на других системах - не знаю. Скорее, на виндах происходит через запись в регистри и т.д.
Огромнейшее спасибо Сергею из Нового Уренгоя за расшифровку протокола и вообще, за его проект с открытыми исходниками.
Кому интересно - присоединяйтесь, присылайте патчи, используйте куски исходников в своих программах.