matlab 数据流,写入和读取数据 - MATLAB & Simulink - MathWorks 中国

本文介绍了如何在 MATLAB 中使用 fgetl、fgets 和 fscanf 函数读取和写入文本数据,特别是在处理串行端口设备如示波器时。通过设置 ReadAsyncMode 属性,可以选择同步或异步读取操作,以及如何利用 TransferStatus 属性监控异步操作状态。
摘要由CSDN通过智能技术生成

读取文本数据

您可使用 fgetl、fgets 和 fscanf 函数从设备读取数据,并将数据格式设为文本。

例如,假设您要返回示波器的标识信息。这需要将 *IDN? 命令写入仪器,然后读回该命令的结果。

s = serial('COM1');

fopen(s)

fprintf(s,'*IDN?')

out = fscanf(s)

out =

TEKTRONIX,TDS 210,0,CF:91.1CT FV:v1.16 TDS2CM:CMV:v1.04

默认情况下,fscanf 会使用 %c 格式读取数据,因为许多串行端口设备返回的数据是基于文本的数据。但您也可以指定如 fscanf 参考页中所述的多种其他格式。

要验证从设备读取的值数量 - 包括终止符,请使用 ValuesReceived 属性。

s.ValuesReceived

ans =

56

同步与异步读取操作.您可以使用 ReadAsyncMode 属性指定读取操作为同步还是异步操作。您可以将 ReadAsyncMode 配置为 continuous 或 manual。

如果 ReadAsyncMode 为 continuous(默认值),则串行端口对象会持续查询设备,以确定数据是否可用于读取。如果数据可用,则以异步方式将其存储在输入缓冲区中。要将数据从输入缓冲区传输到 MATLAB,请使用同步(阻断)读取函数之一,例如 fgetl 或 fscanf。如果数据在输入缓冲区中可用,则这些函数会快速返回。

s.ReadAsyncMode = 'continuous';

fprintf(s,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值