Я пытаюсь прочитать закодированные необработанные данные из UDP и передать их в мой пользовательский MEX-файл для декодирования. Теперь то, что я получаю, когда использую fread
для чтения данных с моего UDP-порта, является двойным. Кроме того, документация для udp / fread говорит о том, что
По умолчанию числовые значения c возвращаются в массивах двойной точности
, однако, что он не говорит, так это как я могу предотвратить это преобразование и как получить необработанные байтовые значения. Я не использую плавающие значения, и мне пришлось бы конвертировать обратно в мой MEX-файл, что привело бы к ненужным накладным расходам.
РЕДАКТИРОВАТЬ: В соответствии с просьбой, вот небольшой пример.
u = udp();
u.LocalPort = 3333;
fopen( u );
data = fread( u, 10, 'uint8' );
fclose( u );
Предположим, что вы отправляете с помощью этого небольшого Python сценария:
import time
import socket
UDP_IP = "127.0.0.1"
UDP_PORT = 3333
MESSAGE = "Hello, World!"
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
sock.sendto(bytes(MESSAGE, "utf-8"), (UDP_IP, UDP_PORT))
time.sleep(.100)
Так же, как сказано в документации udp / fread, он обрабатывает ввод как uint8
и возвращает удвоенные значения. Однако, в отличие от документации fread для чтения из файлов , версия UDP, похоже, не понимает синтаксис *
или =>
для указания типов вывода.
btw: I Я использую R2017b, может быть, это также имеет значение.