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 位浮点 |