exponenta event banner

fscanf

Считывание данных из прибора и форматирование в виде текста

Синтаксис

A = fscanf(obj)
A = fscanf(obj,'format')
A = fscanf(obj,'format',size)
[A,count] = fscanf(...)
[A,count,msg] = fscanf(...)
[A,count,msg,datagramaddress] = fscanf(obj,...)
[A,count,msg,datagramaddress,datagramport] = fscanf(obj,...)

Аргументы

obj

Объект интерфейса.

'format'

Спецификация преобразования языка C.

size

Количество считываемых значений.

A

Данные считываются с прибора и форматируются как текст.

count

Число прочитанных значений.

msg

Сообщение, указывающее, не удалась ли операция чтения.

datagramaddress

Адрес отправителя дейтаграмм.

datagramport

Порт отправителя дейтаграмм.

Описание

A = fscanf(obj) считывает данные из прибора, подключенного к objи возвращает его в A. Данные преобразуются в текст с помощью %c формат.

A = fscanf(obj,'format') считывает данные и преобразует их в соответствии с format.

format - спецификация преобразования языка Си. Спецификации преобразования включают % и символы преобразования d, i, o, u, x, X, f, e, E, g, G, c и s. См. sscanf спецификации формата ввода-вывода файла или руководство C для получения дополнительной информации.

A = fscanf(obj,'format',size) считывает количество значений, указанных size. Допустимые параметры для size являются

n

Читать максимум n значения в вектор столбца.

[m,n]

Считывайте максимум значения m-by-n, заполняющие матрицу m-by-n в порядке столбцов.

size не может быть inf, и возвращается ошибка, если указанное количество значений не может быть сохранено во входном буфере. Если size не имеет формы [m,n]и задается преобразование символов, то A возвращается как вектор строки. Вы указываете размер входного буфера в байтах с помощью InputBufferSize собственность. Значение ASCII - один байт.

Если obj является объектом UDP и DatagramTerminateMode является off, size значение учитывается. Если size меньше длины дейтаграммы, только size значения считываются. Если size больше длины дейтаграммы, выдается предупреждение о том, что полная дейтаграмма была прочитана до size достигнуты значения.

[A,count] = fscanf(...) возвращает число значений, считанных с count.

[A,count,msg] = fscanf(...) возвращает предупреждающее сообщение msg если операция чтения не была успешно завершена.

[A,count,msg,datagramaddress] = fscanf(obj,...) возвращает адрес дейтаграммы datagramaddress если obj является объектом UDP. Если считано более одной дейтаграммы, datagramaddress является.

[A,count,msg,datagramaddress,datagramport] = fscanf(obj,...) возвращает порт датаграммы в datagramport если obj является объектом UDP. Если считано более одной дейтаграммы, datagramport является.

Примеры

Создание объекта последовательного порта s на компьютере с ОС Windows ® и подключениеs на осциллограф Tektronix ® TDS 210, который отображает синусоидальную волну.

s = serial('COM1');
fopen(s)

Используйте fprintf для настройки области измерения пикового напряжения синусоидальной волны, возврата типа измерения и возврата пикового напряжения.

fprintf(s,'MEASUREMENT:IMMED:TYPE PK2PK')
fprintf(s,'MEASUREMENT:IMMED:TYPE?')
fprintf(s,'MEASUREMENT:IMMED:VAL?')

Потому что значение по умолчанию для ReadAsyncMode свойство - continuousданные, связанные с двумя командами запроса, автоматически возвращаются во входной буфер.

s.BytesAvailable
ans =
    13

Использовать fscanf для считывания типа измерения. Операция завершится после считывания первого терминатора.

meas = fscanf(s)
meas =
PK2PK

Использовать fscanf считывание пикового напряжения как числа с плавающей запятой и исключение ограничителя.

pk2pk = fscanf(s,'%e',6)
pk2pk =
    2.0200

Разъединить s из области и удалить s из памяти и рабочей области.

fclose(s)
delete(s)
clear s

Совет

Перед считыванием данных из прибора его необходимо подключить к obj с fopen функция. Подключенный объект интерфейса имеет Status значение свойства open. При попытке выполнить операцию чтения во время obj не подключен к прибору.

Если msg не включен в качестве выходного аргумента, и операция чтения не была выполнена, после чего в командную строку возвращается предупреждающее сообщение.

ValuesReceived значение свойства увеличивается на количество считываемых значений, включая признак конца, каждый раз fscanf выдается.

Примечание

Чтобы получить список опций, которые можно использовать для функции, нажмите клавишу Tab после ввода функции в командной строке MATLAB ®. Список расширяется, и можно выполнить прокрутку для выбора свойства или значения. Сведения об использовании этой расширенной функции завершения вкладки см. в разделе Использование функции завершения вкладки для функций.

Правила завершения операции чтения с помощью fscanf

Операция чтения с fscanf блокирует доступ к командной строке MATLAB до

  • Терминатор считывается. Для последовательного порта, TCPIP, UDP и последовательных объектов VISA терминатор задается Terminator собственность. Если Terminator пуст, fscanf завершит выполнение и вернет управление при выполнении другого критерия. Для объектов UDP DatagramTerminateMode должно быть off.

    Для всех других объектов интерфейса терминатор задается EOSCharCode собственность.

  • Время, указанное Timeout проходит свойство.

  • Количество значений, указанных size считывается. Для объектов UDP DatagramTerminateMode должно быть off.

  • Получение дейтаграммы (только для объектов UDP DatagramTerminateMode является on).

  • Входной буфер заполнен.

  • Устанавливается линия EOI (только приборы GPIB и VXI).

Подробнее о терминаторе GPIB и VXI

EOSCharCode значение свойства распознается только тогда, когда EOSMode свойство настроено на read или read&write. Например, если EOSMode настроен на read и EOSCharCode настроен на LF, то один из способов завершения операции считывания заключается в получении символа подачи строки.

Если EOSMode является none или write, то не определен признак конца для операций чтения. В этом случае fscanf завершит выполнение и вернет управление команде при выполнении другого критерия, такого как тайм-аут.

Вопросы совместимости

развернуть все

Не рекомендуется начинать с R2019b

Не рекомендуется начинать с R2020b

Не рекомендуется начинать с R2020b

Не рекомендуется начинать с R2020b

Не рекомендуется начинать с R2021a

Представлен до R2006a