4 Порта В Одной Программе

decay

Member
15.04.2008
6
0
#1
Здравствуйте.
Мое ТЗ звучит примерно так:
Есть 4 последовательных (СОМ) порта (1 физический, 3 виртуальных).
По ним время от времени поступают данные (3 х 9600 бод, один возможно 115200 бод).
Необходимо по мере поступления информации с портов выводить ее на форму в hex формате.
Протоколы связи для каждого из портов отличаются.
Это значит, что сообщения по каждому из портов приходят различные, в случайное время, и реакция программы на эти сообщения должна быть различной.

Написал класс порта TComPort. Режим асинхронный. Написал также два потока - пишущий и читающий - для каждого порта.

1) Как правильно построить программу? Придумал 2 подхода.
а)Сначала попытался сделать 4 объекта порта, у каждого по 2 потока. Замучился синхронизировать (надо анализировать данные, логи вести, на форму выводить поступающую информацию, в целом прога получается очень уж сложной).
б)Сейчас подумываю об одном потоке для всех четырех портов, чтобы сразу их читать (мб даже синхронно). Это проще, но возникает тогда проблема с реализацией разных протоколов для разных портов.

Поделитесь опытом разработки похожих приложений.Какие есть походы при написании на С++ программы, работающей со многими портами?

2) Вопрос по форме вывода. Хочу выводить все в одно окошко (TMemo) на форме. Но тогда возникает проблема синхронизации (это если делать много потоков). Есть ли какой-то простой механизм, позволяющий вывести информацию на экран с минимумом выноса мозга из-за синхронизации?

3) Как попроще реализовать разные протоколы для каждого порта? Есть ли стандартные приемы, позволяющие это сделать?