Как правило делают две слабосвязанные части. Интерфейс и ядро системы.
С твоем случае дело наверное обстоит так: запускается служба(демон) и открывает http порт. Флеш открывается на полный экран в браузере и общается с ядром по http протоколу. Так сделано терминальное ПО у
quickpay.ru.
Другой подход у
osmp.ru: встраивают браузер в свое ПО, интерфейс представляет собой набор html/js страниц. Общение с ядром происходи через установку значений в скрытых input тегах.
У киберплата есть открытый код терминального ПО на с++/qt, можешь посмотреть
dev.cyberplat.com/redmine/wiki/pt. В нем реализована поддержка большей части требуемого оборудования.