c# Последовательный порт Bluetooth периодически не получает данные

У меня есть приложение С#/unity, которое использует последовательный порт для установления соединения Bluetooth с одним устройством, которое затем отправляет некоторые данные в режиме реального времени обратно в приложение. Проблема в том, что иногда, кажется совершенно случайным, но, по крайней мере, раз в минуту, скорость соединения/передачи данных через последовательный порт резко падает, буфер устройства заполняется и данные теряются. Включение Wi-Fi делает ситуацию еще хуже, но предсказуемой. Когда я включаю Wi-Fi, скорость передачи данных падает сразу, но примерно через 3 секунды возвращается к норме. Пробовал такое же приложение на другом подобном компе, чуть лучше - скорость падает реже, а также на андроиде, где падает еще чаще, но почти сразу набирает слабину. Существуют ли какие-либо настройки последовательного порта или настройки системы, которые я должен учитывать. Есть ли способ решить эту проблему в коде.

Спасибо


person jib fashr    schedule 19.10.2017    source источник
comment
можешь поделиться своим кодом?   -  person Nika Kasradze    schedule 19.10.2017
comment
Нет, это собственность, извините.   -  person jib fashr    schedule 19.10.2017


Ответы (1)


Без примеров кода в ваших вопросах трудно дать хороший ответ.

Но, судя по его звукам, вы, вероятно, получаете помехи на радиочастоте 2,4 ГГц, на которой работает ваше устройство Bluetooth.

Wi-Fi, пожалуй, самый большой и проблемный, как и другие приемники и устройства Bluetooth, которые могут мешать друг другу.

Микроволны , прямой спутниковый сервис, телефоны с частотой 2,4 ГГц и 5 ГГц, беспроводные динамики, внешние мониторы, радионяни и любые беспроводные устройства, работающие на частоте 2,4 ГГц, могут создавать помехи для вашего сигнала.

Вещи, которые вы можете сделать.

1) работать в довольно радиочастотной среде. один без множества других устройств, общающихся

2) физические материалы могут вызвать всевозможные проблемы с радиочастотой. Отражения/Столкновения. Однако постарайтесь устранить любые физические барьеры, с которыми вы общаетесь. Держитесь подальше от флуоресцентного освещения и микроволновых печей (оба излучают на частоте 2,4 ГГц)

3) переместите ваши устройства ближе друг к другу

Поскольку он работает как виртуальный com-порт, нет никаких настроек последовательного порта или системы, которые могли бы положительно повлиять на это. Возможно, вам повезет реализовать собственный драйвер устройства Bluetooth.

person nate_weldon    schedule 01.11.2017
comment
Да, я придумал то же самое, проводя некоторые исследования и тесты, поэтому я должен опубликовать эти обновления на свой вопрос: - person jib fashr; 02.11.2017
comment
В ходе тестирования я обнаружил, что на Android и Windows, если я увеличиваю объем потоковой передачи данных через соединение, буфер устройства периодически заполняется и сбрасывает данные. Таким образом, кажется, что некоторые системные протоколы не умеют сохранять полученные данные в буфере моего компьютера и моего планшета для виртуального последовательного порта Bluetooth. Как будто компьютер не достаточно быстр, чтобы принять все передаваемые данные. Если я уменьшу скорость отправки пакетов примерно до 150 Гц или уменьшу количество пакетов, отправляемых за заданное время, проблема исчезнет. - person jib fashr; 02.11.2017
comment
Кроме того, переполнение буфера не происходит, как только я начинаю передавать данные. У него есть некоторая задержка (30 секунд при 200 Гц), которая также зависит от скорости, но после запуска буфер заполняется каждые две секунды. - person jib fashr; 02.11.2017
comment
Я считаю, что это связано с повторными попытками, которые происходят на радиочастотном уровне Bluetooth. - person nate_weldon; 02.11.2017
comment
что вы имеете в виду под повторами? PS: просто проведите еще несколько тестов на еще более медленных скоростях, и проблема сохраняется, но встречается реже. На частоте 90 Гц это происходит каждые несколько минут, но длится так же долго, как и на частоте 200 Гц, то есть примерно две секунды, просто скорость заполнения буфера устройства bt, конечно, немного медленнее. Скорость передачи данных на частоте 450 Гц составляет 500 бит/с, что на 300 бит/с меньше, чем указано в документации на оборудование BT. Итак, я полагаю, что это как-то связано с заполнением буфера последовательного порта? - person jib fashr; 02.11.2017