@roman_123456

На чем написать эмулятор станка, наиболее компактно?

Есть программа, которая общается со станком, фактически им управляет. В станке каретка, управляется двигателями, есть датчики положения моторов, концевики.
Станок реализует простые команды (упрощенно)
- поехать направо (включи мотор 1)
- поехать налево (включи мотор 2)
- дай показания энкодеров
- дай показания датчиков.
Т.е. станок только отвечает на команды, не инициирует запросы.
Формат обмена - бинарный, простой. Номер команды, данные, контрольная сумма.

Нужно написать для теста пока простой эмулятор станка.
Дальше размышления вслух.
Эмулятор должен отвечать на команды (это понятно).
Эмулятор должен внутри держать модель станка - каретка двигается - значит показания энкодеров растут, уперся в датчик - энкодеры не растут, как ни подавай команду.

Рисуются в голове такая архитектура.
1. Объект - Состояние (энкодеры, датчики, движение или нет) в текущий момент.
2. Поток - принимает команды, отдает или модифицирует состояние.
3. Поток - модель станка. Проверяет состояние, модифицирует его (изменение энкодеров, концевиков).
Прием данных неважно по чему, на одном ПК это все будет работать управлялка станка и эмулятор станка.
GUI эмулятору не нужно.

Вопрос. На какую технологию, язык программирования все это хорошо ложиться?
Владею неплохо C++, Qt, QML, чуть JS, GO.
Хочется максимальной компактности итогового кода, чтобы эмулятор можно было окинуть глазами в 1-2 экрана.
Скорость не важна, справится что-угодно. Бронебойность не важна - упало и ладно.

Например, в Go раз, и вот тебе поток. В Qt больше писанины, обосабливаешь ее в файл и привет - у тебя 50 файлов в проекте.
Но Go со своими заморочками получается тоже многослово, много незначащего мусора.

Казалось бы, взять инструмент, которым владеешь лучше всего (Qt). Но вдруг для такой задачи есть более мощное средство?
Можно и подучиться чему-то, если обещанная технология мощнее, чем владеешь.
  • Вопрос задан
  • 155 просмотров
Пригласить эксперта
Ответы на вопрос 2
Griboks
@Griboks
python
Ответ написан
Комментировать
HemulGM
@HemulGM
Delphi Developer, сис. админ
Создать поток в Delphi:
Task.Run(
  procedure
  being
    <Твой код>
  end);


Создаём подключение (com, http ..)
Запускаем поток на прослушивание
Запускаем поток на эмуляцию работы
Готово

(Здесь создаётся настоящий поток, а не подделка как на питоне, например)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы