读取文本数据
您可使用 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,