Evgeni 0 15 июня, 2022 Опубликовано 15 июня, 2022 · Жалоба Здравствуйте. Начал тут разбираться с W5500 возникли некоторые вопросы. Нужно включить UDP на первом сокете. Как мне правильно разобрать входящие сообщения. Например я получаю сразу много пакетов от разных устройств, нужно обработать эти пакеты и отправить ответ обратно каждому. Я так понимаю принятые данные от всех отправителей будут находиться в одном приемном буфере? И как мне узнать какие данные от кого? И еще нужно как то узнать IP и порт каждого отправителя для формирования ответного пакета. Может кто разбирался с этим? Может какая последовательность чтения-запись регистров нужна? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
WHILE 0 15 июня, 2022 Опубликовано 15 июня, 2022 · Жалоба если вы включили udp сокет, значит там будут сообщения только от одного устройства, имхо. А вот порт с ip вы, скорее всего не узнаете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 15 июня, 2022 Опубликовано 15 июня, 2022 · Жалоба Самое простое - включите в данные UDP инф. отправителя ( IP 4 байта и порт 2 байта). Вся необходимая информация содержится в полученном IP-пакете (IP отправителя, код протокола и номер порта). В UDP данные приходят "пакетами", соотв-но они не смогут смешаться в буфере. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 45 16 июня, 2022 Опубликовано 16 июня, 2022 · Жалоба Всё очень просто. Принимать пакеты ты будешь через recvfrom(), у которого один из параметров это как раз указатель на структуру с адресом отправителя, поэтому от кого пришло сообщение ты узнаешь без проблем. Ессно, по этому же адресу отправишь ответ. Ещё учти размеры сообщений и размер приёмного буфера у 5500. Возможно, тебе есть смысл увеличить размер буфера приёмника. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 16 июня, 2022 Опубликовано 16 июня, 2022 · Жалоба Неужели все настолько плохо с головой у инженеров Визнета? Еще 3100 (с более ранними не работал), и далее 3150, 5100 имели в самом начале вычитываемого из сокета UDP блока данных размер принятого пакета, адрес и порт отправителя. Я не думаю, что в 5500 они изобрели велосипед. Да, в datasheet на 5500 это не отписано. Может они унесли эту информацию в какой-то другой документ, лень искать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Evgeni 0 1 августа, 2022 Опубликовано 1 августа, 2022 · Жалоба В 15.06.2022 в 20:46, k155la3 сказал: В UDP данные приходят "пакетами", соотв-но они не смогут смешаться в буфере. Не, то что пакетами это понятно. Но допустим приходят два пакета один за одним сразу. Как я вычленю IP и порт из этого пакета? Ну ардуиновская либа как то же читает это все? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Evgeni 0 27 ноября, 2022 Опубликовано 27 ноября, 2022 · Жалоба В 16.06.2022 в 10:54, Сергей Борщ сказал: имели в самом начале вычитываемого из сокета UDP блока данных размер принятого пакета, адрес и порт отправителя. Здравствуйте. А можете сказать где про это можно почитать. Может у вас есть мануал где это написано? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 27 ноября, 2022 Опубликовано 27 ноября, 2022 · Жалоба On 8/1/2022 at 6:03 PM, Evgeni said: Ну ардуиновская либа как то же читает это все? А что мешает посмотреть как она это делает ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 27 ноября, 2022 Опубликовано 27 ноября, 2022 · Жалоба 4 часа назад, Evgeni сказал: Может у вас есть мануал где это написано? Да он не секретный вроде... правда тут они перепутали source и destination, но дальше в примере кода все корректно: 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 45 28 ноября, 2022 Опубликовано 28 ноября, 2022 (изменено) · Жалоба Недавно делал работу с UDP на W5500, поэтому гадать не буду. Совершенно верно заметили: On 6/16/2022 at 12:47 PM, tonyk_av said: Принимать пакеты ты будешь через recvfrom(), у которого один из параметров это как раз указатель на структуру с адресом отправителя Поэтому никаких проблем с определением адреса отправителя. нет. В буфере находится пакет данных со всеми атрибутами, а не тупой поток байт. Похоже, что ТС даже не удосужился прочитать ни даташит, ни описание API, хотя документация на W5500, по-моему, вполне внятная. Изменено 28 ноября, 2022 пользователем tonyk_av Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться