Как описано в разделах «Сигналы последовательных портов» и «Назначение контактов», последовательные порты с девятью контактами включают шесть контактов управления. Функции и свойства, связанные с контактами управления последовательным портом, являются следующими.
| Функция | Цель |
|---|---|
getpinstatus | Получение статуса последовательного контакта. |
setRTS | Укажите состояние контакта RTS. |
setDTR | Укажите состояние контакта DTR. |
| FlowControl | Укажите используемый метод управления потоком данных. |
DTE и DCE часто используют контакты CD, DSR, RI и DTR для указания того, установлено ли соединение между устройствами последовательного порта. После установления соединения можно начать запись или чтение данных.
Вы можете контролировать состояние контактов CD, DSR и RI с помощью getpinstatus функция. Состояние контакта DTR можно указать с помощью setDTR функция.
В следующем примере показано, как эти контакты используются при подключении двух модемов друг к другу.
В этом примере (показанном на компьютере с ОС Windows ®) два модема соединяются друг с другом через один и тот же компьютер и показано, как можно контролировать состояние связи для соединений компьютер-модем и для соединения модем-модем. Первый модем подключен к COM1, а второй - к COM2.
Подключение к приборам - после включения модемов объект последовательного порта s1 создается для первого модема и объекта последовательного порта s2 создается для второго модема. оба модема настроены на скорость 9600 бит в секунду.
s1 = serialport("COM1",9600); s2 = serialport("COM2",9600);
Вы можете убедиться, что модемы (наборы данных) готовы к взаимодействию с компьютером, проверив значение контакта готовности набора данных с помощью getpinstatus функция.
getpinstatus(s)
ans =
struct with fields:
ClearToSend: 1
DataSetReady: 1
CarrierDetect: 0
RingIndicator: 0Значение DataSetReady поле имеет значение 1, или true, потому что оба модема были включены до того, как они были подключены к объектам.
Настроить свойства - оба модема настроены для терминатора возврата каретки (CR) с помощью configureTerminator функция.
configureTerminator(s1,"CR") configureTerminator(s2,"CR")
Запись и чтение данных - запись atd к первому модему с помощью команды writeline функция. Эта команда переводит модем «с крючка» и эквивалентна ручному подъему телефонного приемника.
writeline(s1,'atd')Напишите ata во второй модем с помощью команды writeline функция. Эта команда переводит модем в режим «ответа», что вынуждает его подключаться к первому модему.
writeline(s2,'ata')После согласования соединения между двумя модемами можно проверить состояние соединения, проверив значение контакта обнаружения несущей с помощью getpinstatus функция.
getpinstatus(s)
ans =
struct with fields:
ClearToSend: 1
DataSetReady: 1
CarrierDetect: 1
RingIndicator: 0Также можно проверить соединение модем-модем, прочитав описательное сообщение, возвращенное вторым модемом.
s2.NumBytesAvailable
ans =
25out = read(s2,25,"uint32")out = ata CONNECT 2400/NONE
Теперь разорвите соединение между двумя модемами с помощью setDTR функция. Чтобы убедиться, что модемы отключены, проверьте значение контакта определения несущей с помощью getpinstatus функция.
setDTR(s1,false) getpinstatus(s1)
ans =
struct with fields:
ClearToSend: 1
DataSetReady: 1
CarrierDetect: 0
RingIndicator: 0Отключить и очистить - удаление объектов из рабочей области MATLAB ® по завершении.
clear s1 s2
Управление потоком данных или квитирование - это способ, используемый для связи между DCE и DTE для предотвращения потери данных во время передачи. Например, предположим, что ваш компьютер может получать только ограниченный объем данных, прежде чем он должен быть обработан. По достижении этого предела сигнал квитирования передается в DCE для прекращения передачи данных. Когда компьютер может принимать больше данных, другой сигнал квитирования передается в DCE для возобновления передачи данных.
При поддержке устройства можно управлять потоком данных одним из следующих способов:
Примечание
Хотя вы можете настроить устройство на аппаратное и программное квитирование одновременно, MATLAB не поддерживает это поведение.
Можно указать метод управления потоком данных с помощью FlowControl собственность. Если FlowControl является hardware, то аппаратное квитирование используется для управления потоком данных. Если FlowControl является software, то программное квитирование используется для управления потоком данных. Если FlowControl является none, то рукопожатие не используется.
Аппаратное квитирование использует определенные контакты последовательного порта для управления потоком данных. В большинстве случаев это контакты RTS и CTS. Аппаратное квитирование с использованием этих контактов описано в RTS и CTS Pins.
Если FlowControl является hardwareзатем контакты RTS и CTS автоматически управляются DTE и DCE. Вы можете вернуть значение контакта CTS с помощью getpinstatus функция. Значение контакта RTS можно настроить с помощью setRTS функция.
Примечание
Некоторые устройства также используют контакты DTR и DSR для квитирования. Однако эти контакты обычно используются для указания на то, что система готова к связи, и не используются для управления передачей данных. В MATLAB аппаратное квитирование всегда использует контакты RTS и CTS.
Если устройство не использует аппаратное квитирование стандартным способом, возможно, потребуется вручную настроить контакт RTS с помощью setRTS функция. В этом случае сконфигурируйте FlowControl кому none. Если FlowControl является hardware, то указанное значение RTS может не быть сохранено. Обратитесь к документации по устройству, чтобы определить его поведение.
Для управления потоком данных в программном подтверждении используются специальные символы ASCII. В следующей таблице описаны эти символы, называемые Xon и Xoff (или XON и XOFF).
Символы квитирования программного обеспечения
Характер | Целочисленное значение | Описание |
|---|---|---|
Xon | 17 | Возобновить передачу данных. |
Xoff | 19 | Приостановка передачи данных. |
При использовании программного квитирования управляющие символы передаются по линии передачи так же, как и обычные данные. Поэтому требуются только контакты TD, RD и GND.
Основным недостатком программного квитирования является невозможность записи символов Xon или Xoff во время записи числовых данных в прибор. Это происходит потому, что числовые данные могут содержать 17 или 19, что делает невозможным различение управляющих символов и данных. Однако можно записать Xon или Xoff во время асинхронного считывания данных с прибора, поскольку используются оба контакта TD и RD.
Использование программного квитирования. Предположим, что необходимо использовать управление потоком программного обеспечения совместно с приложением последовательного порта. Для этого необходимо сконфигурировать прибор и объект последовательного порта для управления потоком программного обеспечения. Для объекта последовательного порта s подключенный к осциллографу Tektronix ® TDS 210, эта конфигурация выполняется с помощью следующих команд.
writeline(s,"RS232:SOFTF ON") s.FlowControl = "software";
Для приостановки переноса данных необходимо записать числовое значение. 19 (Xoff) к прибору.
write(s,19,"uint32");Для возобновления переноса данных необходимо записать числовое значение. 17 (Xon) к прибору.
write(s,17,"uint32");