Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止MatlabUDP/fread将原始字节数据转换为双字节数据_Matlab_Udp - Fatal编程技术网

如何防止MatlabUDP/fread将原始字节数据转换为双字节数据

如何防止MatlabUDP/fread将原始字节数据转换为双字节数据,matlab,udp,Matlab,Udp,我正在尝试从UDP读取编码的原始数据,并将其传递到自定义MEX文件进行解码。现在,当我使用fread从UDP端口读取数据时,我得到的是双倍。另外,的文档告诉我们 默认情况下,数值以双精度数组返回 但是,它没有告诉我如何防止这种转换,以及如何取而代之地获取原始字节值。我不使用浮点值,必须在我的MEX文件中重新转换,这将导致不必要的开销 编辑: 根据要求,这里有一个小例子 u = udp(); u.LocalPort = 3333; fopen( u ); data = fread( u, 10,

我正在尝试从UDP读取编码的原始数据,并将其传递到自定义MEX文件进行解码。现在,当我使用
fread
从UDP端口读取数据时,我得到的是双倍。另外,的文档告诉我们

默认情况下,数值以双精度数组返回

但是,它没有告诉我如何防止这种转换,以及如何取而代之地获取原始字节值。我不使用浮点值,必须在我的MEX文件中重新转换,这将导致不必要的开销

编辑: 根据要求,这里有一个小例子

u = udp();
u.LocalPort = 3333;
fopen( u );
data = fread( u, 10, 'uint8' );
fclose( u );
假设您通过以下小Python脚本发送:

导入时间
导入套接字
UDP_IP=“127.0.0.1”
UDP_端口=3333
MESSAGE=“你好,世界!”
sock=socket.socket(socket.AF_INET,socket.sock_DGRAM)
尽管如此:
发送到(字节(消息,“utf-8”),(UDP_IP,UDP_端口))
时间。睡眠(.100)
正如udp/fread的文档所述,它将输入视为
uint8
,并返回双倍。然而,与之相反,UDP版本似乎不理解指定输出类型的
*
=>
语法


顺便说一句:我使用的是R2017b,也许这也会有所不同。

您可以使用
的“精度”
输入,用于
fread
():

所以你应该能够使用

A = fread( fid, 2, '*int16' ); % Use correct size instead of 2 depending on your type

我想你的意思是
'*uint8'
,对吗?这也是我尝试过的,但是我得到了一个错误,所以我认为我误解了文档:错误使用udp/fread(第212行)指定的无效精度。有关详细信息,请键入“instrhelp fread”。readFrames(第23行)data=fread(u,u.bytesavable,'*uint8')中的错误无论您想要什么数据类型,我都选择了一个任意示例。。。如果没有答案,很难说出你为什么会出错。如果指定的是
1
而不是
u.BytesAvailable
,该怎么办?如果你强制它是
uint8
,那么它应该只有1个字节。有趣的是,我刚刚意识到,
SIZE
参数似乎被忽略了。相反,无论我指定了什么,它似乎都读取了一个完整的数据报。顺便说一句,您在帖子中链接的文档是指
fread
的文件版本。我说的是,有人能详细解释一下为什么这项议案被否决吗?
A = fread( fid, 2, '*int16' ); % Use correct size instead of 2 depending on your type