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 является спецификацией преобразования языка C. Спецификации преобразования включают в себя % символ и конверсионные символы d, я, 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 на n, заполняя матрицу m на 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 в окнах® машина и соедините 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 не включен в качестве выходного аргумента и операция чтения не была успешной, затем в командную строку возвращается предупреждающее сообщение.

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

Примечание

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

Правила завершения операции Read с 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 Terminator

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

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

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

расширить все

Не рекомендуемый запуск в R2019b

Не рекомендуемый запуск в R2020b

Не рекомендуемый запуск в R2020b

Не рекомендуемый запуск в R2020b

Не рекомендуемый запуск в R2021a

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