Через протокол modbus RTU опрашиваются датчики. Датчиков 247 штук.
Вот не знаю как лучше реализовать это.
Опрос устройств на одной шине по modbus выполняется последовательно. Пока не получите ответ или ошибку, следующий запрос отправлять нельзя. Поэтому, на мой взгляд, наилучшим решением является организация очереди запросов. Очередь должна отслеживать получение ответов из шины (или таймаутов при отсутствии ответов) и отправлять следующий запрос. Т.е. очередь работает с устройствами синхронно - продвижение запросов инициируется ответами или таймаутами (если не задавать таймауты ожидания, то очередь может застопориться). Сразу предусмотрите возможность установки настраиваемой паузы между получением ответа и отправкой запроса -пригодится при плохих линиях. Мне иногда приходится ставить паузу до 20 мс (шина RS485 длиной 50-60 м, два "уса" в разные стороны от одного порта - вот так проложили..). Поэтому, сочувствую - две с половиной сотни даже при шустрых устройствах (15-20 мс), это несколько секунд. А устройства иногда отказывают...
Таким образом, клиентская часть будет работать не напрямую с устройствами, а с очередью - ставит запрос в нее и забывает. Обратный поток данных организовать уже просто - сигнал с данными и идентификатором устройства.
Так что организация отдельного потока для опроса, на мой взгляд, нормальная идея.