Serial Port Properties

Сконфигурируйте коммуникации последовательного порта

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

Некоторые свойства могут быть установлены во время создания объекта с serial функция. Смотрите serial страница с описанием для получения информации о тех свойствах, которые включают PortBaudRateByteOrderDataBitsЧетностьStopBits, и Terminator.

Считайте и запишите, что свойства используются, чтобы сконфигурировать факторы, вовлеченные в чтение и запись данных, такие как установка тайм-аута для завершения операции. Используйте свойства контакта управления сконфигурировать контакты уровня контроля и управление потоком данных. Используйте свойства записи настроить и управлять информацией о записи к диску.

Примечание

Этот демонстрационный синтаксис для всех свойств принимает, что вы создали последовательный объект, s. Многие свойства могут только быть установлены прежде, чем вызвать fopen на объекте. Некоторые могут быть изменены, в то время как объект открыт.

Свойства могут быть установлены после того, как вы создадите serial объект. Свойство только для чтения называется можно следующим образом:

s = serial('COM1');
s.TransferStatus
ans = 
     idle

Свойство, которое можно сконфигурировать, установлено можно следующим образом:

s = serial('COM1');
s.Timeout = 30;

Считайте и запишите свойства

развернуть все

Количество байтов, доступных во входном буфере, заданном как двойное. Это свойство только для чтения указывает на количество байтов, в настоящее время доступных, чтобы быть считанным из входного буфера. Значение свойства постоянно обновляется, когда входной буфер заполнен, и установлен в 0 после fopen функция выпущена.

Можно использовать BytesAvailable только при чтении данных асинхронно. Это вызвано тем, что при чтении данных синхронно, управление возвращено в командную строку MATLAB® только после того, как входной буфер будет пуст. Поэтому BytesAvailable значение всегда 0.

BytesAvailable значение может лежать в диапазоне от нуля до размера входного буфера. Используйте InputBufferSize свойство задать размер входного буфера. Используйте ValuesReceived свойство возвратить общее количество чтения значений.

Пример: s.BytesAvailable

Типы данных: double

Размер входного буфера в байтах, заданных как двойное. Вы конфигурируете InputBufferSize как общее количество байтов, которые могут храниться во входном буфере во время операции чтения.

Операция чтения отключена, если объем данных, сохраненный во входном буфере, равняется InputBufferSize значение. Можно считать текстовые данные с fgetl, fget, или fscanf функции. Можно считать двоичные данные с fread функция.

Можно сконфигурировать InputBufferSize только, когда объект последовательного порта отключается от устройства. Можно сконфигурировать его прежде, чем вызвать fopen функция. Вы отключаете объект с fclose функция. Разъединенный объект имеет Status значение свойства closed.

Если вы конфигурируете InputBufferSize в то время как существуют данные во входном буфере, те данные очищены.

Пример: s.InputBufferSize = 768;

Типы данных: double

Задайте, является ли асинхронная операция чтения непрерывной или ручной, задана как manual или continuous. Если ReadAsyncMode continuous, объект последовательного порта постоянно запрашивает устройство, чтобы определить, доступны ли данные, чтобы быть считанными. Если данные доступны, они автоматически читаются и хранятся во входном буфере. Если выпущено, readasync функция проигнорирована.

Если ReadAsyncMode manual, объект не запрашивает устройство, чтобы определить, доступны ли данные, чтобы быть считанными. Вместо этого необходимо вручную выпустить readasync функция, чтобы выполнить асинхронную операцию чтения. Поскольку readasync проверки на терминатор строки, эта функция может быть медленной. Чтобы увеличить скорость, сконфигурируйте ReadAsyncMode к continuous.

Примечание

Если устройство будет готово передать данные, оно сделает так независимо от ReadAsyncMode значение. Поэтому, если ReadAsyncMode manual и операция чтения не происходит, данные могут быть потеряны. Чтобы гарантировать, что все передаваемые данные хранятся во входном буфере, необходимо сконфигурировать ReadAsyncMode к continuous.

Чтобы определить объем данных, доступный во входном буфере, используйте BytesAvailable свойство. Для любого ReadAsyncMode значение, можно принести данные в рабочее пространство MATLAB с одной из синхронных функций чтения, таких как fscanffgetlfgets, или fread.

Пример: s.ReadAsyncMode = 'manual';

Типы данных: char | string

