fread (serial)
(将删除)从设备中读取二进制数据
此 serial
对象函数将在以后的版本中删除。请改用 serialport
对象函数。有关更新代码的详细信息,请参阅兼容性考虑。
语法
A = fread(obj)
A = fread(obj,size
,'precision
')
[A,count] = fread(...)
[A,count,msg] = fread(...)
说明
A = fread(obj)
和 A = fread(obj,size)
从与串行端口对象 obj
相连接的设备中读取二进制数据,并将数据返回到 A
。要读取的值的最大数目由 size
指定。如果未指定 size
,要读取的值的最大数目由对象的 InputBufferSize
属性确定。size
的有效选项包括:
| 最多将 |
| 最多读取 m×n 个值并按列顺序填充 m×n 矩阵。 |
size
不能是 inf
,如果指定数目的值无法存储于输入缓冲区中,则会返回错误。使用 InputBufferSize
属性指定输入缓冲区的大小(以字节为单位)。值定义为与 precision
相乘所得的字节(如下所示)。
A = fread(obj,
按照 size
,'precision
')precision
指定的精度读取二进制数据。
precision
控制为每个值读取的位数以及如何将这些位解释为整数、浮点数或字符值。如果未指定 precision
,则使用 uchar
(8 位无符号字符)。默认情况下,将以双精度数组形式返回数值。下面的提示中列出了 precision
的支持值。
[A,count] = fread(...)
返回读取到 count
的值的数目。
如果读取操作失败,[A,count,msg] = fread(...)
会将一条警告消息返回到 msg
。
提示
必须使用 fopen
函数将设备连接到 obj
,才能从设备中读取数据。已连接的串行端口对象的 open
属性值为 Status
。如果尝试在 obj
未连接到设备时执行读取操作,将会返回错误。
如果不包含用作输出参量的 msg
并且读取操作失败,则会向命令行返回一条警告消息。
每次发出 fread
命令时,ValuesReceived
属性值将增加所读取的值的数目。
完成二进制读取操作的规则
使用 fread
进行的读取操作会屏蔽对 MATLAB® 命令行的访问,直至出现以下情况为止:
已读取指定数目的值。
Timeout
属性指定的时间已过。注意
未对二进制读取操作使用
Terminator
属性。
支持的精度
下面列出了 precision
的支持值。
数据类型 | 精度 | 解释 |
---|---|---|
字符 |
| 8 位无符号字符 |
| 8 位有符号字符 | |
| 8 位有符号或无符号字符 | |
整数 |
| 8 位整数 |
| 16 位整数 | |
| 32 位整数 | |
| 8 位无符号整数 | |
| 16 位无符号整数 | |
| 32 位无符号整数 | |
| 16 位整数 | |
| 32 位整数 | |
| 32 位或 64 位整数 | |
| 16 位无符号整数 | |
| 32 位无符号整数 | |
| 32 位或 64 位无符号整数 | |
浮点 |
| 32 位浮点 |
| 32 位浮点 | |
| 32 位浮点 | |
| 64 位浮点 | |
| 64 位浮点 |