реклама на сайте
подробности

 
 
> Матлаб и пакеты UDP
_Anatoliy
сообщение Jul 3 2017, 07:47
Сообщение #1


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Всем доброго времени суток!
Мне нужно принять информацию из разрабатываемого изделия в Матлаб посредством Ethernet , пакеты UDP. Протокол простой - отсылаю пакет с кодом команды и параметром, изделие в ответ высылает 4 пакета UDP с информацией. Вроде всё работает , но почему-то не могу прочитать нужное количество байт из принятых пакетов. В основном принимается 512 байт, иногда меньше. Мне же нужно принять из каждого пакета 1026 байт. Как решить эту задачу?
Код
    fwrite(u,[52 01]);
    C = fread(u,1026);
    D = fread(u,1026);
    E = fread(u,1026);
    F = fread(u,1026);
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Swup
сообщение Jul 3 2017, 08:08
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 2-09-11
Из: Москва
Пользователь №: 66 970



Если у вас 4 пакета приходят сразу, то лучше дождаться их всех.
В udp объекте есть поле byteAvailable для этого. А потом все данные считать одним fread.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jul 3 2017, 08:24
Сообщение #3


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(Swup @ Jul 3 2017, 11:08) *
Если у вас 4 пакета приходят сразу, то лучше дождаться их всех.
В udp объекте есть поле byteAvailable для этого. А потом все данные считать одним fread.

Спасибо! Только в хелпе не могу найти описание этого byteAvailable crying.gif
Нет ли у Вас примера какого?

Цитата(MiPe @ Jul 3 2017, 11:00) *
По умолчанию размер входного буфера у объекта udp - 512 байт.
Если пользовательский код не успевает прочитать из буфера, то данные перезаписываются.
В документации к функции udp говорится о том, как поменять размер входного буфера, см. web(fullfile(docroot, 'instrument/udp.html')) и свойство InputBufferSize.

Спасибо! Сейчас гляну.
Подправил так :
Код
u = udp('10.0.0.7',4660,'InputBufferSize',1026);


Тоже не проехало...

если же сделать 2048 байт
Код
u = udp('10.0.0.7',4660,'InputBufferSize',2048);

то считывается 1026 или 1022 байт непредсказуемо...
Вариант считывания каждого пакета мне подходит больше.
Прикрепленные изображения
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 22:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.02948 секунд с 7
ELECTRONIX ©2004-2016