Я пишу тестовый стенд Linux для беспроводных сенсорных сетей. Основная цель - проверить передачу данных между любыми двумя узлами. Сеть работает с использованием топологии дерева.
Один узел в сети - это «Драйвер». Этот узел подключен через последовательный порт к ПК с Linux. Я пытаюсь написать программное обеспечение на этом компьютере Linux, которое будет управлять передачей данных в сети.
Узел «Драйвер», получающий команды от программного обеспечения, работающего на компьютере с Linux, отправит сообщение с запросом данных на узел Отправителя. Узел отправителя проанализирует сообщение с запросом данных и начнет передачу данных в «Драйвер». Может существовать несколько таких отправителей. Все данные передаются от Отправителей к узлу «Драйвер». Узел «Драйвер» передает все полученные данные в приложение linux. Приложение linux отслеживает, сколько пакетов было получено от разных отправителей.
Ниже приведены требования.
- Любой узел в сети может быть драйвером (пунктом назначения), а любой узел может быть Отправителем.
- В любой момент времени может быть несколько Отправителей, отправляющих данные на узел «Драйвер».
- Данные, полученные от последовательного порта и отправленные последовательным портом приложением linux, заносятся в файл.
- Приложение linux должно иметь возможность считывать сообщения запроса данных из файла и отправлять их в указанное время.
- Графический интерфейс для этого приложения Linux. Весь код должен быть на C, поэтому выбор GUI должен быть размещен с C.
Один последний поворот: данные от Отправителя к «Водителю» представляют собой фрагментированные данные. На стороне отправителя фрагментация обрабатывается в самом устройстве. На стороне «Водителя» фрагментация будет обрабатываться в приложении linux. Таким образом, приложению linux придется отслеживать окно фрагментации и отправлять фрагменты подтверждения для каждой передачи данных, выполняемой несколькими отправителями, и отслеживать количество пакетов, полученных на данный момент от каждого отправителя.
Итак, в приложении linux есть ли возможность использовать несколько потоков - по одному потоку для каждого Отправителя? Будет ли несколько потоков играть хорошо с одним последовательным портом
отправлять и получать одновременно?
Консультирование по любому требованию будет оценено. Основная идея заключается в тестировании передачи данных, особенно сбора данных (несколько узлов отправляют данные на один узел). Если предлагается иной подход, чем изложенный выше, я также буду рад их услышать.
Спасибо большое
Джеймс