fprintf

Запишите текст в инструмент

Синтаксис

fprintf(obj,'cmd')
fprintf(obj,'format','cmd')
fprintf(obj,'cmd','mode')
fprintf(obj,'format','cmd','mode')

Аргументы

obj

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

'cmd'

Строка записана в инструмент.

формат

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

режим

Задает, записаны ли данные синхронно или асинхронно.

Описание

fprintf(obj,'cmd') пишет строка cmd в инструмент, соединенный с obj. Форматом по умолчанию является %s\n. Операция записи синхронна и блокирует командную строку, пока выполнение не завершено.

fprintf(obj,'format','cmd') пишет строка с помощью формата, заданного format.

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

fprintf(obj,'cmd','mode') пишет строка с доступом из коммандной строки, заданным mode. Если mode является sync, cmd записан синхронно, и командная строка блокируется. Если mode является async, cmd записан асинхронно, и командная строка не блокируется. Если mode не задан, операция записи синхронна.

fprintf(obj,'format','cmd','mode') пишет строка с помощью заданного формата. Если mode является sync, cmd записан синхронно. Если mode является async, cmd записан асинхронно.

Примеры

Создайте объект последовательного порта s, соедините s на машине Windows® к осциллографу Tektronix® TDS 210 и запишите команду RS232? с функцией fprintf. RS232? дает осциллографу команду возвращать коммуникационные настройки последовательного порта.

s = serial('COM1');
fopen(s)
fprintf(s,'RS232?')
settings = fscanf(s)
settings =
9600;1;0;NONE;LF

Поскольку форматом по умолчанию для fprintf является %s\n, терминатор строки, заданный свойством Terminator, был автоматически записан. Однако в некоторых случаях вы можете хотеть подавить запись терминатора строки. Для этого необходимо явным образом задать формат для данных, которые не включают терминатор строки или конфигурируют терминатор строки, чтобы опустеть.

fprintf(s,'%s','RS232?')

Советы

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

Значение свойства ValuesSent увеличено количеством значений, записанных каждый раз, когда fprintf выпущен.

Ошибка происходит, если буфер вывода не может содержать все данные, которые будут записаны. Можно задать размер буфера вывода со свойством OutputBufferSize.

Функция fprintf возвратит сообщение об ошибке, если вы установите свойство flowcontrol на hardware на последовательном объекте, и аппаратная связь не обнаруживается. Это происходит, если устройство не соединяется, или подключенное устройство не утверждает, что это готово получить данные. Проверяйте вас состояние удаленного устройства и настройки управления потоками, чтобы видеть, вызывает ли аппаратное управление потоками ошибки в MATLAB®.

Примечание

Если вы хотите проверять, чтобы видеть, утверждает ли устройство, что это готово получить данные, установите FlowControl на none. Если вы соединяете с проверкой устройства структуру PinStatus для ClearToSend. Если ClearToSend является off, на стороне удаленного устройства существует проблема. Если ClearToSend является on, существует оборудование, устройство FlowControl подготовилось получать данные, и можно выполнить fprintf.

Примечание

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

Синхронный по сравнению с асинхронными операциями записи

По умолчанию текст записан в инструмент синхронно, и командная строка блокируется, пока операция не завершается. Можно выполнить асинхронную запись путем конфигурирования входного параметра mode, чтобы быть async. Для асинхронных записей,

  • Значение свойства BytesToOutput постоянно обновляется, чтобы отразить количество байтов в буфере вывода.

  • Функция обратного вызова, заданная для свойства OutputEmptyFcn, выполняется, когда буфер вывода пуст.

Можно определить, происходит ли асинхронная операция записи со свойством TransferStatus.

Синхронные и асинхронные операции записи обсуждены более подробно в Синхронном По сравнению с Асинхронными Операциями записи.

Правила для Завершения Операции записи с fprintf

Операция записи с помощью fprintf завершается когда

  • Заданные данные записаны.

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

Правила для записи Терминатора

Для последовательного порта, TCPIP, UDP и последовательных ВИЗОЙ объектов, все случаи \n в cmd заменяются значением свойства Terminator. Поэтому при использовании формата по умолчанию %s\n, все команды, записанные в инструмент, закончатся этим значением свойства.

Для GPIB, VISA-GPIB, VISA-VXI и объектов VISA-GPIB-VXI, все случаи \n в cmd заменяются значением свойства EOSCharCode, если свойство EOSMode установлено в write или read&write. Например, если EOSMode установлен в write, и EOSCharCode установлен в LF, то все случаи \n заменяются символом перевода строки. Кроме того, для объектов GPIB, строка Конца или идентифицирует (EOI) утверждается, когда терминатор строки выписан.

Примечание

Терминатор строки, требуемый вашим инструментом, будет описан в его документации.

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