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

Количество значений, чтобы читать.

Точность

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

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 не включен как выходной аргумент, и операция чтения не была успешна, то предупреждающее сообщение возвращено в командную строку.

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

Примечание

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

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

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

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

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

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

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

  • Строка EOI утверждается (только GPIB и инструменты VXI).

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

Больше о GPIB и Терминаторе VXI

Значение свойства 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-битная плавающая точка

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