fprintf

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

Синтаксис

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

Аргументы

obj

Объект интерфейса.

'cmd'

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

'format'

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

'mode'

Определяет, записываются ли данные синхронно или асинхронно.

Описание

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

fprintf(obj,'format','cmd') записывает строку в формате, заданном format.

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

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

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

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

Примечание

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

Примечание

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

Операции синхронной и асинхронной записи

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

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

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

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

Операции синхронной и асинхронной записи обсуждаются более подробно в операциях синхронной и асинхронной записи.

Правила завершения операции записи с помощью fprintf

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

  • Указанные данные записываются.

  • Время, заданное как Timeout проходит свойство.

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

Для последовательного порта, TCPIP, UDP и VISA-последовательных объектов все вхождения \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, линия End Or Identify (EOI) устанавливается при выписывании терминатора строки.

Примечание

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

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

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

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

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

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

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

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

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