fgets

Прочитайте строку текста от инструмента и включайте терминатор строки

Синтаксис

tline = fgets(obj)
[tline,count] = fgets(obj)
[tline,count,msg] = fgets(obj)
[tline,count,msg,datagramaddress,datagramport] = fgets(obj)

Аргументы

obj

Интерфейсный объект.

tline

Текст считан из инструмента, включая терминатор строки.

count

Количество чтения значений.

msg

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

datagramaddress

Дейтаграммный адрес.

datagramport

Дейтаграммный порт.

Описание

tline = fgets(obj) читает одну строку текста от инструмента, соединенного с obj, и возвращает данные в tline. Возвращенные данные включают терминатор строки с текстовой строкой. Чтобы исключить терминатор строки, используйте fgetl.

[tline,count] = fgets(obj) возвращает количество чтения значений к count.

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

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

Примеры

Создайте объект GPIB g, соедините g с осциллографом Tektronix® TDS 210, сконфигурируйте g, чтобы завершить операции чтения, когда Конец символа строки читается, и запишите команду *IDN? с функцией fprintf. *IDN? дает осциллографу команду возвращать идентификационную информацию.

g = gpib('ni',0,1);
fopen(g)
g.EOSMode = 'read';
fprintf(g,'*IDN?')

Асинхронно считайте идентификационную информацию из инструмента.

readasync(g)
g.BytesAvailable
ans =
    56

Используйте fgets, чтобы передать данные от входного буфера до рабочей области MATLAB® и включать терминатор строки.

idn = fgets(g)
idn =
TEKTRONIX,TDS 210,0,CF:91.1CT FV:v1.16 TDS2CM:CMV:v1.04
length(idn)
ans =
    56

Отключите g от осциллографа и удалите g из памяти и рабочей области.

fclose(g)
delete(g)
clear g

Советы

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

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

Значение свойства ValuesReceived увеличено количеством чтения значений — включая терминатор строки — каждый раз, когда fgets выпущен.

Примечание

Вы не можете использовать значения ASCII, больше, чем 127 символов. Функция ограничивается 127 бинарными символами.

Примечание

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

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

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

  • Терминатор строки читается. Для последовательного порта, TCPIP, UDP и последовательных ВИЗОЙ объектов, терминатор строки дан свойством Terminator. Обратите внимание на то, что для объектов UDP, DatagramTerminateMode должен быть off.

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

  • Строка EOI утверждается (только GPIB и инструменты VXI).

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

  • Прошло время, заданное как свойство Timeout.

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

Примечание

Вы не можете использовать значения ASCII, больше, чем 127 символов. Функция ограничивается 127 бинарными символами.

Больше о GPIB и Терминаторе VXI

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

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

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