Время ожидания, чтобы завершить операцию чтения или операцию записи, заданную как двойное. Вы конфигурируете Timeout быть максимальным временем (в секундах), чтобы ожидать, чтобы завершить операцию чтения или операцию записи. Значение по умолчанию 10 секунды используются, если вы не задаете различное значение. Тайм-ауты округлены вверх к целым секундам.

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

  • Ошибочное событие сгенерировано.

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

Пример: s.Timeout = 30;

Типы данных: double

Состояние асинхронной операции чтения или операции записи, заданной как idleчтениезапись, или read&write. Это свойство только для чтения указывает, происходят ли асинхронная операция чтения или операция записи. Если TransferStatus idle, никакие асинхронные операции чтения или операции записи не происходят. Если это - read, асинхронная операция чтения происходит. Если это - write, асинхронная операция записи происходит. Если TransferStatus read&write, и асинхронное чтение и асинхронная операция записи происходят.

Можно записать данные асинхронно с помощью fprintf или fwrite функции. Можно считать данные асинхронно с помощью readasync функция, или путем конфигурирования ReadAsyncMode свойство к continuous. В то время как readasync выполняется, TransferStatus может указать, что данные считываются даже при том, что данные не заполняют входной буфер. Если ReadAsyncMode continuousTransferStatus указывает, что данные только для чтения, когда данные заполняют входной буфер.

Можно выполнить асинхронное чтение и асинхронную операцию записи одновременно, потому что последовательные порты имеют отдельное чтение и контакты записи.

Сводные данные возможные значения:

{idle}

Никакие асинхронные операции не происходят.

read

Асинхронная операция чтения происходит.

write

Асинхронная операция записи происходит.

read&write

Асинхронные операции чтения и операции записи происходят.

Пример: s.TransferStatus

Типы данных: char | string

Общее количество значений считано из устройства, заданного как двойное. Это - свойство только для чтения, и значение обновляется после каждой успешной операции чтения и устанавливается к 0 после fopen функция выпущена. Если терминатор строки читается из устройства, то это значение отражается ValuesReceived.

Если вы считываете данные асинхронно, используйте BytesAvailable свойство возвратить количество байтов, в настоящее время доступных во входном буфере.

При выполнении операции чтения полученные данные представлены значениями, а не байтами. Значение состоит из одного или нескольких байтов. Например, один uint32 значение состоит из четырех байтов.

Например, создайте объект последовательного порта, сопоставленный с последовательным портом COM1, и откройте связь.

s = serial('COM1');
fopen(s)

Если вы пишете RS232? команда, и считала назад ответ с помощью fscanfValuesReceived 17 потому что инструмент сконфигурирован, чтобы отправить LF терминатор.

fprintf(s,'RS232?')
out = fscanf(s)
out =
9600;0;0;NONE;LF
s.ValuesReceived
ans =
    17

Пример: s.ValuesReceived

Типы данных: double

Количество байтов в настоящее время в буфере вывода, заданном как двойное. Это свойство только для чтения указывает на количество байтов в настоящее время в буфере вывода, ожидающем, чтобы быть записанным в устройство. Значение свойства постоянно обновляется, когда буфер вывода заполнен и опорожнен и установлен в 0 после fopen функция выпущена.

Можно использовать BytesToOutput только при записывании данные асинхронно. Это вызвано тем, что при записывании данные синхронно, управление возвращено в командную строку MATLAB только после того, как буфер вывода будет пуст. Поэтому BytesToOutput значением всегда является 0.

Используйте ValuesSent свойство возвратить общее количество значений, записанных в устройство.

Примечание

При попытке выписать больше данных, чем может поместиться в буфер вывода, ошибка возвращена и BytesToOutput 0. Задайте размер буфера вывода с OutputBufferSize свойство.

Пример: s.BytesToOutput

Типы данных: double

Размер буфера вывода в байтах, заданных как двойное. Вы конфигурируете OutputBufferSize как общее количество байтов, которые могут храниться в буфере вывода во время операции записи.

Можно сконфигурировать OutputBufferSize только, когда объект последовательного порта отключается от устройства. Можно сконфигурировать его прежде, чем вызвать fopen функция. Вы отключаете объект с fclose функция. Разъединенный объект имеет Status значение свойства closed.

Ошибка происходит, если буфер вывода не может содержать все данные, которые будут записаны. Вы пишете текстовые данные с fprintf функция. Вы пишете двоичные данные с fwrite функция.

Пример: s.OutputBufferSize = 256;

Типы данных: double

Общее количество значений записано в устройство, заданное как двойное. Это - свойство только для чтения, и значение обновляется после каждой успешной операции записи и устанавливается к 0 после fopen функция выпущена. Если вы пишете терминатор строки, ValuesSent отражает это значение.

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

