fscanf

(Чтобы быть удаленным) Считанные данные из инструмента и отформатировать как текст

Этот serial, Bluetooth, tcpip, udp, visa, и gpib объектная функция будет удалена в будущем релизе. Использование serialport, bluetooth, tcpclient, tcpserver, udpport, и visadev возразите функциям вместо этого. Для получения дополнительной информации см. Вопросы совместимости.

Синтаксис

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, 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 на 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 на 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® командная строка. Список расширяется, и можно прокрутить, чтобы выбрать свойство или значение. Для получения информации об использовании этой функции завершения вкладки "Дополнительно" смотрите Используя Заполнение клавишей Tab для Функций.

Правила для Завершения Операции чтения с fscanf

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

  • Терминатор строки читается. Для последовательного порта, TCPIP, UDP и последовательных ВИЗОЙ объектов, терминатор строки дан 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

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

Смотрите также

Функции

Свойства

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