Main Content

readasync

(将删除)从设备中异步读取数据

serial 对象函数将在以后的版本中删除。请改用 serialport 对象函数。有关更新代码的详细信息,请参阅兼容性考虑

语法

readasync(obj)
readasync(obj,size)

说明

readasync(obj) 在串行端口对象 obj 上启动异步读取操作。

readasync(obj,size) 最多异步读取 size 指定的字节数。如果 size 大于 InputBufferSize 属性值与 BytesAvailable 属性值的差,则返回错误。

示例

本示例在 Windows® 平台上创建串行端口对象 s。它将 s 连接到 Tektronix® TDS 210 示波器,配置 s 以便仅在发出 readasync 时异步读取数据,并配置工具以返回通道 1 中的信号峰间值。

s = serial('COM1');
fopen(s)
s.ReadAsyncMode = 'manual';
fprintf(s,'Measurement:Meas1:Source CH1')
fprintf(s,'Measurement:Meas1:Type Pk2Pk')
fprintf(s,'Measurement:Meas1:Value?')

首先使用 readasync 从工具中异步读取数据。完成读取操作时,使用 fscanf 将数据返回到 MATLAB® 工作区。

readasync(s)
s.BytesAvailable
ans =
     15
out = fscanf(s)
out =
    2.0399999619E0
fclose(s)

提示

在您可以读取数据之前,必须通过 fopen 函数将 obj 连接到设备。已连接的串行端口对象的 open 属性值为 Status。如果尝试在 obj 未连接到设备时执行读取操作,将会返回错误。

仅使用 readasyncReadAsyncMode 属性配置为 manual。如果在 ReadAsyncModecontinuous 时使用,则忽略 readasync

TransferStatus 属性指示是否正在进行异步读取或写入操作。可以在正在进行异步读取操作时写入数据,因为串行端口具有单独的读取和写入 pin。可以通过 stopasync 函数使异步读取和写入操作停止。

可以通过 BytesAvailable 属性监控存储在输入缓冲区中的数据量。此外,您还可以使用 BytesAvailableFcn 属性在读取终止符或指定量的数据时执行回调函数。

完成异步读取操作的规则

满足以下条件之一时即表示完成通过 readasync 执行的异步读取操作:

  • 已读取 Terminator 属性指定的终止符。

  • Timeout 属性指定的时间已过。

  • 已读取指定数量的字节。

  • 输入缓冲区已填充(如果未指定 size)。

由于 readasync 会检查终止符,因此函数执行速度可能较慢。要加快速度,您可能希望将 ReadAsyncMode 配置为 continuous,并在从设备中获取数据后立即将数据连续返回到输入缓冲区。

版本历史记录

在 R2006a 之前推出

全部折叠

R2021a: serial 对象接口将被删除

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

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

另请参阅

函数