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
未连接到设备时执行读取操作,将会返回错误。
仅使用 readasync
将 ReadAsyncMode
属性配置为 manual
。如果在 ReadAsyncMode
为 continuous
时使用,则忽略 readasync
。
TransferStatus
属性指示是否正在进行异步读取或写入操作。可以在正在进行异步读取操作时写入数据,因为串行端口具有单独的读取和写入 pin。可以通过 stopasync
函数使异步读取和写入操作停止。
可以通过 BytesAvailable
属性监控存储在输入缓冲区中的数据量。此外,您还可以使用 BytesAvailableFcn
属性在读取终止符或指定量的数据时执行回调函数。
完成异步读取操作的规则
满足以下条件之一时即表示完成通过 readasync
执行的异步读取操作:
已读取
Terminator
属性指定的终止符。Timeout
属性指定的时间已过。已读取指定数量的字节。
输入缓冲区已填充(如果未指定
size
)。
由于 readasync
会检查终止符,因此函数执行速度可能较慢。要加快速度,您可能希望将 ReadAsyncMode
配置为 continuous
,并在从设备中获取数据后立即将数据连续返回到输入缓冲区。