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

Тема в разделе "Общие вопросы по С и С++", создана пользователем decay, 28 фев 2014.

  1. decay

    decay Member

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

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

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

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

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

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

Поделиться этой страницей