Считайте данные из инструмента и отформатируйте как текст
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,...)
| Интерфейсный объект. |
| Спецификация преобразования языка C. |
| Количество значений, чтобы читать. |
| Данные считаны из инструмента и отформатированы как текст. |
| Количество чтения значений. |
| Сообщение, указывающее, была ли операция чтения неудачна. |
| Адрес дейтаграммного отправителя. |
| Порт дейтаграммного отправителя. |
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
| Читайте в большинстве значений |
| Читайте в большинстве значений 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 блокирует доступ к командной строке MATLAB до
Терминатор строки читается. Для последовательного порта, TCPIP, UDP и последовательных ВИЗОЙ объектов, терминатор строки дан свойством Terminator. Если Terminator будет пуст, fscanf завершит выполнение и возвратит управление, когда другому критерию будут соответствовать. Для объектов UDP DatagramTerminateMode должен быть off.
Для всех других интерфейсных объектов терминатор строки дан свойством EOSCharCode.
Прошло время, заданное как свойство Timeout.
Считалось количество значений, заданных в size. Для объектов UDP DatagramTerminateMode должен быть off.
Дейтаграмма получена (для объектов UDP только, когда DatagramTerminateMode является on).
Входной буфер заполнен.
Строка EOI утверждается (только GPIB и инструменты VXI).
Значение свойства EOSCharCode распознано только, когда свойство EOSMode сконфигурировано к read или read&write. Например, если EOSMode сконфигурирован к read, и EOSCharCode сконфигурирован к LF, то один из способов, которыми останавливается операция чтения, - когда символ перевода строки получен.
Если EOSMode является none или write, то нет никакого терминатора строки, заданного для операций чтения. В этом случае fscanf завершит выполнение и возвратит управление в команду, когда другому критерию, такому как тайм-аут, будут соответствовать.
BytesAvailable | BytesAvailableFcn | EOSCharCode | EOSMode | InputBufferSize | Status | Terminator | Timeout | TransferStatus | fgetl | fgets | fopen | fread | instrhelp | scanstr | sscanf