fread

Считайте двоичные данные из инструмента

Синтаксис

A = fread(obj)
A = fread(obj,size)
A = fread(obj,size,'precision')
[A,count] = fread(...)
[A,count,msg] = fread(...)
[A,count,msg,datagramaddress] = fread(obj,...)
[A,count,msg,datagramaddress,datagramport] = fread(obj,...)

Аргументы

obj

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

size

Количество считываемых значений.

'precision'

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

A

Двоичные данные, возвращенные с прибора.

count

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

msg

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

datagramaddress

Адрес отправителя дейтаграммы.

datagramport

Порт отправителя датаграммы.

Описание

A = fread(obj) и A = fread(obj,size) считайте двоичные данные из прибора, подключенного к obj, и возвращает данные в A. Максимальное количество значений для чтения определяется size. Если size не задан, максимальное количество считываемых значений определяется InputBufferSize объекта свойство. Допустимые опции для size являются:

n

Читать самое большее n значения в вектор-столбец.

[m,n]

Считайте самое большее значения m на n, заполняя матрицу m на n в порядке столбца.

size невозможно infи возвращается ошибка, если указанное количество значений не может быть сохранено в вход буфере. Вы задаете размер, в байтах, входе буфера с InputBufferSize свойство. Значение определяется как байт, умноженный на precision (см. ниже).

Если obj является объектом UDP и DatagramTerminateMode является off, а size значение учитывается. Если size меньше длины дейтаграммы, только size считываются значения. Если size больше длины дейтаграммы, выдается предупреждение о том, что полная дейтаграмма была считана раньше size были достигнуты значения.

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

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

[A,count] = fread(...) возвращает количество значений, считанных в count.

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

[A,count,msg,datagramaddress] = fread(obj,...) возвращает адрес дейтаграммы в datagramaddress если obj является объектом UDP. Если считано более одной дейтаграммы, datagramaddress является.

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

Совет

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

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

The ValuesReceived значение свойства увеличивается на количество считанных значений каждый раз fread выдается.

Примечание

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

Правила завершения операции двоичного чтения

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

  • Считалось указанное количество значений. Для объектов UDP, DatagramTerminateMode должен быть off.

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

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

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

  • Задана линия EOI (только приборы GPIB и VXI).

  • The EOSCharCode получен (только инструменты GPIB и VXI).

Подробнее о GPIB и VXI Terminator

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

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

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

Поддерживаемые значения для 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-битная плавающая точка

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

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

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

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

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

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

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

См. также

Функции

Свойства

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