For Data Acquisition we use a separate daemon for each interface. The daemon will read the interface cyclically and write the result to a shared memory . The visualization can now easily read the shared memory and display it's content. The daemon also has a mailbox . The visualization can write to this mailbox, in order to output signals to the interface. Within the daemon we heavily rely on rllib . You do not have to write the daemon manually. Instead you can use "pvdevelop". Within "pvdevelop" you fill out a small INI-file describing what you want to read from the interface. "pvdevelop" will then generate the daemon for you.
Some interfaces use a different sheme. For example the EIB-Bus daemon is using a MySQL Database for storing the input values. Reflective Memory and PRIMO·S can be easily interfaced using their native API.