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