ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
4 апреля
1508617 Топик полностью
Adept (27.03.2025 17:18, просмотров: 83) ответил Adept на если делать по уму, то одиночные запросы/ответы не годятся. Нужен пакетный обмен с контрольными суммами, а это кратно увеличит время (банально, более длинные пакеты, если приходить к какому-то стандарту общему, более-менее универсальному синтаксису, то навскидку это минимум 5-6 байт. соответсвенно время транзакции
придумался метод исключения коллизий ответов на броадкаст запрос адреса по методу дихотомии: - устройства начинают ответ не сразу, а в соответствии с таймаутом, который равен интервалу передачи байта, помноженному на "константа минус две последних цифры DevID". Все клиенты слушают шину, и видя, что кто-то даёт ответ, - лезть со своими пакетами на шину нe будут. 

"константа-минус" - это, чтобы быстрее отвечали те, кто со старшими номерами. Остальные, если видят валидный пакет ответа - не дёргаются. Ну и должен быть повторный контрольный запрос и финальная подтверждающая транзакция с ответившим.

В случае монотонно взрастающей/убывающей нумерацией, не будет коллизий в пределах сотни устройств ) а можно взять не два, а три последних знака DevID. На скорости 115200 сдвиг ответа для двузначного ожидания составит менее 10mS, а для трёхзначного - менее 100mS. За 10 итераций (1секунда, можно определиться в диапазоне 1000 устройств) Куда уж лучше :) Ну с контрольными и подтверждающими транзакциями время утроится, но всё равно время автоконфигурации в три секунды - вполне себе, а на более высоких скоростях, да хоть тех же 230400 (не говоря уже про мегабит) - от полутора секунд и меньше. Ляпота по-моему :))

...делать нужно так, как нужно. А как ненужно - делать не нужно (С) Винни-Пух :)