Main Content

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 的有效选项包括:

n

最多将 n 个值读入到列向量中。

[m,n]

最多读取 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 的支持值。

数据类型

精度

解释

字符

uchar

8 位无符号字符

schar

8 位有符号字符

char

8 位有符号或无符号字符

整数

int8

8 位整数

int16

16 位整数

int32

32 位整数

uint8

8 位无符号整数

uint16

16 位无符号整数

uint32

32 位无符号整数

short

16 位整数

int

32 位整数

long

32 位或 64 位整数

ushort

16 位无符号整数

uint

32 位无符号整数

ulong

32 位或 64 位无符号整数

浮点

single

32 位浮点

float32

32 位浮点

float

32 位浮点

double

64 位浮点

float64

64 位浮点

版本历史记录

在 R2006a 之前推出

全部折叠

R2021a: serial 对象接口将被删除

将删除将此函数用于 serial 对象。要访问串行端口设备,请改为使用 serialport 对象及其函数和属性。

推荐的功能具有额外的能力和改进的性能。有关使用推荐功能的详细信息,请参阅Transition Your Code to serialport Interface

另请参阅

函数