ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
4 апреля
1508435 Топик полностью
Adept (26.03.2025 17:40, просмотров: 105) ответил AlexBi на Метод половинного деления. Например ищем минимальный номер, спрашиваем всех "есть кто с номером меньше N/2?" Кто есть передает ноль. Если ответы наложатся, все равно что-то примется, и мы узнаем что есть кто-то. Если ни кто не ответит, узнаем, что ни кого нет. И так пока не останется один. Его как-то исключаем, что бы в следующей итерации он не отвечал, и опять ищем минимальный номер по той же схеме. Если устройств много ищем сперва минимальный, потом максимальный, с учетом
если делать по уму, то одиночные запросы/ответы не годятся. Нужен пакетный обмен с контрольными суммами, а это кратно увеличит время (банально, более длинные пакеты, если приходить к какому-то стандарту общему, более-менее универсальному синтаксису, то навскидку это минимум 5-6 байт. соответсвенно время транзакции 

("туда-сюда") на не максимальной, но хотя бы более менее рабочей на десятки метров, скорости 115200, получится около миллисекунды. в общем быстро, только непонятно какого порядка пространство идентификаторов. Если в пределах байта - так и прямой перебор сойдёт. А ежели методом дихотомии, то ещё нужно подумать как обрабатывать броадкаст команды, ибо при передаче одновременно несколькими клиентами данных по шине, получится полный трешняк, ну или отходить от парадигмы осмысленного обмена (с приёмом и декодированием пакетов) и аппаратно вешать какую-то приблкуду, которая будет сечь хоть какие-то попытики обмена на шине (тогда можно условно детектировать отклик клиента на броадкаст команду запроса ID в заданном диапазоне)

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