Я пытаюсь создать внутреннюю среду для взаимодействия с оборудованием через последовательное соединение. Мне нужно иметь возможность точно указать, как эти аппаратные модули будут взаимодействовать без перекомпиляции и запуска в системе с ограниченными ресурсами.
У меня уже есть код cpp, который используется повторно, взаимодействует с оборудованием и обладает широкими функциональными возможностями для отправки сообщений на устройства.
Воздействие во время выполнения - серьезное соображение, и оно работает на очень ограниченном дистрибутиве, который мы не хотим менять слишком сильно по аппаратным причинам.
Для меня было бы наиболее разумно взаимодействовать с языком сценариев, который можно легко сгенерировать, чтобы иметь набор ссылок на базу cpp, которую можно загрузить по команде. (вроде системы плагинов)
Python - это действительно хороший вариант, но у меня почти нет опыта работы со встроенным Python, я изучил его и думаю, что я могу быть смущен тем, как интерпретируемый скрипт будет ссылаться на функциональность в оригинальная программа без чего-то вроде pybind11 и встроенного python, работающих вместе. Биндер, безусловно, имеет привлекательность. Не ускоряй, пожалуйста - может быть немного .
LUA - надежный вариант, который хорошо протестирован, но его немного сложнее генерировать по команде. LuaBridge также имеет ту функциональность, которую я желаю. Наибольшее беспокойство вызывает влияние времени выполнения, но я, конечно, не эксперт.
Просто сделайте все в cpp и загрузите библиотеки как обычный человек - надежный вариант, но, вероятно, самый сложный для генерации и выполнения проверок синтаксиса.
Сделайте все это на языке сценариев и избавьтесь от накладных расходов компилятора - Я имею в виду, технически это опция
Это, конечно, не все варианты, но это далеко не в моей области знаний, и я думаю, что было бы полезно обсудить.
Мне бы очень хотелось узнать, на что мне следует потратить свое время, занимаясь исследованиями. Я потратил слишком много времени, изучая Пибинда, и не могу спокойно спать по ночам.
В идеале этот рабочий процесс должен выглядеть примерно так:
На главном контроллере :
Запущена интерфейсная программа (cpp)
Интерфейсная программа выполняет диагностику и проверяет состояние модуля (уже выполнено)
Проверка интерфейса для запуска скрипта для выполнения функциональности модуля
Сценарий :
Сгенерировано из какого-то источника
Запускает тесты, чтобы убедиться, что в генерации нет синтаксических ошибок
Перемещается в папку, где программа интерфейса может ее захватить ("полностью" безопасным способом) Я шучу, я знаю проблемы с этой настройкой, но мы не рассматриваем это в данный момент момент
Это было очень долго, и мне жаль, что я просто очень потерян и вышел из моей зоны комфорта.
Да, извините, я не уточнил, почему сгенерированный код был важен. Мы создали очень простой графический интерфейс верхнего уровня для взаимодействия с оборудованием, который необходимо преобразовать в сценарий для взаимодействия с основным интерфейсом контроллера.
Еще один вариант, который я предложил вчера вечером:
Напишите очень простой пользовательский язык сценариев, который я могу проанализировать на стороне cpp и связать таким образом