При выполнении операции записи передаваемые данные представлены значениями, а не байтами. Значение состоит из одного или нескольких байтов. Например, один uint32 значение состоит из четырех байтов.

Например, создайте объект последовательного порта, сопоставленный с последовательным портом COM1, и откройте связь.

s = serial('COM1');
fopen(s)

Если вы пишете *IDN? команда с помощью fprintf функция, ValuesSent 6 потому что форматом данных по умолчанию является %s\n, и терминатор строки был записан.

fprintf(s,'*IDN?')
s.ValuesSent
ans =
    6

Пример: s.ValuesSent

Типы данных: double

Состояние подключения устройства последовательного порта, возвращенного как closed или open. Это свойство только для чтения указывает, соединяется ли объект последовательного порта с устройством. Если Status closed, объект последовательного порта не соединяется с устройством. Если Status open, объект последовательного порта соединяется с устройством.

Прежде чем можно будет записать или считать данные, необходимо соединить объект последовательного порта с устройством с fopen функция. Используйте fclose функционируйте, чтобы отключить объект последовательного порта от устройства.

Пример: s.Status

Типы данных: char | string

Управляйте свойствами контакта

развернуть все

Состояние контакта DTR, заданного как on или off. Если DataTerminalReady on, контакт Data Terminal Ready (DTR) утверждается. Если DataTerminalReady off, контакт DTR не утверждается.

В нормальном использовании DTR и контакты Data Set Ready (DSR) работают совместно и используются, чтобы сигнализировать, соединяются ли устройства и приводятся в действие. Однако нет ничего в стандарте RS-232, который утверждает, что контакт DTR должен использоваться в любом особенном методе. Например, DTR и DSR могут использоваться в квитировании. Необходимо обратиться к документации устройства, чтобы определить ее определенное поведение контакта.

Можно возвратить значение контакта DSR с PinStatus свойство.

Пример: s.DataTerminalReady = 'off';

Типы данных: char | string

Метод управления потока данных, заданный как none, hardware, или software. Если FlowControl none, управление потоком данных (квитирование) не используется. Если FlowControl hardware, аппаратное квитирование используется, чтобы управлять потоком данных. Если FlowControl software, программное квитирование используется, чтобы управлять потоком данных.

Оборудование, квитирующее обычно, использует Request To Send (RTS) и контакты Clear to Send (CTS), чтобы управлять потоком данных. Программное квитирование использует управляющие символы (Xon и Xoff), чтобы управлять потоком данных.

Можно возвратить значение контакта CTS с PinStatus свойство. Можно задать значение контакта RTS с RequestToSend свойство. Однако, если FlowControl hardware, и вы задаете значение для RequestToSend, то значение не может соблюдаться.

Примечание

Несмотря на то, что вы можете смочь сконфигурировать свое устройство и для аппаратного квитирования и для программного квитирования одновременно, MATLAB не поддерживает это поведение.

Пример: s.FlowControl = 'hardware';

Типы данных: char | string

Состояние CD, CTS, DSR, и контактов RI, возвратилось как структура. Это свойство только для чтения возвращает массив структур, который содержит поля CarrierDetect, ClearToSend, DataSetReady и RingIndicator. Эти поля указывают на состояние обнаружения несущей (CD), Clear to Send (CTS), Data Set Ready (DSR) и контактов Ring Indicator (RI), соответственно.

PinStatus может быть on или off для любого из этих полей. Значение on указывает, что связанный контакт утверждается. Значение off указывает, что связанный контакт не утверждается. Событие изменения состояния контакта происходит, когда любой из этих контактов изменяет его состояние. Событие изменения состояния контакта выполняется, вызов назад функционируют заданные PinStatusFcn.

В нормальном использовании работают совместно Data Terminal Ready (DTR) и контакты DSR, в то время как Request To Send (RTS) и контакты CTS работают совместно. Можно задать состояние контакта DTR с DataTerminalReady свойство. Можно задать состояние контакта RTS с RequestToSend свойство.

Пример: s.PinStatus

Типы данных: struct

Состояние контакта RTS, заданного как on или off. Если RequestToSend on, контакт Request To Send (RTS) утверждается. Если RequestToSend off, контакт RTS не утверждается.

В нормальном использовании RTS и контакты Clear to Send (CTS) работают совместно и используются в качестве стандартных контактов квитирования для передачи данных. В этом случае RTS и CTS автоматически управляемы DTE и DCE. Однако нет ничего в стандарте RS-232, который требует, чтобы контакт RTS использовался в любом особенном методе. Поэтому, если вы вручную конфигурируете RequestToSend значение, это, вероятно, для нестандартных операций.

