(последовательный) fwrite

Запишите двоичные данные в устройство

Синтаксис

fwrite(obj,A)
fwrite(obj,A,'precision')
fwrite(obj,A,'mode')
fwrite(obj,A,'precision','mode')

Описание

fwrite(obj,A) пишут двоичные данные A в устройство, соединенное к объекту последовательного порта, obj.

fwrite(obj,A,'precision') двоичные данные записей с точностью, заданной precision.

precision управляет количеством битов, записанных для каждого значения и интерпретации тех битов как целое число, или символьные значения с плавающей точкой. Если precision не задан, uchar (8-битный символ без знака) используется. Поддерживаемые значения для precision перечислены в Советах.

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

fwrite(obj,A,'precision','mode') двоичные данные записей с точностью, заданной precision и доступом из коммандной строки, заданы mode.

Советы

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

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

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

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

Примечание

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

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

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

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

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

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

Синхронные и асинхронные операции записи обсуждены более подробно в Записи и чтении данных.

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

Бинарная операция записи с помощью fwrite завершается когда:

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

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

    Примечание

    Свойство Terminator не используется с бинарными операциями записи.

Поддерживаемая точность

Следующая таблица показывает поддерживаемые значения для precision.

Тип данных

Точность

Интерпретация

Символ

uchar

8-битный символ без знака

schar

8-битный символ со знаком

char

8-битный символ без знака или со знаком

Целое число

int8

8-битное целое число

int16

16-битное целое число

int32

32-битное целое число

uint8

8-битное беззнаковое целое

uint16

16-битное беззнаковое целое

uint32

32-битное беззнаковое целое

short

16-битное целое число

int

32-битное целое число

long

32-или 64-битное целое число

ushort

16-битное беззнаковое целое

uint

32-битное беззнаковое целое

ulong

32-или 64-битное беззнаковое целое

С плавающей точкой

single

32-битная плавающая точка

float32

32-битная плавающая точка

float

32-битная плавающая точка

double

64-битная плавающая точка

float64

64-битная плавающая точка

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