Тут есть задача максимально отвязать оборудование от ПО. Конечно, ПО должно знать о структуре и возможностях оборудования, но эти знания можно обобщить и разработать специализированный язык-посредник, т.е. метаязык для формального описания протоколов (программных интерфейсов) устройств. При чем, синтаксические конструкции свои делать не нужно, лучше взять синтаксис, для которого уже разработаны распространенные и оптимизированные парсеры, например JSON. Таким образом, ПО будет знать не интерфейс оборудования, а языка описания этого интерфейса. Точнее, обобщенные элементы интерфейса, каждому из которых поставлены в соответствие обобщения более высокого порядка: команда (процедура, метод), параметр, датчик, измерение, и т.д. В этом метаязыке можно предосмотреть не только декларативные конструкции описательного характера, но и активные, включив в него скрипты например на JavaScript, которые могут описывать алгоритмы работы с теми же структурами, которые метаязык и описывает. Из декларативной части можно динамически строить и пользовательский интерфейс и связывать его с формированием конкретных команд, отправляемых в устройство. Более подробне описать не могу, т.к. не знаю специфики Ваших задач. О метапрограммировании можно кое-что почитать тут:
habrahabr.ru/post/227753 и тут:
habrahabr.ru/post/137446 ну может еще вот тут:
habrahabr.ru/post/154891