Если ваше устройство не использует аппаратное квитирование стандартным способом, и необходимо вручную сконфигурировать RequestToSend, сконфигурируйте FlowControl свойство к none. В противном случае, RequestToSend значение, которое вы задаете, не может соблюдаться. Обратитесь к своей документации устройства, чтобы определить ее определенное поведение контакта.

Можно возвратить значение контакта CTS с PinStatus свойство.

Пример: s.RequestToSend = 'off';

Типы данных: char | string

Recording Properties

развернуть все

Уровень детализации информации, сохраненной в файл записи, заданный как compact или verbose. Если RecordDetail compact, количество значений, записанных в устройство, количество значений, считанных из устройства, типа данных значений и информации о событии, сохранено в файл записи. Если RecordDetail verbose, данные, записанные в устройство и данные, считанные из устройства, также сохранены в файл записи.

Сводные данные возможных значений:

{compact}

Количество значений, записанных в устройство, количество значений, считанных из устройства, типа данных значений и информации о событии, сохранено в файл записи.

verbose

Данные, записанные в устройство и данные, считанные из устройства, также сохранены в файл записи.

Пример: s.RecordDetail = 'verbose';

Типы данных: char | string

Метод для того, чтобы сохранить данные и информацию о событии в файлах записи, заданных как overwriteдобавление, или index. Если RecordMode overwrite, файл записи перезаписывается, каждая запись времени инициируется. Если RecordMode append, данные добавлены к файлу записи, каждая запись времени инициируется. Если RecordMode index, различный файл записи создается, каждая запись времени инициируется, каждый с индексируемым именем файла.

Можно сконфигурировать RecordMode только, когда объект не записывает. Вы отключаете запись с record функция. Объект, который не записывает, имеет RecordStatus значение свойства off.

Вы задаете имя файла записи с RecordName свойство. Индексируемое имя файла следует за предписанным рядом правил.

Сводные данные возможных значений:

{overwrite}

Файл записи перезаписывается.

append

Данные добавлены к существующему файлу записи.

index

Различный файл записи создается, каждый с индексируемым именем файла.

Например, запишите последовательные данные с помощью свойств записи. Создайте объект последовательного порта и откройте связь.

s = serial('COM1');
fopen(s)

Задайте имя файла записи с RecordName свойство, сконфигурируйте RecordMode к index, и инициируйте запись.

s.RecordName = 'MyRecord.txt';
s.RecordMode = 'index';
record(s)

Имя файла записи автоматически обновляется с индексируемым именем файла после того, как запись будет выключена.

record(s,'off')
s.RecordName
ans =
MyRecord01.txt

Отключите s от периферийного устройства удалите s из памяти, и удаляют s от рабочего пространства MATLAB.

fclose(s)
delete(s)
clear s

Пример: s.RecordMode = 'index';

Типы данных: char | string

Имя файла записи, заданного как строка. Можно задать любое значение для RecordName - включая путь к каталогу - если имя файла поддерживается вашей операционной системой.

Именем файла записи по умолчанию является record.txt, который используется, если вы записываете файл данных и не задаете другое имя.

MATLAB поддерживает любое имя файла, поддержанное вашей операционной системой. Можно получить доступ к файлу с помощью type функция. Например, если вы называете файл записи MyRecord.txt, вводить этот файл в командной строке MATLAB, введите:

type('MyRecord.txt')

Можно задать, сохранены ли данные и информация о событии в один дисковый файл или в несколько дисковых файлов с RecordMode свойство. Если RecordMode index, имя файла следует за предписанным рядом правил.

Можно сконфигурировать RecordName только, когда объект не записывает. Вы отключаете запись с record функция. Объект, который не записывает, имеет RecordStatus значение свойства off.

Пример: s.RecordName = 'MonthlyDataFile_April';

Типы данных: char | string

Состояние записи последовательных данных и информации о событии, возвращенной как on или off. Это свойство только для чтения указывает, ли включена запись или прочь, которым управляет record функция. Если RecordStatus off, затем данные и информация о событии не сохранены в файл записи. Если RecordStatus on, затем данные и информация о событии сохранены в файл записи, заданный RecordName.

Используйте record функция, чтобы инициировать или завершить запись. RecordStatus автоматически сконфигурирован, чтобы отразить состояние записи.

Пример: s.RecordStatus

Типы данных: char | string

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