Как мы можем избежать исключения TransmitException при записи в канал

#xbee

#xbee

Вопрос:

Мы используем USB-накопители XU-A11 X-STICK 2,4 ГГц ДЛЯ ПОДКЛЮЧЕНИЯ К XBEE и USB-адаптеры XU3-A11 XBEE3. И библиотека xbee-java версии 1.3.0

Мы создали тест, в котором мы отправляем одни и те же данные каждые 100 мс. Мы видим, что мы получаем исключение TransmitException примерно раз в минуту. Подробная информация об исключении: «Возникла проблема с передачей пакета API XBee. > Ошибка: подтверждение не получено (0x01) »

Есть ли способ избежать получения этого исключения?

Фрагмент кода:

 while (true) {
  localDevice.sendData(xBee64BitAddress, data);
  Thread.sleep(100);
}
 

Конфигурация:

 serialPort = /dev/ttyUSB0
baudRate = 9600
dataBits = 8
stopBits = 1
serialParityConfiguration = NONE
 

Ответ №1:

Обратите внимание, что вы отправляете 10 пакетов в секунду со скоростью 9600 бод, поэтому ваши данные (с накладными расходами) должны составлять 96 байт или меньше (9600 бит / сек — это около 960 байт / сек). Для начала попробуйте увеличить скорость передачи данных.

Возможно, полностью избежать исключения не удастся. Что делать, если другое устройство отключено или перезагружается? Напишите обработчик исключений для регистрации ошибки, а затем обработайте эту ошибку соответствующим образом. Возможно, допустима одна ошибка в секунду, но если есть последовательность из более чем 4 ошибок, вы хотите что-то с этим сделать.

Комментарии:

1. Если мы установим тайм-аут на 5 секунд, мы также получим то же исключение.

2. Как ваше качество сигнала? Какое расстояние между модулями? Если у ваших модулей есть антенные разъемы, помните ли вы о подключении антенн?

3. Между модулями около 1 метра.

4. Получает ли удаленное устройство данные? Как насчет антенн — это модули с чип-антенной или разъем, к которому предполагается подключить антенну? Если модули расположены близко друг к другу, они могут работать без антенны, но, вероятно, будут отбрасывать пакеты. Если вы можете подключиться к компьютеру, на котором работает XCTU, вы можете запустить тест диапазона и измерить качество сигнала. digi.com/resources/documentation/Digidocs/90001456-13/concepts /…

5. На данный момент у нас нет времени для проведения надлежащих тестов, как только мы получим время, я сообщу вам, каковы результаты. Мы не используем антенны.