Настройка XBee (последовательной) сети

Я хочу настроить сеть xBee с четырьмя модулями Serial 1. Любые два из них могут общаться друг с другом в двустороннем режиме. Передаваемые данные представляют собой строку, отличную от одного байта.

Мой первоначальный проект заключается в настройке сети без маяков (с координатором): один модуль настроен как координатор. Левые три модуля настроены как конечные устройства. Координатор транслирует данные с конечных устройств.

Рабочий процесс связи таков: если конечное устройство 1 хочет отправить данные на конечное устройство 2, оно сначала отправляет данные координатору. Затем координатор транслирует данные, полученные от конечного устройства 1. Конечное устройство 2 может получать широковещательные данные. Рабочий процесс связи завершается.

Я хочу, чтобы полученная строка была атомарной. Если конечное устройство 1 и конечное устройство 3 отправят данные одновременно, возникнет конфликт. Две строки будут объединены вместе. И конечное устройство 2 не может различить, какой байт от какого устройства. То есть конечное устройство 1 отправляет строку "{AAAA}" (кавычки не включены). Тем временем конечное устройство 3 отправляет строку «‹2222>». Конечное устройство 2 может получить строку типа "{A‹22AA2A2}>", что мне не нужно. Моя ожидаемая строка — «{AAAA}‹2222>» или «‹2222>{AAAA}».

Как настроить сеть в соответствии с моими требованиями?


person Jeffrey    schedule 26.05.2012    source источник


Ответы (1)


Есть два способа добиться атомарной передачи с использованием модулей Digi XBee. Метод зависит от того, используется ли режим API (параметр AP > 0).

Если режим API не используется (AP = 0), то можно стимулировать атомарность данных, установив время RO больше, чем количество символов в самой длинной строке, из которой вы собираетесь отправлять один из ваших узлов. Это заставит буфер XBee ожидать указанное количество символов (время, необходимое для отправки символа с определенной скоростью передачи данных) перед началом беспроводной передачи. Примечание. Чтобы эта схема работала, вам нужно убедиться, что вы сразу отправляете всю строку на радио.

Если используется режим API (AP > 0), то очень легко получить желаемое поведение. Вы просто используете фрейм запроса Tx (тип фрейма API 0x1) и указываете строковые данные, которые хотите отправить. Данные всегда будут отправляться атомарно.

Если режим API используется на принимающем узле (т. е. в данном случае на координаторе), то данные кадра также всегда будут поступать атомарно.

Дополнительную информацию о том, как использовать режим API и искать в Интернете множество замечательных библиотек XBee, которые позволяют легко использовать модули Digi XBee в режиме API.

person Jordan    schedule 31.05.2012